Script de firewall e análise de log

Depois de um bom tempo lendo artigos e mais artigos da internet, decidi que iria montar um script de firewall que protegesse minha rede de ataques e outros danos que a internet nos traz. Depois de montado e testado o script, queria entender os logs, foi aí que conheci o Fwanalog e gostaria de dividir com todos minha aventura.

[ Hits: 51.956 ]

Por: Rafael da Silva Rosa em 23/09/2010 | Blog: http://rafaelsuporteonline.blogspot.com.br/


Uma breve introdução



Depois de muito ler e testar consegui montar um script de firewall para minha rede onde ela fica protegida de ataques e danos que a internet pode nos trazer. Script este que foi feito para uma rede com 5 micros e que para o que eu precisava ficou excelente, mas pode ser modificado sem problemas para melhorias.

Bom, script montado testado e funcionando, faltava ver o que acontecia por traz do firewall, ou seja, os logs. Verifiquei diversos sites e artigos, mas o único que me ajudou a entender os logs foi o Fwanalog. Por sinal o conheci devido a leitura de um artigo aqui do VOL que citarei no fim do meu artigo.

Gostaria de compartilhar com todos vocês uma experiência que tive que foi muito interessante, pois eu lia diversos artigos e sites que me ajudaram muito com o firewall, mas eu não entendia muito bem as regras e nunca gostei de fazer uma coisa sem entender como o mesmo acontece, foi aí que encontrei na internet e adquiri um livro com o título de:
Depois da leitura deste livro eu e o iptables nos entendemos perfeitamente e hoje entendo as regras, ações e tudo que acontece com o iptables. A parte mais importante que me fez publicar este artigo é a recomendação da leitura deste livro, pois ele é muito bom e com uma didática clara consigo hoje entender perfeitamente o funcionamento do Iptables.

    Próxima página

Páginas do artigo
   1. Uma breve introdução
   2. O iptables
   3. Entendendo os logs
   4. Instalação do software
Outros artigos deste autor

Configurando um servidor DNS e DHCP na rede

Backuppc - Solução de backup corporativo

Vírus, a mesma praga mas diferentes entre plataformas

Site Survey Plan

Ocomon - Instalação e configuração

Leitura recomendada

Implementando prioridade nos serviços com TOS no Iptables

Revisão atualizada de instalação do Iptables com Layer7

Firewall rápido e seguro com iptables

Firewall e NAT em FreeBSD com controle de banda e redirecionamento de portas e IPs

Configurando firewall básico para compartilhar internet

  
Comentários
[1] Comentário enviado por elton.lima em 23/09/2010 - 07:54h

Camarada tenho grandes dúvidas em relaçao ao redirect do squid no IPTABLES. Me explica quem são esses IPs 192.168.52.4 e 192.168.52.2 e a linha 'iptables -I INPUT -s 200.xxx.xxx.xxx -p tcp --dport 80 -j ACCEPT'

Obrigado ! :)

### Redirecionar acessos para o Squid retirando o ip do servidor
echo Redirecionando rede para Squid e log na porta 80
iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 >'
iptables -I INPUT -s 192.168.52.3 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -s 200.xxx.xxx.xxx -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 DROP>'
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -t nat -A PREROUTING -s 192.168.52.4 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.52.2 -p tcp --dport 80 -j REDIRECT --to-port 3128
echo Redirecionamento .... [ok]

[2] Comentário enviado por rafaelrsr em 23/09/2010 - 08:56h

Bom dia meu camarada. O que acontece ai éo seguinte:
1º esse endereços de ips são da minha rede interna.
2º na minha rede tinha apenas 3 micro para acesso a internet, 2 usuário e um servidor que queria acesso a internet pela porta 80 e os dois usuário pela porta 3128.
3º eu poderia redirecionar minha placa da rede interna exemplo eth1 para a porta 3128, mas ai eu redirecionaria meu servidor também, então o que eu fiz foi:

iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 >'
LOG DA PORTA 80 ACEITO

iptables -I INPUT -s 192.168.52.3 -p tcp --dport 80 -j ACCEPT
LIBEREI ACESSO DO SERVIDOR QUE EU QUERIA NA PORTA 80

