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: 56.825 ]

Por: Perfil removido em 23/09/2010


Instalação do software



Primeiro temos que instalar o Analog. Seguem os comandos:

# cd /usr/local/src
# wget
http://www.analog.cx/analog-6.0.tar.gz
# tar xvfz analog-6.0.tar.gz -C /etc
# mv /usr/local/src/analog-6.0 /etc/analog
# cd /usr/src/analog
# make


Depois faça o mesmo com o pacote do Fwanalog:

# cd /usr/local/src
# wget
http://tud.at/programm/fwanalog/fwanalog-0.6.4.tar.gz
# tar xvfz fwanalog-0.6.4.tar.gz -C /etc
# mv /usr/local/src/fwanalog-0.6.4 /etc/fwanalog


Depois de descompactado e compilado os dois pacotes vamos configurá-los.

Dentro do diretório /etc/fwanalog/ existem vários arquivos de configuração. Renomeie o arquivo fwanalog.opts.* (a versão que você usar: linux22, linux24, fbsd, pix etc) para fwanalog.opts. No meu caso uso o kernel 2.6, então como não tinha este script de configuração usei o do linux24 e funcionou perfeitamente.

Dentro do fwanalog.opts, configure alguns parâmetros:

outdir="xxxxxxx" # é para onde vai a saída dos dados analisados
inputfiles_mask="messages*" # o nome do arquivo onde são guardadas as informações
inputfiles_dir="/var/log" # o diretório que fica o arquivo
analog="/etc/analog/analog" # diga onde está o analog que você acabou de compilar.

Agora você já pode executar o binário:

# ./fwanalog.sh

Exemplo do Fwanalog

Considerações finais

Bom, espero que gostem do artigo e do script que desenvolvi e como disse, não deixem de entender o que está sendo feito, pois é a melhor forma de aprendermos. Podem postar melhorias e críticas a respeito do artigo. Obrigado a todos.

Bibliografia

Analizando os logs do IPTables
Muito obrigado ao autor.

Dominando o Linux Firewall Iptables
Muito obrigado ao autor.

Página anterior    

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

Modem HSP 56 MR no Fedora Core 1

Configure seu modem SmartAx MT810 no Ubuntu

Sistemas de arquivos para GNU/Linux

Uso de terminologia imprópria com software livre

Instalando e arredondando o Slackware 13.1

Leitura recomendada

NAT com firewall - simples, rápido e funcional

Criando um Firewall transparente com Bridges no Debian Etch

Fail2ban - Bloqueio de Peer-to-Peer (Ares, uTorrent) e Proxies (UltraSurf e Tor)

Utilizando a ferramenta Iptstate

Uso eficiente do IPCOP firewall

  
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 removido 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 removido 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 removido 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 removido 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 removido 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 removido 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 removido 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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts