+ Responder ao Tópico



  1. #1
    sambaloco40
    Visitante

    Padrão problemas com iptable + httpd

    Olá pessoal! Estou com um pequeno problema com meu iptables. Estou rodando Salckware 10.1, com serviços de: PROXY + SSHD + HTTPD + DHCPD + FTP. Quando ativo o firewall (todo tempo) não consigo entrar na página desse servidor usando o IP dele, somento com localhost, sendo que quando desativado tudo funciona bem. Segue o meu arquivo de rc.firewall:

    #!/bin/bash

    firewall_start()
    {
    # Altera as políticas
    /usr/sbin/iptables -P INPUT DROP
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT DROP

    # Abre para o DHCPD
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 68 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 68 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 67 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 67 -j ACCEPT

    # Abre para uma faixa de endereços da rede local
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 132.42.92.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 132.42.92.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 132.42.92.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 132.42.92.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    # Abre para a interface de loopback.
    /usr/sbin/iptables -A INPUT -i lo -s 127.0.0.1/255.255.255.255 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o lo -d 127.0.0.1/255.255.255.255 -j ACCEPT

    # HTTPD
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

    # FTP Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT

    #FTP Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 21 -j ACCEPT

    # SSH Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

    # SSH Cliente
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

    # DNS Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

    # Libera o HTTP e o HTTPS
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

    # Ignora mais algumas coisas ruins
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route

    # Compartilha a internet com proxy e carrega modulos necessarios
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    firewall_stop()
    {
    /usr/sbin/iptables -F
    /usr/sbin/iptables -t nat -F
    /usr/sbin/iptables -X
    /usr/sbin/iptables -P INPUT ACCEPT
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT ACCEPT

    # Compartilha a internet com proxy
    modprobe iptable_nat
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    case "$1" in
    "start")firewall_start;
    echo "Firewall is runnig.";;

    "stop")firewall_stop;
    echo "Firewall is NOT runnig.";;

    "restart")firewall_stop;
    sleep 1;
    firewall_start;
    echo "Firewall was restarted and it is runnig.";;

    *)/usr/sbin/iptables -L -n;;
    esac

    Tudos os serviços funcionam bem, só o httpd que não. Alguem percebe o erro?? Valeu!

  2. #2

    Padrão problemas com iptable + httpd

    cara...

    não tenho muita experiência com iptables, por isso talvez eu nao tenha conseguido enxergar problemas...

    mas me corrija se eu estiver errado, a faixa de ip's 132.x.x.x não é faixa de IP privado, será que isso não esteja causando problema?

    sendo ou não, dá um alô pra nóis ae qdo resolver...

    valew
    []'s

  3. #3
    sambaloco40
    Visitante

    Padrão é minha mesmo

    Ah, quando a faixa de ip é assim mesmo... na verade essa não é minha faixa de ips, mas esse servidor é de uma universidade e temos uma faixa de ips privados para gente... não é isso não! Mesmo assim valeu a resposta! []s

  4. #4

    Padrão problemas com iptable + httpd

    tah.. td bem.. então vamos fazer com que eu entenda tbm...

    essa faixa de IP's é de uma universidade, mas esta universidade fica no brasil??

    pq como nao é uma faixa de ip's privada, se tiver ligada a internet terá problemas com acesso... não é?

    valew

  5. #5
    Herlon
    Visitante

    Padrão problemas com iptable + httpd

    Experimente retirar a regra do proxy e veja se funciona.


    Ou adicione a porta 3128 do proxy na regra de entrada INPUT

  6. #6
    sambaloco40
    Visitante

    Padrão resolvido problema!!

    Ai galera resolvi... era uma regra do iptables mesmo... achei estranho pq já existia a regra, mas estava mais para baixo, vai era a ordem mesmo.... Em todo caso segue como ficou:

    #!/bin/bash

    # Autor: RENAN DE SOUZA RODRIGUES - [email protected]
    # Agradecimentos: www.guiadohardware.net ; under-linux.org

    firewall_start()
    {
    # Altera a politica de INPUT FORWARD OUTPUT
    /usr/sbin/iptables -P INPUT DROP
    /usr/sbin/iptables -P FORWARD DROP
    /usr/sbin/iptables -P OUTPUT DROP

    # Abre para o DHCPD
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 68 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 68 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 67 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 67 -j ACCEPT

    # Abre o HTTPD
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT

    # Abre para uma faixa de endereços da rede local
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    # Abre para a interface de loopback.
    /usr/sbin/iptables -A INPUT -i lo -s 127.0.0.1/255.255.255.255 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o lo -d 127.0.0.1/255.255.255.255 -j ACCEPT

    # FTP Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT

    #FTP Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 21 -j ACCEPT

    # SSH Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

    # SSH Cliente
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

    # DNS Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

    # Libera o HTTP e o HTTPS
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

    # Ignora mais algumas coisas ruins
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route

    # Compartilha a internet com proxy e carrega modulos necessarios
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    firewall_stop()
    {
    /usr/sbin/iptables -F
    /usr/sbin/iptables -t nat -F
    /usr/sbin/iptables -X
    /usr/sbin/iptables -P INPUT ACCEPT
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT ACCEPT

    # Compartilha a internet com proxy
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    case "$1" in
    "start")firewall_start;
    echo "Firewall is runnig.";;

    "stop")firewall_stop;
    echo "Firewall is NOT runnig.";;

    "restart")firewall_stop;
    sleep 1;
    firewall_start;
    echo "Firewall was restarted and it is runnig.";;

    *)/usr/sbin/iptables -L -n;;
    esac

    Acho que ficou bem seguro. Quem tiver sugestões manda ai, fico muito agradecido! Valeu geral!

  7. #7
    felco
    Visitante

    Padrão problemas com iptable + httpd

    Muito legal seu ruleset... fazer OUTPUT com politica de DROP eh bem trabalhoso mais fica muito bom! :good:
    Vi algumas regras duplicadas de HTTP e reparei que voce não tem rules no FORWARD, porque?

  8. #8
    sambaloco40
    Visitante

    Padrão poxa, não funfa ainda

    Ai, alarme falso. Tentei abrir meu server em outra sub net e não abriu. Ai voltei a prancheta. Olha só: dentro do proprio server abre soh o localhost; na subnet onde esta contida abre normal; em outra subnet ainda não abre; obs: todos os outros servers funfam. Quando aos fowards, não abri porque achei que não precisava, vai ver é isso mesmo..... Help!!

  9. #9

    Padrão problemas com iptable + httpd

    cara..

    tipo.. FORWARD eh a tabela dos pacotes q vão passar pelo firewall, se vc nao fizer forward de pacotes o firewall nao vai distribuir para a rede...

    bem provável q seja soh isso...

    valew
    []'s

  10. #10
    sambaloco40
    Visitante

    Padrão ainda não...

    Bom, abri o forward deixando ACCEPT como regra e ainda nada... Testei agora e deixei só o output com ACCEPT (mantendo as regras e ainda o DROP no forward) tudo funciona bem... acho que tenho que fazer um redirecionamento de portas para o output... é coisinha trabalhosa. Ai, quanto ao forward acho pode ficar fechado, desde que sempre eu abra a entrada e a saida. O mais estranho é que consigo, mesmo quando o httpd não funfa, acessar via sshd. Ai olhando com o netstat -a, percebo as portas abertas... o ssh abre uma porta aleatória assim como o http, mas o httpd não funfa e sshd sim... que coisa não/ Mais idéias?

  11. #11
    sambaloco40
    Visitante

    Padrão mais uma arrumação

    Ai, depois de uma madruga de testes resolvi todos dos problemas. Bom, realmente o FORWARD precisa ficar aberto, logo mudei essa política. Ficou assim:

    #!/bin/bash

    # Autor: RENAN DE SOUZA RODRIGUES - [email protected]
    # Agradecimentos: www.guiadohardware.net ; under-linux.org

    firewall_start()
    {
    # Altera a politica de INPUT FORWARD OUTPUT
    /usr/sbin/iptables -P INPUT DROP
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT DROP

    # Abre para o DHCPD
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 68 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 68 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 67 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 67 -j ACCEPT

    # Abre o HTTPD
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

    # Abre para uma faixa de endereços da rede local
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 134.41.35.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    # Abre para a interface de loopback.
    /usr/sbin/iptables -A INPUT -i lo -s 127.0.0.1/255.255.255.255 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o lo -d 127.0.0.1/255.255.255.255 -j ACCEPT

    # FTP Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT

    #FTP Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 21 -j ACCEPT

    # SSH Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

    # SSH Cliente
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

    # DNS Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

    # Libera o HTTP e o HTTPS
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

    # Ignora mais algumas coisas ruins
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route

    # Compartilha a internet com proxy e carrega modulos necessarios
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    firewall_stop()
    {
    /usr/sbin/iptables -F
    /usr/sbin/iptables -t nat -F
    /usr/sbin/iptables -X
    /usr/sbin/iptables -P INPUT ACCEPT
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT ACCEPT

    # Compartilha a internet com proxy
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    case "$1" in
    "start")firewall_start;
    echo "Firewall is runnig.";;

    "stop")firewall_stop;
    echo "Firewall is NOT runnig.";;

    "restart")firewall_stop;
    sleep 1;
    firewall_start;
    echo "Firewall was restarted and it is runnig.";;

    *)/usr/sbin/iptables -L -n;;
    esac

    É isso ai galera! Problema resolvidos total!! Tudo rodando perfeitamente. Valeu as opiniões.

    []'s

  12. #12

    Padrão problemas com iptable + httpd

    porque esta dessa forma?? essas regras não estão duplicadas?

    # Abre o HTTPD
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

    .....

    # Libera o HTTP e o HTTPS
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

    até agora não entendi a questão do forward, pelo que entendo forward é usado quando um pacote vai passar pela maquina firewall, o que não parece ser o caso já que o HTTPD esta na mesma maquina em que esta o firewall

  13. #13
    sambaloco40
    Visitante

    Padrão ainda o httpd

    Bom, olhando agora parece duplicado mesmo. O lance do FORWARD era para o proxy, não para o httpd.Sem o FORWARD ACCEPT, o proxy não funfa. Ai como não queria ficar fazendo tantas regras, acho que não ficaria ruim assim, fica? Vou tirar esses duplicações e testar. Vamos ver...

  14. #14
    sambaloco40
    Visitante

    Padrão ufa! Finalmente!!!

    Ai, agora sim. Segue as configurações que funfaram bem aqui. Sem regras repetidas e com servers a toda:

    #!/bin/bash

    # Autor: RENAN DE SOUZA RODRIGUES - [email protected]
    # Agradecimentos: www.guiadohardware.net https://under-linux.org

    firewall_start()
    {
    # Altera a politica de INPUT FORWARD OUTPUT
    /usr/sbin/iptables -P INPUT DROP
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT DROP

    # Abre para o DHCPD
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 68 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 68 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p udp --sport 67 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p udp --dport 67 -j ACCEPT

    # Abre para uma faixa de endereços da rede local
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 132.41.32.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 132.41.32.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 132.41.32.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 132.41.32.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth1 -p all -s 192.168.0.0/255.255.255.0 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth1 -p all -d 192.168.0.0/255.255.255.0 -j ACCEPT

    # Abre para a interface de loopback.
    /usr/sbin/iptables -A INPUT -i lo -s 127.0.0.1/255.255.255.255 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o lo -d 127.0.0.1/255.255.255.255 -j ACCEPT

    # FTP Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 21 -j ACCEPT

    #FTP Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 20 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 21 -j ACCEPT

    # SSH Servidor
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT

    # SSH Cliente
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT

    # DNS Cliente
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 53 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

    # Abre o HTTPD
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT

    # Libera o HTTP e o HTTPS
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
    /usr/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT
    /usr/sbin/iptables -A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

    # Ignora mais algumas coisas ruins
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    echo "0" > /proc/sys/net/ipv4/conf/eth0/accept_source_route

    # Compartilha a internet com proxy e carrega modulos necessarios
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    firewall_stop()
    {
    /usr/sbin/iptables -F
    /usr/sbin/iptables -t nat -F
    /usr/sbin/iptables -X
    /usr/sbin/iptables -P INPUT ACCEPT
    /usr/sbin/iptables -P FORWARD ACCEPT
    /usr/sbin/iptables -P OUTPUT ACCEPT

    # Compartilha a internet com proxy
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
    }

    case "$1" in
    "start")firewall_start;
    echo "Firewall is runnig.";;

    "stop")firewall_stop;
    echo "Firewall is NOT runnig.";;

    "restart")firewall_stop;
    sleep 1;
    firewall_start;
    echo "Firewall was restarted and it is runnig.";;

    *)/usr/sbin/iptables -L -n;;
    esac

    Quem tiver dúvidas/sugestões/opiniões manda ai que estou ouvindo!

    []'s RENAN