iptables, sem frescuras!

Publicado por Pedro (última atualização em 09/09/2013)

[ Hits: 13.476 ]

Homepage: 127.0.0.1

Download fw

Download fw4 (versão 4)

Download fw2 (versão 2)

Download fw3 (versão 3)




Bem, vejo que há muitas dúvidas sobre as regras no iptables, então criei este script como base para um usuário comum do sistema.

Lembre-se de ativar o serviço do iptables, ou ele não rodara da próxima vez que seu sistema for reiniciado.

Exemplo, com o systemd:

Logue-se como root, rode o script e dê o comando:

# iptables-save > /etc/iptables.rules

Ou no Arch Linux...:

# iptables-save > /etc/iptables/iptables.rules

Depois, para iniciar com o sistema:

# systemctl enable iptables.service

Pronto, está salvo e será iniciado sempre junto com seu sistema.
Se quiser ativar agora:

# systemctl start iptables.service

Espero que aproveitem!

  



Versões atualizadas deste script

Versão 4 - Enviado por Pedro em 07/09/2013

Changelog: Firewall completamente organizado com sistema de logs e bloqueio 100% funcionais!

1. TODAS as políticas em DROP.
2. Criada regra para liberação dos serviços externos bastando descomentar e/ou selecionar as portas.
3. CHAINS organizadas para evitar uso excessivo da máquina em caso de flood.
4. Adicionada regra para colocar a porta do torrent, evitando assim falsos positivos nos logs.
5. Aparência feita para melhor compreensão das regras e controle do usuário.

Obrigado a todos que usaram, testaram e comentaram sobre estes scripts que sempre visaram possibilitar o máximo de segurança com o menor trabalho/intervenção do usuário possível.

Este foi o último fw desta série, acredito que neste script meu trabalho ficou bem feito!
Espero comentários e até a próxima meus amigos.

Download fw4


Versão 2 - Enviado por Pedro em 19/05/2013

Changelog: 1. Script remodelado, todas as políticas em DROP.
2. Adicionado limite de pacotes syn salvos pelo log.
3. Adicionado proteção mais "efetiva" contra scans.
4. Totalmente comentado, ajudando assim o usuário a se adaptar ao firewall e modificar o mesmo ao seu gosto!

Espero que aproveitem! t+.

Download fw2


Versão 3 - Enviado por Pedro em 17/07/2013

Changelog: Alterada novamente a lógica do firewall:

1. Adicionadas regras do kernel (/proc).
2. Adicionado descarte de IPs persistentes.
3. Adicionada área para configuração local da rede.
4. Adicionado descarte de pacotes inválidos ou suspeitos.
5. Revisado o sistema de loging e descarte de pacotes.

Download fw3



Scripts recomendados

Firewall + iptables no Debian

Configuração de VLANs

ipshow - exibir informações de sua rede

Manutencao de arquivos no Squid-Cache

Gerar senhas aleatórias de qualquer tamanho


  

Comentários
[1] Comentário enviado por cr4sh0v3rr1d3 em 06/05/2013 - 00:18h

firewall pobre..

[2] Comentário enviado por px em 06/05/2013 - 23:35h

então criei este script como base para um usuário comum do sistema


Bom, "infelizmente" nem todos precisam/querem um firewall super robusto em um micro "caseiro", e acredito q para um usuário comum é uma boa base para ir se aprofundando, mas obg pela sua resposta, mesmo pq ñ afirmo q criei um firewall e sim um script base para usuário comum.

[3] Comentário enviado por smallboy em 17/07/2013 - 11:48h

Já que amigo ai acima falou que o firewall é pobre, qual firewall é mais indicado robusto para se usar em servidores?

Na minha opinião o iptables ele e bom pra aprender se aprofundar, ter conhecimentos sobre firewall.

[4] Comentário enviado por px em 17/07/2013 - 13:11h

