Navegar com política DROP no Iptables
	
	
		Olá amigos.  Estou refazendo a parte de segurança aqui da empresa, e  estou passando as políticas padrões do Iptables para DROP. Comecei pela  chain INPUT, liberei os acessos que preciso e testei-os antes de mudar a  política. Após a mudança, todas as regras que fiz funcionam  corretamente, entretanto minha navegação não funciona! Estou utilizando o  Squid como Proxy, redireciono as portas 80 e 443 para ele. Não estou  utilizando proxy transparente. Segue a baixo o meu script, desde já  agradeço pela ajuda.  
                Código bash:
                
# Firewall Linux   
 
######## Variaveis 
LAN=eth0 
WAN=eth2 
LW=eth+  
REDE=192.168.0.0/24   
 
######## Apaga registros e limpa 
iptables -F  && iptables -X && iptables -t nat -F && iptables  -t nat -X &&   
 
######## Carregando os modulos 
modprobe  ip_nat_ftp 
modprobe iptable_nat 
modprobe ip_nat_pptp 
modprobe ip_gre  
modprobe ipt_LOG 
modprobe ipt_REJECT 
modprobe ipt_MASQUERADE   
 
########  Politicas padrao 
#iptables -P INPUT DROP 
#iptables -P FORWARD DROP  
#iptalbes -P OUTPUT DROP    
 
######## Criando as regras de entrada,  filtragem e redirecionamento 
######## Permite entrada de pacotes pela  rede local 
iptables -A INPUT -p tcp -s $REDE -j ACCEPT iptables -A  FORWARD -p tcp -s $REDE -j ACCEPT 
######## Permite acesso via SSH 
  iptables -A INPUT -p tcp --dport 2530 -j ACCEPT 
iptables -A FORWARD -p  tcp --dport 2530 -j ACCEPT 
######## Libera porta do Registro do Software  Contas ERP 
 ######## e a redireciona para o Servidor 
iptables -A INPUT  -p tcp --dport 211 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 211 -j  ACCEPT 
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 211 -j DNAT  192.168.0.100:211  
######## Libera Webmin para acesso externo 
iptables  -A INPUT -p tcp --dport 10000 -j ACCEPT 
iptables -A FORWARD -p tcp  --dport 10000 -j ACCEPT 
######## Libera Windows Terminal Service 
######## e redireciona para o Servidor  
iptables -A INPUT -p tcp --dport  3389 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 3389 -j ACCEPT
  iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 3389 -j DNAT  192.168.0.100:3389 
 ######## Libera porta 3050 para Ema GED 
######## e  redireciona para o Servidor
 iptables -A INPUT -p tcp --dport 3050 -j  ACCEPT 
iptables -A FORWARD -p tcp --dport 3050 -j ACCEPT 
iptables -t nat  -A PREROUTING -p tcp -i $WAN --dport 3050 -j DNAT 192.168.0.100:3050   
######## Libera portas para o OpenFire (Jabber) 
######## e redireciona  para o Servidor 
iptables -A INPUT -m multiport -p tcp --dport 5222,5269  -j ACCEPT 
iptables -A FORWARD -m multiport -p tcp --dport 5222,5269 -j  ACCEPT 
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 5222 -j DNAT  192.168.0.100:5222 
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport  5269 -j DNAT 192.168.0.100:5269 
######## Libera OpenVPN 
######## e  redireciona para o Servidor 
  iptables -A INPUT -p udp --dport 5000 -j  ACCEPT 
iptables -A FORWARD -p udp --dport 5000 -j ACCEPT
 iptables -t nat  -A PREROUTING -p tcp -i $WAN --dport 5000 -j DNAT 192.168.0.100:5000 
