Nat somente em portas determinadas
postado por nightnux - comentários
0
Guilherme Straioto
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 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 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. # Guilherme Straioto 23/10/03
# 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
|