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.
Primeiro temos que instalar o Analog. Seguem os comandos:
# cd /usr/local/src
# wgethttp://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 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.
[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
[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.
[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.
[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
[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).
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.
[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.