+ Responder ao Tópico



  1. #1

    Padrão Ubuntu Server - Iptables dando pau

    Olá galera.
    Seguinte. To rodando um Ubuntu server aqui na minha prefeitura. O iptables rola legal, só que tem alguns serviços que são liberados, e de vez em quando ele fecha tudo, só rola a navegação pelo proxy. Aí não tem o que dê jeito. Só um init 6 mesmo. Segue aí o meu firewall pra vcs verem se tem algo errado:


    ###############INÍCIO

    #!/bin/bash

    #check dos modulos necessarios
    modprobe iptable_nat
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ip_conntrack
    modprobe ipt_MASQUERADE


    #ativação do repasse de pacotes
    echo 1 > /proc/sys/net/ipv4/ip_forward


    #Restart do iptables
    iptables -F
    iptables -Z
    iptables -t nat -F
    iptables -t filter -P INPUT ACCEPT
    iptables -t filter -P FORWARD DROP


    LINK='eth0'
    REDE='eth1'


    #Redes certificadas
    TRUSTED_NETWORKS='192.168.0.0/16'
    for NETWORK in $TRUSTED_NETWORKS; do
    iptables -t filter -A INPUT -i $REDE -s $NETWORK -d 0/0 -j ACCEPT
    iptables -t filter -A OUTPUT -o $REDE -s $NETWORK -d 0/0 -j ACCEPT
    done


    #Portas abertas para acesso externo
    # 20 e 21 ftp
    # 80 www (webserver)
    PORT_PERM='20 21 80'
    for PORT in $PORT_PERM; do
    iptables -t filter -A INPUT -p tcp --destination-port $PORT -j ACCEPT
    done


    #Forward de portas
    # 9090 para 80 no 192.168.1.3 - Portal IPM
    # 35133, 35233, 35433 e 35460 para 192.168.1.61 - Compartilhamento de
    arquivo
    PORT_FORWARD='9090:192.168.1.3:80:tcp 35133:192.168.1.61:35133:tcp
    35233:192.168.1.61:35233:udp 35433:192.168.1.61:35433:tcp
    35460:192.168.1.61:35460:tcp'
    for PFWD in $PORT_FORWARD; do
    PROTOCOL=`echo "$PFWD" | cut -d: -f4`
    EXT_PORT=`echo "$PFWD" | cut -d: -f1`
    INT_PORT=`echo "$PFWD" | cut -d: -f3`
    HOST_IP=`echo "$PFWD" | cut -d: -f2`
    iptables -t filter -A INPUT -p $PROTOCOL -d $HOST_IP --destination-port
    $EXT_PORT -j ACCEPT
    iptables -t nat -A PREROUTING -i $LINK -p $PROTOCOL --dport $EXT_PORT -j
    DNAT --to-dest $HOST_IP:$INT_PORT
    done


    #Acesso Priveligiado a Internet
    # 192.168.1.61 - Dante
    # 192.168.1.7 - Jadir
    # 192.168.1.18 - Junior
    # 192.168.1.21 - Tributa1 (Iara) Motivo:Software do Itaú
    # 192.168.1.195 - VoIP (teste)
    VIP_ACCESS='192.168.1.61 192.168.1.7 192.168.1.18 192.168.1.21 192.168.21.3
    192.168.1.23 192.168.1.195 192.168.1.23'
    for VIP in $VIP_ACCESS; do
    iptables -t filter -A FORWARD -d 0/0 -s $VIP -o $LINK -j ACCEPT
    iptables -t filter -A FORWARD -d $VIP -s 0/0 -i $LINK -j ACCEPT
    iptables -t nat -A POSTROUTING -s $VIP -o $LINK -j MASQUERADE
    iptables -t nat -A PREROUTING -i $REDE -p tcp --dport 80 -s $VIP -j ACCEPT
    done


    #Acesso Avançado a Internet
    # 192.168.1.14 - Emanuelle
    # 192.168.22.3 - Saúde
    # 192.168.22.10 - Saúde
    # 192.168.1.223 - Tecnico IPM
    # 192.168.1.80 - Detran
    # 192.168.1.79 - Detran
    # 192.168.1.36 - RH
    # 192.168.22.12 - Saúde
    ADV_ACCESS='192.168.1.14 192.168.22.3 192.168.22.10 192.168.1.223
    192.168.1.80 192.168.1.79 192.168.1.36 192.168.22.12'
    for ADV in $ADV_ACCESS; do
    iptables -t filter -A FORWARD -d 0/0 -s $ADV -o $LINK -j ACCEPT
    iptables -t filter -A FORWARD -d $ADV -s 0/0 -i $LINK -j ACCEPT
    iptables -t nat -A POSTROUTING -s $ADV -o $LINK -j MASQUERADE
    done


    #Proxy transparente (200.201.174.207 C.Social)
    iptables -t nat -A PREROUTING -i $REDE -p tcp -d ! 200.201.174.207 --dport
    80 -j REDIRECT --to-port 3128


    #Conf lo
    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

    ####### FIM
    Será que to fazendo alguma caca ???
    Valeu pela força.

  2. #2

    Padrão

    cara...

    atualiza o começo do seu script e coloca isso:

    $IPT -t nat -F
    $IPT -t filter -F
    $IPT -t mangle -F
    $IPT -t nat -X
    $IPT -t filter -X
    $IPT -t mangle -X

    isso limpa tudo do iptables antes de aplicar as regras



  3. #3

    Padrão

    Cara, coloquei as regras, mas meia hora depois tive que rebootar a maquina novamente. Não achei muita lógica na coisa. O servidor sobe legal, as vezes funciona até por meio dia e, de repente, dá pau. Se vc dá um iptables -L ele mostra as regras como se estivesse funcionando, mas não funciona. Não adianta limpar e carregar de novo, só rebootando.
    Detalhe. Nessa maquina é um Ubuntu Server. Instalei o 6.06 Desktop em outra maquina, configurei como servidor e dá o mesmo pau. Ou tem alguma coisa errada no meu firewall ou algum pau nos módulos do iptables.

  4. #4

    Padrão

    cara..

    o negócio é vc fazer testes no servidor quando der problema

    use utilitários de rede pra ver o q está acontecendo

    como o iptraf ou tcpdump



  5. #5

    Padrão

    Código :
    #Redes certificadas
    TRUSTED_NETWORKS='192.168.0.0/16'
    for NETWORK in $TRUSTED_NETWORKS; do
    iptables -t filter -A INPUT -i $REDE -s $NETWORK -d 0/0 -j ACCEPT
    iptables -t filter -A OUTPUT -o $REDE -s $NETWORK -d 0/0 -j ACCEPT
    done

    Não entendi o porquê desse for, a partir do momento que a variável TRUSTED_NETWORKS não é um array.

  6. #6

    Padrão

    Cara, excluí essa parte aí do script.
    Funcionou da mesma forma, mas, depois de meia hora, deu o mesmo problema.
    Aí, só rebootando o servidor. Alguma outra insanidade no script?
    Algum problema com a ordem das rules ???
    Valeu pela força?



  7. #7

    Padrão

    cara...

    quais os tipos de testes q vc faz no servidor quando ele dá problema?

    ou vc simplesmente reinicia?

  8. #8

    Padrão

    Simples, normalmente, a minha maquina acessa a net sem o proxy.
    Além de perceber que só consigo navegar com o proxy, quando dá pau, logo em seguida vem uma enxurrada de ligações, tipo detran, saúde, etc.
    Com um iptables -L mostra que as regras estão todas carregadas e ok.
    Mesmo assim, não rola. Nem com iptables -R e carregando as regras novamente. Só rebootando a máquina.
    Detalhe, 2 Ubuntu com o mesmo pau.
    Um server e um 6.06 desktop, configurado como servidor.
    Tentei duas inslalações em 2 maquinas diferentes.
    Última edição por jadirorza; 16-11-2006 às 20:53.



  9. #9

    Padrão

    cara...

    o negócio é o seguinte, quando der pau, vc precisa entrar no servidor e fazer testes nele, com programas como iptraf, tcpdump e afins, vc precisa testar as interfaces, precisa ver onde os pacotes estão parando...

    ver se as regras estão ativadas não adianta nada... é preciso descobrir onde está o poblema...

    as vezes com um simples ping ou traceroute vc descobre problemas...

    mas para isso vc precisa fazê-los...