Respostas no email... -- Reinaldo Carvalho
> Prezados, > > Tenho um cliente atualmente utilizando as regras de firewall > mais abaixo, porém as máquinas clientes (winxp, win2k, > win98) que estão passando pelo NAT estão muito instáveis, ou > seja, impedidas de navegar, checar emails, etc. Sendo > necessário restartar a interface de rede p/ poder voltar ao > normal e depois falhar > > Analisei bem estas regras e não consegui encontrar a falha. > Os IPs que estão passando pelo NAT possuem o subtítulo #IPs > liberados (no final do script) > > Detalhe, não pode ser problema físico nem de instabilidade > no link, porque as máquinas que estão passando pelo proxy > navegam e enviam emails normalmente. > > O SO é Debian Woody 3.0 r0 - Kernel 2.4.18 - Link de 128K - > Proxy: SQUID > > Obrigado pela atenção e ajuda! > > # Limpar a tabela atual > iptables -t nat -F > iptables -F > > # habilita forward > echo 1 > /proc/sys/net/ipv4/ip_forward > > # Desabilita resposta para ping > echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all > > # Desabilita port Scan > echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts > > ##### Protecao contra IP Spoofing > for i in /proc/sys/net/ipv4/conf/*/rp_filter; do > echo 1 >$i > done > > ##### Disable ICMP Redirect Acceptance > for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do > echo 0 > $f > done > > ##### Log packets with impossible addresses > for f in /proc/sys/net/ipv4/conf/*/log_martians; do > echo 1 > $f > done > > # PortScan > iptables -A INPUT -i eth1 -p udp -s any/0 --sport > 32769:65535 -d 200.X.X.X --dport 33434:33523 -j LOG > --log-prefix "Incoming traceroute: " > > iptables -A INPUT -i eth1 -p udp -s any/0 --sport > 32769:65535 -d 200.X.X.X --dport 33434:33523 -j DROP > Estas linhas nao sao necessaria se usarmos a politica padrao do INPUT como DROP. > > echo "ATIVANDO FIREWALL..." > > /sbin/modprobe ip_conntrack > /sbin/modprobe ipt_MASQUERADE > /sbin/modprobe ipt_LOG > /sbin/modprobe iptable_nat > /sbin/modprobe ip_nat_irc > Se estas usando um kernel padrão, devem estar faltando carregar uns modulos, como o responsavel pelo '--state'. Sugiro que compiles tudo relacionado como o 'netfilter' como 'build-in'. Evita muitos problemas. > # Barra todo o forward que nao estiver listado abaixo > iptables -t filter -P FORWARD DROP > Que tal colocar o INPUT tb como DROP? > # Libera trafego livre para loopback > iptables -t filter -A INPUT -i lo -s 0/0 -d 0/0 -j ACCEPT > iptables -t filter -A OUTPUT -o lo -s 0/0 -d 0/0 -j ACCEPT Nao é necessário indicar -s 0/0 ou -d 0/0, se não indicar estes campos, isso é o padrão. > > # Definicoes iniciais - Rede privada pode fazer novas > conexoes > iptables -t filter -A INPUT -i eth0 -m state --state NEW -j > ACCEPT Erro gravissimo, estas jogando fora todo o firewall na linha acima, pois qualquer conexão ira iniciar como NEW. Logo abriras todas as portas. iptables -t filter -A INPUT -m state --state > ESTABLISHED,RELATED -j ACCEPT > Esta esta correta. > # Liberacoes para a rede privada 10.6.0.0 > #iptables -t filter -A FORWARD -d 0/0 -s 10.6.0.0/255.0.0.0 > -o eth1 -j ACCEPT > iptables -t filter -A FORWARD -d 10.6.0.0/255.0.0.0 -s 0/0 > -i eth1 -j ACCEPT> Não precisas liberar forward todo. iptables -t filter -A FORWARD -s 10.6.0.0/255.0.0.0 -o eth1 -j ACCEPTiptables -t filter -A FORWARD -d 10.6.0.0/255.0.0.0 -s 0/0 -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT > iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to > 200.242.213.143 No caso de uso de 1 ip, sugiro usar o -j MASQUERADE. > > iptables -t filter -A INPUT -s 10.6.0.0/255.0.0.0 -d 0/0 -j > ACCEPT Nao precisas disso, só liberar as portas que existirem daemons em estado 'listen'. iptables -t filter -A OUTPUT -s 10.6.0.0/255.0.0.0 > -d 0/0 -j ACCEPT iptables -t filter -A OUTPUT -p icmp -s > 10.6.0.0/255.0.0.0 -d 0/0 -j ACCEPT > > # bloqueia tudo > #iptables -t filter -A FORWARD -s 10.6.0.0/255.0.0.0 -j DROP Se ja liberaste la em cima? Pra que essa regra? O pacote nem vai chegar aqui. > > # Ips liberados > iptables -A FORWARD -s 10.6.0.80 -j ACCEPT > iptables -A FORWARD -p tcp -s 10.6.0.10 -j ACCEPT > iptables -A FORWARD -s 10.6.0.40 -j ACCEPT > iptables -A FORWARD -s 10.6.0.41 -j ACCEPT > iptables -A FORWARD -s 10.6.0.42 -j ACCEPT > iptables -A FORWARD -s 10.6.0.44 -j ACCEPT > iptables -A FORWARD -s 10.6.0.45 -j ACCEPT > iptables -A FORWARD -p tcp -s 10.6.0.40 -j ACCEPT > Novamente, o forward ja foi liberado pra rede toda, essas linhas sao desnecessarias. > # Filtros para a rede > iptables -A FORWARD -p tcp -s 10.6.0.0/255.0.0.0 --dport 25 > -j ACCEPT iptables -A FORWARD -p tcp -s 10.6.0.0/255.0.0.0 > --dport 110 -j ACCEPT iptables -A FORWARD -p tcp -s > 10.6.0.0/255.0.0.0 --dport 3128 -j ACCEPT iptables -A > INPUT -p tcp -s 10.6.0.0/255.0.0.0 --dport 3128 -j ACCEPT > iptables -A FORWARD -p tcp -s 10.6.0.0/255.0.0.0 --dport 53 > -j ACCEPT iptables -A FORWARD -p udp -s 10.6.0.0/255.0.0.0 > --dport 53 -j ACCEPT echo "FIREWALL ATIVADO!" > O firewall funciona linha a linha, sequencialmente, se o pacote casar com uma regra, ele faz o que esta no parametro '-j', e descarta as demais regras. Este firewall esta muito problemático. > > > []´s > > > Pedro Ivo Lima Att, Reinaldo Carvalho

