Esse tutorial explica como ativar nat somentes nas portas desejadas, fazendo com que a segurança do seu servidor fique melhor.
Em muitos sites vimos como funciona o roteamento convencional, basta apenas três linhas e pronto como no exemplo abaixo:
echo 1 > /proc/sys/net/ipv4/ip_forward // Habilitando o recurso de IP forwarding
modprobe iptable_nat // Carregando o módulo nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE // Ativando mascaramento
O problema é que todas as portas são habilitadas, no qual softwares p2p, messaging e outros funcionarão acarretando "lentidão" no link. Abaixo um script que habilita apenas portas para navegação e envio e recebimentos de emails, junto com proxy transparente.
O que é necessário:
1- Kernel com suporte a iptables
2- Proxy Transparente
3- Squid rodando com blacklists
4- Script nat
1- Kernel com suporte a iptables
Distribuições atuais com o kernel 2.4 e 2.6 suportam iptables.
2- Proxy transparente
Basta apenas você descomentar estas linhas no squid.conf, que o redirecionamento o script faz automático.
# HTTPD-ACCELERATOR OPTIONS
# ---------------------------------------
#
#
#
httpd_accel_port 80
httpd_accel_host virtual
E o Seguinte Grupo:
#
# TAG: httpd_accel_with_proxy
# --------------------------------------
#
#
httpd_accel_with_proxy on
#
#
# TAG: httpd_accel_uses_host_header on|off
#
#
httpd_accel_uses_host_header on
3- Squid rodando com black list
No caso do Msn Messenger quando ele tenta conectar na porta 1863 e não consegue, automaticamente ele conecta pela porta 80 estabilizando a conexão, com o blacklist ativado basta apenas bloquear ao acesso do messenger.hotmail.com.
a- Abra o squid.conf: vi /etc/squid/squid.conf
b- Adicione a acl: acl blacklist url_regex "/etc/squid/blacklist"
c- Adicione na seção http_access: http_access allow all !blacklist
d- Crie o arquivo blacklist: vi /etc/squid/blacklist, adicione as linhas:
messenger.hotmail.com
login.oscar.aol.com
login.icq.com
cs.yahoo.com
Rode o comando: squid -k reconfigure
4- Script nat
Copie e cole o conteúdo abaixo num arquivo chamado firewall.sh, e modifique se necessário a linha: IFINT='10.0.0.0/24' colocando a classe de ip da sua rede interna.
----- copie aqui
# Firewall para rede interna, filtrando serviços da internet.
# Definição de variáveis e regras fixas
IPT='/sbin/iptables'
IFINT='10.0.0.0/24'
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
$IPT -F
$IPT -t nat -F
$IPT -t nat -P POSTROUTING DROP
# Ativando o proxy transparente
$IPT -t nat -A PREROUTING -i eth0 -s $IFINT -p tcp --dport 80 -j REDIRECT --to-port 3128
# Ativando mascaramento para determinadas portas
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p icmp -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 110 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport 110 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 25 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport 25 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 80 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport 80 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 3128 -j ACCEPT
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 53 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport 53 -j ACCEPT
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport 53 -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport 53 -j ACCEPT
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p tcp --dport https -j MASQUERADE
$IPT -t nat -A POSTROUTING -s $IFINT -d 0/0 -p udp --dport https -j MASQUERADE
----- corte aqui
Coloque no /etc/rc.local para inicializar quando sua máquina ligar.
# vi /etc/rc.local
# sh /etc/rc.d/firewall.sh
Pronto.
Softwares testados: kazaa, msn messenger, icq.
Guilherme Straioto