mauricio1241
(usa Fedora)
Enviado em 14/09/2012 - 14:36h
Boa tarde galera do VOL,
De um tempo para cá venho queimando uma boa quantidade de neurônios para criar um script de configuração para o iptables, que use uma política restritiva para as chains INPUT e FORWARD da tabela filter. Porém, devo estar deixando passar alguma coisa, pois ao executar o script os computadores da rede não conseguem ter acesso a internet.
Por usar a política restritiva de dropar tudo, exeto o que estiver explicitamente definido nas regras para aceitar, o firewall está barrando as conexões. Já tentei de tudo para liberar, porém não tive sucesso. E não quero ter de mudar a política para ACCEPT.
Obs: Pretendo rodar este firewall na máquina que faz o roteamento de pacotes. É o meu servidor DHCP, DNS, Samba, Proxy, ou seja, nada na rede acessa a internet sem passar por ela.
Peço que se alguém tiver alguma sugestão, por favor poste, segue o script:
#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward #Habilita o suporte a redirecionamento de pacotes no kernel.
echo 1 > /proc/sys/net/ipv4/tcp_syncookies #Habilita a proteção contra Syn-flood
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Tabela nat
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
# Tabela filter #
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
##### Chain INPUT #####
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Aceita todo o tráfego vindo do loopback e indo pro loopback
iptables -A INPUT -i lo -j ACCEPT
# Todo tráfego vindo da rede interna também é aceito
iptables -A INPUT -s 10.0.1.0/24 -i eth0 -j ACCEPT
# Aceita todas as conexoes ja estabelecidas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#liberar ping
iptables -A INPUT -p icmp -m limit --limit 2/s -j ACCEPT
#Aceita o tráfego das portas necessárias
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #http
iptables -A INPUT -p udp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -A INPUT -p udp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT #https
iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp --dport 8081 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
##### Chain FORWARD ####
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -p tcp ! --dport 443 -j ACCEPT
iptables -I FORWARD -p tcp --dport 80 -j ACCEPT #http
iptables -I FORWARD -p tcp -s 10.0.1.0/24 --dport 53 -j ACCEPT #DNS
iptables -I FORWARD -p tcp -s 10.0.1.0/24 --sport 53 -j ACCEPT #DNS
iptables -I FORWARD -p tcp --dport 3017 -j ACCEPT #PinPad
iptables -I FORWARD -p tcp --dport 587 -j ACCEPT #
iptables -I FORWARD -p tcp --dport 8081 -j ACCEPT #
iptables -I FORWARD -p tcp --dport 8080 -j ACCEPT #
iptables -I FORWARD -p udp --dport 80 -j ACCEPT #www
iptables -I FORWARD -p udp -s 10.0.1.10/24 --dport 53 -j ACCEPT #DNS
iptables -I FORWARD -p udp -s 10.0.1.10/24 --sport 53 -j ACCEPT #DNS
iptables -I FORWARD -p udp --dport 3017 -j ACCEPT #PinPad
iptables -I FORWARD -p udp --dport 587 -j ACCEPT #
iptables -I FORWARD -p udp --dport 8081 -j ACCEPT #
iptables -I FORWARD -p udp --dport 8080 -j ACCEPT #
##Libera sites do HTTPS
iptables -A FORWARD -d 65.55.0.0/16 -j ACCEPT #hotmail
iptables -A FORWARD -d 74.125.229.0/24 -j ACCEPT #google
iptables -A FORWARD -d 74.125.45.84 -j ACCEPT #accounts.google.com
iptables -A FORWARD -d 189.28.143.98 -j ACCEPT #cadastro.sus.gov.br
iptables -A FORWARD -d 201.3.168.36 -j ACCEPT #unicrednet.e-unicred.com.br
iptables -A FORWARD -d 200.152.33.1 -j ACCEPT #granulito.mte.gov.br
iptables -A FORWARD -d 98.139.237.162 -j ACCEPT #yahoo.com
# Tabela nat #
##### Chain PREROUTING #####
#Redireciona tudo da porta 80 para a 3128 pro Proxy
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
##### Chain POSTROUTING #####
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Permite qualquer conexão vinda com destino a lo e rede local para eth0
iptables -t nat -A POSTROUTING -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.1.0/24 -o eth0 -j ACCEPT
Obs2: Peço desculpas caso esteja cometendo alguma falha boba, pois não sou muito experiente na área.
Obrigado pela atenção