Modelo Firewall Completo em Iptables para pequena rede/office


Olá,
Compartilho um antigo script de firewall (iptables, no Debian) que utilizava num pequeno escritório (cerca de 20 maquinas) onde todo o ambiente interno estava em servidores virtualizados e neste firewall concentrava-se toda a estrutura da rede.
Ele é bem explicativo e você pode altera-lo para suas necessidades.

Obviamente hoje há soluções bem melhores e muito provavelmente este script está defasado com o que o GNU/Linux atual pode oferecer.
Eu utilizei este script no Debian 4 (!!) e mantive a administração dele até atualizar para o 6 (passando pelo 5, obvio).
Não sei quem o escreveu originalmente, mas ao longo do tempo sofreu alterações minhas e de outros da equipe.

No inicio há:
# A variável abaixo é para saber qual meu IP Externo, pois o link ppp0 trata-se de adsl de ip dinâmico
ip_externo=$(ifconfig ppp0 | grep -i "inet end.:" | cut -d : -f 2 | grep -i [^Bcast] > /tmp/ifconfig.txt && cat /tmp/ifconfig.txt | cut -d " " -f 2)


Para que na variável "ip_dinamico" fique o ip dinamico da interface ppp0, pode-se deixar assim:
ip_externo=$(ifconfig ppp0 | grep -i "inet end.:" | cut -d : -f 2 | grep -i [^Bcast] | cut -d " " -f 2)


O resultado é o mesmo, porém não vai ficar no seu linux o arquivo /tmp/ifconfig.txt com o ip dentro... elimina-se este passo...


Você pode usar para um script que pegue o IP da placa de rede esta mesma ideia, trocando o ppp0 por eth0 por exemplo (ou pedindo para o usuário informar qual placa deseja, enfim...)


hostip=$(ifconfig eth0 | grep -i "inet end.:" | cut -d : -f 2 | grep -i [^Bcast] | cut -d " " -f 2)

Apenas atente-se que, dependendo do linux, ao invés de inet end, será inet addr (sem o ponto antes do dois-pontos), ficando assim:

hostip=$(ifconfig eth0 | grep -i "inet addr:" | cut -d : -f 2 | grep -i [^Bcast] | cut -d " " -f 2)

Este é um script de firewall simples, mas funcional, que utilizo sempre como base para iniciar qualquer pequeno projeto com aquelas mesmas configurações de sempre (kk). Eu removi bastante particularidades dele, deixando-o com apenas o essencial para postar aqui e ser útil a qualquer um. Neste exemplo, o link interno vem de um bonding (união das placas eth1 e eth2), o link externo vem de ppp0 com IP dinâmico!!

No mesmo host há o Squid, Apache, Openfire, MySQL, VPN (PPTP)... e dentro da rede alguns webservers...

Correções, melhorias e qualquer outra coisa é bem-vinda!! Este script surgiu juntando vários outros que estão disponíveis na internet e também de necessidades (exemplo, o retorno visual e o sleep era para que o estagiário soubesse que o script "rodou"..., Ok, admito que quem coloca um 'echo ok' deve apanhar de teclado da microsoft, sorry).



Enfim, segue ele abaixo para quem possa ajudar ;-)

Nota 1: Usei o https://tohtml.com para colorir de acordo com o bash e deixar em html para melhor entendimento visual.

Nota 2: Também postei no https://www.vivaolinux.com.br/script/Firewall-funcional/


Comentários