iptables -I INPUT -s 200.xxx.xxx.xxx -p tcp --dport 80 -j ACCEPT
LIBEREI ACESSO A PORTA 80 PARA O IP DA MATRIZ (RELATÓRIO SARG E FWANALOG)

iptables -I INPUT -p tcp --dport 80 -j LOG --log-level info --log-prefix 'PORTA 80 DROP>'
LOG DA PORTA 80 RECUSADO

iptables -A INPUT -p tcp --dport 80 -j DROP
FECHEI A PORTA 80 PARA O RESTANTE

iptables -t nat -A PREROUTING -s 192.168.52.4 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.52.2 -p tcp --dport 80 -j REDIRECT --to-port 3128
REDIRECIONEI MEUS 2 USUÁRIOS PARA O SQUID

foi isso que eu fiz. Qualquer posta ae.


[3] Comentário enviado por f360c4 em 23/09/2010 - 11:28h

Infelizmente uma copia do artigo http://www.vivaolinux.com.br/artigo/Analizando-os-logs-do-IPTables?pagina=3 mudando apenas com o script de firewall
e so estou dizendo isso pois faltou informação, se seguir os passos exatamente iguais não funciona.

não me leve a mal, é apenas uma critica para você poder fazer melhor.


abraços velho



[4] Comentário enviado por silent-man em 23/09/2010 - 16:39h

### Libera Msn
echo Liberando Msn
iptables -A OUTPUT -p tcp --sport 1024:5999 --dport 1863:1863 -m state --state NEW -j ACCEPT
echo Msn Liberado ..... [ok]


Quem acessa o MSN é o seu Servidor?

Não entendi esta regra!

:)

[5] Comentário enviado por rafaelrsr em 23/09/2010 - 19:20h

Boa noite camarada f360c4, obrigado pelo post e pela dica mas acho que houve um equivoco. Porque.
No próprio artigo eu descrevo que a importância maior do mesmo é divulgar o livro do Iptables, pela facilidade que encontrei para
entender o iptables após a leitura do mesmo. Depois eu ainda citei e não menos de uma vez o artigo do que está no link que você
postou, e citei também que a importância era o script de firewall.
Realmente eu utilizei o artigo postado por você como referências de estudo para criar o meu. Já a parte em que você diz que se seguir
o meu artigo não funciona por favor posta a dificuldade que te ajudaremos, mas só para lembrar que se eu colocar tudo e você só
copiar e colar ai não terá aprendizado. Não me leva a mal também, é só para efeito de resposta.

Abraços.

[6] Comentário enviado por rafaelrsr em 23/09/2010 - 19:29h

Boa noite silent-man essa regra diz o seguinte:

iptables -A OUTPUT -p tcp --sport 1024:5999 --dport 1863:1863 -m state --state NEW -j ACCEPT

Tudo que sair para fora da rede OUTPUT, que for do protocolo tcp -P TCP com as portas de origem 1024 até 5999
e com as portas de destino 1863 e que for uma conexão com estado NOVO ele aceita -j ACCEPT

Isso que dizer que qualquer pacote da minha rede com essas portas de origem e de destino
ele aceita, mas são pacotes QUE SAEM da minha rede OUTPUT.

Espero ter ajudado. Abraço

[7] Comentário enviado por silent-man em 24/09/2010 - 14:27h

Dr, acho q há um equivoco.

A chain OUTPUT é para tudo que sai da própria máquina. Ou seja, do próprio firewall.

O que passa pela máquina é a chain FORWARD.

[8] Comentário enviado por ribafs em 24/09/2010 - 17:27h

Rafael acho que deveria ter feito o script tendo como base o livro para mostrar com mais enfase que o livro e bom mesmo.

[9] Comentário enviado por rafaelrsr em 24/09/2010 - 17:47h

