Firewall com Iptables: direto ao assunto (RHEL5 e Fedora)
Sou novo por aqui e venho colocar a disposição um artigo sobre firewall. Quando comecei a usar Linux testei muitas distribuições, mas a que mais achei estável foi a Red Hat Enterprise, que foi a distribuição utilizada para testar o aqui proposto.
Parte 2: Regras de encaminhamento(FORWARD) e nat
Sempre que for habilitar uma regra de FORWARD para a internet você precisa adicionar uma regra para que o iptables possa fazer nat.
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
No meu caso estou usando ip fixo para internet (eth0), estou compartilhando a outra placa de rede. Você pode compartilhar também ppp para quem usa ip variável.
# iptables -t nat -A POSTROUTING -o ppp -j MASQUERADE
Caso você não queira usar o FORWARD como DROP por padrão, mas mesmo assim quer que a porta 80(http) e a porta 443(https) passe pelo Squid, adicione a seguinte regra:
# iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
# iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
Mas presumindo que você use FORWARD como DROP, vamos liberar alguns acessos:
# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT (aceita conexões estabelecidas)
# iptables -A FORWARD -d 200.200.200.200 -j ACCEPT (aceita todas as porta para o ip 200.200.200.200)
# iptables -A FORWARD -p tcp --dport 110 -j ACCEPT (aceita pop3)
# iptables -A FORWARD -p tcp --dport 25 -j ACCEPT (aceita smtp)
# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT ( aceita ssh)
# iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT ( aceita terminal service)
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
No meu caso estou usando ip fixo para internet (eth0), estou compartilhando a outra placa de rede. Você pode compartilhar também ppp para quem usa ip variável.
# iptables -t nat -A POSTROUTING -o ppp -j MASQUERADE
Caso você não queira usar o FORWARD como DROP por padrão, mas mesmo assim quer que a porta 80(http) e a porta 443(https) passe pelo Squid, adicione a seguinte regra:
# iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
# iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
Mas presumindo que você use FORWARD como DROP, vamos liberar alguns acessos:
# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT (aceita conexões estabelecidas)
# iptables -A FORWARD -d 200.200.200.200 -j ACCEPT (aceita todas as porta para o ip 200.200.200.200)
# iptables -A FORWARD -p tcp --dport 110 -j ACCEPT (aceita pop3)
# iptables -A FORWARD -p tcp --dport 25 -j ACCEPT (aceita smtp)
# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT ( aceita ssh)
# iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT ( aceita terminal service)