+ Responder ao Tópico



  1. #1

    Angry iptables causando erro intermitente no outlook

    Boa Tarde a todos!

    Fique muito tempo fora deste forum, mas não sei se é infelizmente ou felizmente, pois é com os problemas que aprendemos as soluções.


    Meu caso é o seguinte, estou com dois servidores proxy e firewall com o mesmo problema, as estações usam o outlook express e o microsoft outlook.
    Há momentos que eles conseguem enviar e receber. normalmente.

    mas tem hora que eles não conseguem fazer nada. o outlook diz que está recebendo mensagens 1 de x e não chega numca.

    muito estranho. e por ser ainda um pouco novato e não ter tido tempo habil para me aprimorar mais neste maravilhoso sistema.

    segue abaixo meu script de firewall para facilitar a analise.

    #!/bin/bash
    #
    ### Limpa a tela #######################################################
    #
    # `ifconfig ppp0 | grep "inet addr" | cut -d ":" -f 2 | cut -d " " -f 1`
    #
    clear
    #
    #
    ### Define as variaveis #################################################
    #
    IPT=/usr/sbin/iptables
    REDE=eth1
    LAN=192.168.0.0/24
    IFNET=ppp0
    LO=lo
    LOCALHOST=127.0.0.1
    #
    #
    ### Carregando os modulos necessarios ###################################
    #
    modprobe ip_tables
    modprobe iptable_nat
    modprobe iptable_filter
    modprobe iptable_mangle
    modprobe ipt_conntrack
    modprobe ipt_limit
    modprobe ipt_REDIRECT
    modprobe ipt_TOS
    modprobe ipt_MASQUERADE
    #
    #
    ### Apagando e definindo as politicas padroes do firewall ###############
    #
    $IPT -t filter -F
    $IPT -t filter -X
    $IPT -t filter -Z
    $IPT -t nat -F
    $IPT -t nat -X
    $IPT -t nat -Z
    $IPT -t filter -P INPUT DROP
    $IPT -t filter -P OUTPUT ACCEPT
    $IPT -t filter -P FORWARD DROP
    $IPT -t nat -P PREROUTING ACCEPT
    $IPT -t nat -P OUTPUT ACCEPT
    $IPT -t nat -P POSTROUTING ACCEPT
    $IPT -t mangle -P PREROUTING ACCEPT
    $IPT -t mangle -P OUTPUT ACCEPT
    #
    #
    ### Anti-spoofing #######################################################
    #
    for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 >$i
    done
    #
    #
    ### Ativa o redirecionamento de pacotes #################################
    #
    echo 1 > /proc/sys/net/ipv4/ip_forward
    #
    #
    # Define o máximo de conexões para evitar sobrecarga do servidor ########
    #
    echo 4096 > /proc/sys/net/ipv4/ip_conntrack_max
    #
    #
    ###################### Tabela filter ####################################
    ### Chain INPUT #########################################################
    # Criamos uma nova chain para tratamento da internet
    #
    $IPT -N ppp-input
    #
    ### Aceita todo o tráfego vindo do loopback e indo para o loopback ######
    #
    $IPT -A INPUT -i $LO -j ACCEPT
    #
    #
    ### Todo o tráfego da rede interna também é aceito ######################
    #
    $IPT -A INPUT -s $LAN -i $REDE -j ACCEPT
    #
    #
    ### Libera a porta do SSH ################################################
    #
    $IPT -A INPUT -p tcp --syn --dport 22 -j ACCEPT
    $IPT -A INPUT -p tcp --dport 8080 -j ACCEPT
    $IPT -A INPUT -p tcp --syn --dport 3050 -j ACCEPT
    #
    #
    ### Conexões vindas da interface ppp0 são tratadas pela chain ppp-input ##
    #
    $IPT -A INPUT -i $IFNET -j ppp-input
    #
    #
    ### Qualquer outra conexão desconhecida é imediatamente logada e derrubada
    #
    $IPT -A INPUT -j LOG --log-prefix "Firewall: Input-derrubado"
    $IPT -A INPUT -j DROP
    #
    #
    #### Chain FORWARD #######################################################
    #
    # Permite o redirecionamento de conexões entre as interfaces locais ######
    # Qualquer tráfego indo e vindo para outras interfaces será bloqueado ####
    #
    # Bloqueia o msn e transferencia de arquivo no msn
    #
    $IPT -A FORWARD -s $LAN -p tcp --dport 1863 -j DROP
    $IPT -A FORWARD -s $LAN -i $REDE -o $IFNET -p tcp --dport 6891:6900 -j DROP
    $IPT -A FORWARD -d $LAN -i $IFNET -o $REDE -p udp --dport 6891:6900 -j DROP
    #
    # Libera o GeoVision e o VNC
    #
    $IPT -A FORWARD -p tcp -i $IFNET --dport 80 -d 192.168.0.2 -j ACCEPT
    $IPT -A FORWARD -p tcp -i $IFNET --dport 5800 -d 192.168.0.2 -j ACCEPT
    $IPT -A FORWARD -p tcp -i $IFNET --dport 5900 -d 192.168.0.2 -j ACCEPT
    #
    # Bloqueia o orkut
    #
    $IPT -A FORWARD -s $LAN -i $REDE -p tcp -d 64.233.171.85 -j DROP
    $IPT -A FORWARD -s 64.233.171.85 -i $IFNET -p tcp -d $LAN -j DROP
    #
    #
    $IPT -A FORWARD -d $LAN -i $IFNET -o $REDE -j ACCEPT
    $IPT -A FORWARD -s $LAN -i $REDE -o $IFNET -j ACCEPT
    $IPT -A FORWARD -j LOG --log-prefix "Firewall: FORWARD negado"
    $IPT -A FORWARD -j DROP
    #
    #
    #### Chain ppp-input #####################################################
    #
    # Aceita pings vindos da internet com certa limitação ####################
    #
    $IPT -A ppp-input -p icmp -m limit --limit 2/s -j ACCEPT
    #
    #
    ### Aceitamos o tráfego vindo da internet para o serviço www (porta 80) ##
    #
    $IPT -A ppp-input -p tcp --dport 80 -j ACCEPT
    #
    #
    ### Tentativas de acesso aos serviços listados abaixo serão registrados ##
    #
    $IPT -A ppp-input -p tcp --dport 21 -j LOG --log-prefix "Firewall: FTP "
    $IPT -A ppp-input -p tcp --dport 22 -j LOG --log-prefix "Firewall: SSH "
    $IPT -A ppp-input -p tcp --dport 25 -j LOG --log-prefix "Firewall: SMTP "
    $IPT -A ppp-input -p udp --dport 53 -j LOG --log-prefix "Firewall: DNS "
    $IPT -A ppp-input -p tcp --dport 110 -j LOG --log-prefix "Firewall: POP3 "
    $IPT -A ppp-input -p tcp --dport 113 -j LOG --log-prefix "Firewall: IDENTD "
    $IPT -A ppp-input -p tcp --dport 111 -j LOG --log-prefix "Firewall: RPC "
    $IPT -A ppp-input -p udp --dport 111 -j LOG --log-prefix "Firewall: RPC "
    $IPT -A ppp-input -p tcp --dport 137:139 -j LOG --log-prefix "Firewall: SMB "
    $IPT -A ppp-input -p udp --dport 137:139 -j LOG --log-prefix "Firewall: SMB "
    #
    #
    ### Bloqueia qualquer conexão de fora para esta máquina ##################
    #
    $IPT -A ppp-input -m state --state ! ESTABLISHED,RELATED -j LOG --log-prefix "Firewall: ppp-in "
    $IPT -A ppp-input -m state --state ! ESTABLISHED,RELATED -j DROP
    #
    #
    ### Qualquer outro tipo de tráfego é aceito ##############################
    #
    $IPT -A ppp-input -j ACCEPT
    #
    #
    ########################## Tabela nat ###################################
    ##### Chain POSTROUTING ######
    # Permite qualquer conexão vinda com destino a lo e rede local para placa
    # de rede da rede interna ( ethx ) ######################################
    #
    $IPT -t nat -A POSTROUTING -o $LO -j ACCEPT
    $IPT -t nat -A POSTROUTING -s $LAN -o $REDE -j ACCEPT
    #
    #
    ### Redirecionamento de VNC, GeoVision #####################################
    #
    #
    $IPT -t nat -A PREROUTING -i $IFNET -p tcp --dport 80 -j DNAT --to 192.168.0.2
    $IPT -t nat -A PREROUTING -i $IFNET -p tcp --dport 5800 -j DNAT --to 192.168.0.2
    $IPT -t nat -A PREROUTING -i $IFNET -p tcp --dport 5900 -j DNAT --to 192.168.0.2
    #
    #
    ### Não queremos que os usuários tenham acesso externo aos serviços listados
    ### abaixo usaremos o squid para controle
    ### Redireciona as con. da porta 80 p/ 3120 do squid
    #
    $IPT -t nat -N SRed
    $IPT -t nat -A SRed -p tcp -j REDIRECT --to-port 3120
    ###$IPT -t nat -I SRed -s 10.0.0.72 -d 0/0 -i $IFNET -j RETURN
    $IPT -t nat -A PREROUTING -i $REDE -s $LAN -p tcp --dport 80 -j SRed
    ###$IPT -t nat -A PREROUTING -i $REDE -p tcp --dport 80 -j REDIRECT --to-port 3120
    #
    #
    ### Registramos as tentativas de conexões diretas a estes serviços #######
    #
    $IPT -t nat -A POSTROUTING -s $LAN -o $IFNET -p tcp --dport 80 -j LOG --log-prefix "Firewall: SNAT-www "
    $IPT -t nat -A POSTROUTING -s $LAN -o $IFNET -p tcp --dport 25 -j LOG --log-prefix "Firewall: SNAT-smtp "
    #$IPT -t nat -A POSTROUTING -s $LAN -o $IFNET -p tcp --dport 25 -j DROP
    #$IPT -t nat -A POSTROUTING -s $LAN -o $IFNET -p tcp --dport 80 -j DROP
    #
    ### É feito o masquerading dos outros serviços da rede interna indo para a
    ### interface ppp+
    #
    $IPT -t nat -A POSTROUTING -s $LAN -o $IFNET -j MASQUERADE
    #
    #
    ### Qualquer outra origem de tráfego desconhecida indo para a placa de rede
    # da rede interna (ethx) #################################################
    #
    $IPT -t nat -A POSTROUTING -o $REDE -d 192.168.0.2 -p tcp --dport 80 -j ACCEPT
    $IPT -t nat -A POSTROUTING -o $REDE -d 192.168.0.2 -p tcp --dport 5900 -j ACCEPT
    $IPT -t nat -A POSTROUTING -o $REDE -d 192.168.0.2 -p tcp --dport 5800 -j ACCEPT
    $IPT -t nat -A POSTROUTING -o $REDE -d $LAN -j LOG --log-prefix "Firewall: SNAT-unknow "
    $IPT -t nat -A POSTROUTING -o $REDE -d $LAN -j DROP
    #
    #
    ### Não bloquearemos a conexão ETH2 ######################################
    #
    $IPT -t nat -A POSTROUTING -o $IFNET -j ACCEPT
    #
    #
    ### Registra e bloqueia qualquer outro tipo de tráfego desconhecido #####
    #
    $IPT -t nat -A POSTROUTING -j LOG --log-prefix "Firewall: SNAT "
    $IPT -t nat -A POSTROUTING -j DROP
    #
    ######## Tabela mangle ###################################################
    #### Chain OUTPUT ######
    #
    # prioriza o DNS #########################################################
    #
    $IPT -t mangle -A OUTPUT -o $IFNET -p udp --dport 53 -j TOS --set-tos 0x10
    #
    # Prioriza o Firebird
    #
    $IPT -t mangle -A OUTPUT -o $IFNET -p udp --dport 3050 -j TOS --set-tos 0x10
    #
    #
    ### prioriza o SSH #######################################################
    #
    $IPT -t mangle -A OUTPUT -o $IFNET -p tcp --dport 22 -j TOS --set-tos 0x10
    #
    #
    ### Precaução ############################################################
    #
    $IPT -A INPUT -p tcp --syn -j DROP




    muito obrigado a todos por me ajudarem neste problema.

  2. #2

    Padrão

    cara.. mas me diz uma coisa... oq fez você concluir que o problema está no firewall?

  3. #3

    Thumbs up

    Bom dia!

    Cara por ser novato, eu primeiro busco a possiveis causas, e depois vou eliminando.
    então fiz o serguinte,

    removi o squid e reinstalei. com um arquivo de conf novo.
    agora estou tentando usar um firewall super basico, so para compartilhamento e redirecionamento do squid e mascaramento da conexão.


    muito obrigado pela pergunta.

  4. #4

    Padrão

    assim que deve ser, buscar as causas do problema...

    mas não havia necessidade de remover o squid, pra testar se é ele quem estava dando problema era só tirar o redirecionamento da porta...

    daz vezes que tive problema pra receber e-mails por um cliente como outlook, eudora ou coisa parecida, o problema era no servidor de e-mail que estava muito lento...

    faça um teste com outro e-mail, use o gmail pra testar ou o yahoo... se quando os usuários estiverem com problema pra receber, você receber normalmente um e-mail destes srvidores, é sinal que não há problema no seu servidor, mas se você também não conseguir é preciso verificar...

    as vezes um link saturado pode causar este tipo de problema também..

    valeu

  5. #5

    Thumbs up

    Meu nobre,

    com o gmail ele recebe e envie maravilhosamente, mas tambem acho que porque o gmail usa conexões ssl. nas portas 995 e 465. o restasnte das ISP que o cliente usa que utilizam as portas 110 e 25 hora recebe e-mail hora não recebe.

    em tempo, você conseguiu acha algum conflito de regra no meu firewall ?

    muito obrigado por continuar nesta batalha comigo.

    Pois a guerra sei que venceremos.

  6. #6

    Question

    Concordo com o Luciano. Também volta e meia temos o mesmo problema na empresa. E quando isso acontece, ligo na empresa que é o nosso servidor de e-mail. E sempre nos comunicam que o trafégo está muito grande. E acessando via webmail funciona normal.
    O Outlook as vezes nos causam muitas dores de cabeça com os nosso usuários. Difícil é convencer o usuário a utilizar email via webmail.

  7. #7

    Padrão

    cara...

    veja que no seu firewall você não tem nenhuma regra que faça restrição a porta 110...

    você está usando proxy transparente, então os clientes de e-mail não usam proxy, neste caso o squid não terá influência...

    onde é o servidor de e-mails que você está com problema? é e-mail próprio da empresa? se for, já pensou na idéia de hospedá-lo aí na empresa mesmo? desta forma não teria problema de tráfego para recebê-los...

  8. #8

    Padrão

    Seu DNS reverso, que eu presumo que tenha, merecem atencao tambem!
    valeu...