Tem pessoas oliver que não gostam muito da ideia Open soucer e criam contas fake para difamar em sites e em fórum, acho muito triste isso, se ao menos se justifica-se a critica seria construtiva, argumentos vagos tem aos montes por ai até na politica! isso sendo o iptables o firewall implementado diretamente no kernel do linux (netfilter) ele é nativo e muito mais seguro do que programas de terceiros cheios de bugs e backdoors por ai... você também pode usar (deve!) sistemas IDS (detecção de intrusão) como o Snort que possui uma ampla légua de detecção de ataques e scan, juntamente com o Guardian que bloqueia os ips dos malfeitores. Isso é só o basico que o linux pode oferecer, se não estiver satisfeito você pode programar (caso saiba, e queira) qualquer firewall ou ids, pode usar de base até os existentes na licença GNU.

fica a dica!

[5] Comentário enviado por messiah em 29/07/2013 - 22:14h

Obrigado pelo Script!
Desculpe as perguntas ignorantes mas, é o seguinte;

1-Notei que o tal FOWARD foi setado como DROP, o caso e que eu utilizo o notebook também na universidade, e para utilizar a rede da mesma eu preciso configurar meu sistema para passar através do proxy e porta fornecidos. Dropar todos os pacotes cancelaria minha conexão?

2-No arquivo o iplocal e setado manualmente, mas existe algum comando que busque meu ip, pois como disse acima utilizo notebook, e sempre estou conectado em redes distintas : universidade e casa.

3 - Também gostaria de saber sobre a configuração da placa, pois como as vezes eu acesso a ethernet, e a maioria das vezes o wifi(wlan0) essa mudança manual seria um pouco trabalhosa.

Estava procurando algo assim mesmo: simples. Os iniciantes agradecem {COMENTARIO}

[6] Comentário enviado por px em 31/07/2013 - 19:56h

1- Esta configuração é feita por iptables? se sim talvez possa dar alguma perda de pacotes... mas ai é só você testar se funcionar bem... se ñ passe para ACCEPT ou deixe igual oq você usa atualmente.

2/3- Entendo... este script foi feito + pensando em estações fixas de trabalho, mas pode ser facilmente adaptada para portáteis tbm, comente aquelas regras referentes ao iplocal e placa de rede, assim:

##### -------- CONFIGURAÇÃO DA REDE LOCAL -------- #####
#Adicione seu ip da rede interna aqui
#iplocal=192.168.1.13

#Adicione sua rede interna (subrede)
#redelocal=192.168.1.0/24

#Adicione o ip de seu gateway aqui (modem,roteador)
#gateway=192.168.1.1

#Adicione o nome da sua placa de rede aqui
#placa=eth0

#------------------------------------------------------#

e em "Abrindo algumas portas" deixe assim:

#--- Abrindo algumas portas (adicione as portas que ficarão abertas aqui)

# Permitindo loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Aceita conexões iniciadas por você // coração do firewall //
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Liberando entrada de trafego DNS
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT

# Gateway pode conversar como seu ip da rede interna
#iptables -A INPUT -s $gateway -d $redelocal -i $placa -j ACCEPT

#---

[7] Comentário enviado por px em 31/07/2013 - 20:18h

Vou te explicar um pouco sobre este script, ele basicamente te permite conectar em qualquer ip a qualquer porta, somente se você solicitar a conexão! a menos que você abra mais portas em "Abrindo algumas portas"... e também loga e descarta conexões não iniciadas por você ou sem permissão para se estabelecerem, descarta também as conexões inválidas e bloqueia os ips insistentes que as origina, depois de determinadas tentativas.

Ativa os syncookies e descarta vários tipos de pacotes "maliciosos" e duvidosos da rede como os "icmp broadcasts" que são usados mais para o mal que para o bem...






---
Atenciosamente, Pedro.

Já leu meu último artigo?
LINK:
http://www.vivaolinux.com.br/artigos/userview.php?login=px

[8] Comentário enviado por messiah em 02/08/2013 - 09:21h