######## Permite acesso ao Filezilla Sever (FTP) 
######## e redireciona para o Servidor 
iptables -A INPUT -p tcp --dport 2121 -j ACCEPT 
iptables -t nat -A PREROUTING -p tcp -i $WAN --dport 2121 -j DNAT 192.168.0.100:21 
######## Outras portas 
iptables -A FORWARD -p tcp --dport 995 -j ACCEPT 
#Porta POP 
iptables -A FORWARD -p tcp --dport 465 -j ACCEPT 
#Porta SMTP 
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT 
#Porta HTTP 
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT 
#Porta HTTPS 
######## Compartilha a conexao 
echo 1 > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -A POSTROUTING -s $REDE -j MASQUERADE 
#Proxy 
iptables -t nat -A PREROUTING -p tcp -s $REDE --dport 80 -j REDIRECT --to-port 3128 
iptables -t nat -A PREROUTING -p tcp -s $REDE --dport 443 -j REDIRECT --to-port 3128 
#Libera VPN 
iptables -A INPUT -p 47 -j ACCEPT 
iptables -A FORWARD -p 47 -j ACCEPT 
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT 
iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT 
iptables -A INPUT -p udp --dport 1723 -j ACCEPT 
iptables -A OUTPUT -p udp --sport 1723 -j ACCEPT 
iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT 
iptables -A FORWARD -p udp --sport 1723 -j ACCEPT 
# Abre a interface de loopback 
iptables -A INPUT -i lo -j ACCEPT 
# Ignora pings 
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP 
# Protege contra spoofing 
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter 
# Descarta pacotes malformados, protegendo contra ataques diversos 
iptables -A INPUT -m state --state INVALID -j DROP 
# Protege contra ping da morte 
#iptables -A FORWARD -p icmp --icmp-type 
echo-request -m limit 1/s -j ACCEPT 
#Protege contra por scanners ocultos 
#iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT 
# Bloqueando tracert 
iptables -A INPUT -p udp -s 0/0 -i eth2 --dport 33435:33525 -j DROP 
echo 'Firewall iniciado!'
  
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		voce bloqueou o OUTPUT ! se usar proxy, o acesso a internet de quem usa proxy é feito via OUTPUT (porque quem esta saindo é o proxy).
                Código :
                
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
  
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		Bom, neste caso a politica padrão da chain OUTPUT está comentada, mas aqui estou utilizando ela em ACCEPT, com a política padrão da cadeia INPUT DROP, e então não consigo navegar.
Ainda que a política padrão da cadeia OUTPUT seja ACCEPT, tenho que liberar a saída da porta 80 com essa regra?
Obrigado pela ajuda parceiro!
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		se a politica padrao for accept.. e nenhuma das regras que la estejam interferir nos pacotes.. nao precisa colocar regra para porta 80 !!
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		Entendo...É aí que está o problema!
Minhas politicas estão aceitas para todas as chains, menos para a INPUT.
No momento estou fazendo o seguinte: Passando as regras para o fim do script e liberando a consulta DNS para a minha rede, a entrada da porta 53 no protocolo UDP com origem meu firewall que também é um gateway, e com destino a minha rede. Vou fazer o teste e após eu posto o resultado aqui.
Obrigado Alexandre.
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		Olá Alexandre.
De fato o teste que fiz não deu certo.
Descobri através do logs o seguinte: Tenho conectividade com a internet, tanto que consigo pingar para alguns sites, mas o dns não consegue ser resolvido.
O servidor DNS não é o meu firewall, utilizo o DNS da operadora que provém a internet aqui na empresa. Se eu colocar o IP do site no navegador, consigo acessá-lo co dificuldade, mas consigo, já pelo seu nome o squid me retorna com o erro de "Timeout" e diz que não conseguiu resolver o endereço. Enfim, que porta deve estar bloqueando isso?
Já coloquei a seguinte regra:
iptables -A FORWARD -s $LAN -p tcp --dport 3128 -j ACCEPT
Como utilizo proxy manual nos navegadores, todos estão saindo pela porta do Squid, mesmo assim essa regra não resolveu. 
Obrigado pela ajuda!
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		A porta do DNS é UDP número 53...Um tcpdump no servidor pode te tirar várias dúvidas nesse caso..
Mais eu sugiro que faça o seguinte..Como vc usa o INPUT em DROP, libere a entrada(INPUT) do pacote na porta TCP (80,443,3128) e UDP(53) Para a placa de rede local.. E faça uma regra com estado para o pacote que volta, fazendo com que a saida para internet não tenha entrada do pacote para quando vem de fora nas portas 80, 443.. bla bla bla..
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
É isso, espero que esteja claro, qq coisa me avisa...
[]'s
Laercio Motta
Blog do Laercio Motta
Twitter: @laerciomasala
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		Olá Laércio, bom dia!
As regras de entrada que você citou, eu já as tenho deste modo:
iptables -A INPUT -m multiport -p tcp --dport 80,443 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
A regra que você citou eu ainda não tinha, vou realizar um teste e após, eu posto o resultado por aqui.
Obrigado pela ajuda!
	 
	
	
	
		Re: Navegar com política DROP no Iptables
	
	
		Olá pessoal. Muito obrigado pela ajuda. Consegui resolver meu problema.
Além da regra citada pelo Laércio, o que estava faltando era a seguinte regra:
iptables -A FORWARD -p udp --dport 53
Antes só havia uma regra de INPUT para a porta 53. Depois disso consegui obter a navegação na rede.
Obrigado pela força!