+ Responder ao Tópico



  1. #1

    Lightbulb 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!'
    Última edição por osmano807; 04-08-2011 às 09:07.

  2. #2

    Padrão 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

  3. #3

    Padrão 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!

  4. #4

    Padrão 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 !!

  5. #5

    Padrão 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.

  6. #6

    Padrão 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!

  7. #7

    Padrão 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

  8. #8

    Padrão 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!

  9. #9

    Padrão 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!