Obrigado @px, estou tentando não sobrecarregar ninguém de perguntas, mas eu tenho outra dúvida:

para acessar a internet na minha universidade eu adicionei o seguinte no script

iptables -A OUTPUT -s [ip-proxy] -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -s [ip-proxy] -p tcp --dport 3128 -j ACCEPT
Por exemplo com a adição desta regra eu acesso o proxy da universidade, mas devido a política DROP que você colocou, o netfilter dropara todos os outros pacotes que não venham da maquina firewall?(Isto é, supondo outro pc que também utiliza este proxy o mesmo não podera enviar pacotes para meu sistema)

Uma outra dúvida teórica se relaciona com o "coração do firewall"
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Esta regra só adiciona o INPUT, mas você disse que " este script, ele basicamente te permite conectar em qualquer ip a qualquer porta, somente se você solicitar a conexão!" isto quer dizer que após solicitar a conexão a porta aberta libera também os OUTPUT?


[9] Comentário enviado por px em 03/08/2013 - 13:48h

1- Todos que não forem da porta 3128 (cuja mesma foi aberta por você) serão descartados, ips da mesma rede não iram te ver pois a politica de entrada (INPUT) está em DROP.

Existe sua rede local tipo 192.168.1.1 e ips da internet 189.103.0.5. Se você se comunicar com o local (proxy)
iptables -A INPUT -s 192.168.1.1 -p tcp --dport 3128 -j ACCEPT

ele lhe dará um ip de acesso a internet 189.103.0.5 todos que usarem o proxy usaram o ip externo e não o ip interno, por isso não faz diferença, a menos que você libere o acesso para estes ips, oq não é o casso por ser um pc pessoal e não um servidor... mas poderia ser feito também mas são outros 500...


2- Não! como você iria se comunicar se a OUTPUT estivesse fechada? como iria acessar o DNS e os ips? a OUTPUT (politica de saida de pacotes) é aberta nesse firewall ou seja, você pode se conectar a todos os ips, mas somente os ips que você se conectar terão permissão de INPUT (entrada de pacotes) no seu micro.

De uma olhada nos logs do iptables lá se encontram os pacotes que são dropados pelo netfilter, os logs ficam na pasta /var/log da sua distro, provavelmente o arquivo do iptables está em iptables.log ou messages.log talvez tenha que configurar seu sistema de loggin para armazenar as mensagens, verifique no site da sua distribuição linux.

3- Nada... qualquer dúvida tamos ai!

4- Faça testes como outros pcs caso a duvida permaneça, mas antes verifique o sistema de log esta funcionando na sua distro, pois as versões de linux são diferentes. Utilize um programa sniffer para saber quais ips se conectam na sua máquina (desligue o navegador e outros programas que usam a rede antes, para se ter uma precisão melhor) , sugiro o wireshark ou tcpdump para tarefa.

edit: sua regra de OUTPUT é desnecessária tendo em vista que à saída de pacotes é permitida por padrão neste tipo de firewall.

iptables -A OUTPUT -s [ip-proxy] -p tcp --dport 3128 -j ACCEPT

Tente tira-la e usar a internet sem ela.


---
Atenciosamente, Pedro.

Já leu meu último artigo?
LINK:
http://www.vivaolinux.com.br/artigos/userview.php?login=px

[10] Comentário enviado por px em 13/09/2013 - 00:46h

Só para frisar aqui, agora da pra usar o script em estações moveis sem problemas! tá bem organizado e fácil de editar qualquer coisa que queira. Bom uso para vocês pessoal, qualquer dúvida ou sugestão poste ai que julgarei com você os problemas, abç.

[11] Comentário enviado por odiliotiago em 25/05/2014 - 02:14h

Muito legal !!! Obrigado...

[12] Comentário enviado por samus em 25/11/2014 - 21:09h

valeu meu caro, obrigado por me ajudar a implementar meu firewall.
grande abraço


Contribuir com comentário