Boa silent-man, mas para acessar o msn não tenho que sair pelo firewall?
Então com a regra OUTPUT eu não libero a saida por essas portas para fora, ou seja, para a internet? Com isso toda requisição que for feita nas portas de origem e para as portas de destino precisam sair pelo firewall (OUTPUT). O FORWARD seria para o caso de repasse de pacotes para a minha rede. Bom acho que expliquei legal, mas caso não vamos discutir mais rsrs

Abraço a todos.

[10] Comentário enviado por silent-man em 25/09/2010 - 12:08h

Vamos lá.

~# man iptables

filter:
This is the default table (if no -t option is passed). It contains the built-in chains INPUT (for packets destined to local sockets), FORWARD (for packets being routed through the box), and OUTPUT (for locally-generated packets)

Levando em consideração que sua política padrão seja DROP.

As tabelas são as seguintes:

1 - INPUT (para pacotes destinados aos soquetes local) Ou seja, todo pacote que se destina ao FIREWALL. Para você acessar o firewall remotamente via ssh você deve liberar o INPUT na sua porta ssh(padrão 22).

~# iptables -t filter -A INPUT -p tcp -s ip_do_seu_micro -d ip_do_firewall(ip que escuta na porta ssh) --dport 22 -j ACCEPT


2 - FORWARD (para pacotes sendo roteados através da máquina) Ou seja, tudo que vá para uma rede diferente da origem(de quem faz a requisição). Digamos que você tenha duas redes uma LAN 172.16.254.0/24 e uma rede DMZ 10.3.254.0/24(rede dos servidores). Você da sua LAN que chegar no servidor telnet na DMZ, você precisa liberar o FORWARD(tráfego para redes distintas).

~# iptables -t filter -A FORWARD -p tcp -s 172.16.254.24(seu ip) -d 10.3.254.23(servidor telnet) --dport 23 -j ACCEPT


3 - OUTPUT (para pacotes gerados localmente) Ou seja, tudo que é gerado no próprio firewall para fora dele, um ping por exemplo. Se você quer pingar o google você deve liberar o OUTPUT.

~# iptables -t filter -A OUTPUT -p icmp -d www.google.com -j ACCEPT


Veja bem, entenda isso como uma crítica boa construtiva.

[]s

[11] Comentário enviado por rafaelrsr em 25/09/2010 - 14:53h

Olá ribasfs, todo o script que fiz foi desenvolvido nas regras que aprendi com o livro.
Se você puder ler o livro verá que ele não mostra regras e sim ensina como usá-las.
Então resumindo eu criei as regras em cima do que aprendi no livro.
Acho que respondi sua questão.
Abraços.

[12] Comentário enviado por rafaelrsr em 25/09/2010 - 14:58h

Olá silent-man, claro que considero sua critica como construtiva e obrigado por enviá-la e também vi que você usou
o man do iptables para me mostrar como funciona as regras do pitables. Mas eu usei essa e resolveu meu
problema com o msn, então deduzi que a regra funcione como eu expliquei.
Mas obrigado pelo crítica.
Abraço.

[13] Comentário enviado por gabolli em 14/12/2011 - 08:31h

Bom dia, amigo tenho uma duvida vc no caso liberou o Sicoob, esta mesma regra serveria para eu liberar outros progrmas utilizo o M3Client, da mobiltec e um programa que utilizo para fazer captação de pedidos assim os vendedores com os aparelhos de celular envião os pacotes de pedidos para um servidor logo depois eu utilizo esse programa para baixar esse pacote este programa utiliza porta 8090, como eu libero esta porta e tambem como faço para ela passar direto pelo squid. ?

[14] Comentário enviado por rafaelrsr em 10/01/2012 - 22:18h

cara para liberar a porta vc vai usar a regra iptables -a input -8090 -j accept para passar pelo firewall e forward se for repassar para a rede, usa a regra antes de qualquer bloqueio para que vc tenha certeza da liberação e a regra que fiz para o sicob foi para liberar o acesso na porta 80 para minha rede, lembrando que ela tem que ser colocada antes da regra de repasse para a porta 3128 pois o firewall le as regra de cima para baixo como pilha, e respondendo sua pergunta se ela serve para liberar outra aplicação serve sim desde que siga a porta 80. Qualquer estou a disposição.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts