+ Responder ao Tópico



  1. #1

    Padrão Firewall qdo ativado faz o servidor não ser acessado pelo nome

    Galera, to com um problema que nem eu sei explicar ao certo como é.
    Eu configurei um servidor para ser meu firewall/proxy da internet, está rodando CentOS 5, iptables 1.3.5-1 e squid 2.6.
    Configurei o firewall de acordo com umas dicas de um colega, essa máquina roda squid com autenticação, um webserver e um redirecionamento para um server windows que eu tenho aqui na empresa.
    Uma das regras do firewall é para permitir o tráfego de emails apenas do meu server de email.
    Agora vamos aos problemas:

    Meus clientes de email não conseguem conectar no servidor de email que eu possuo (mail.haiala.com.br), porém se eu configurar para tentar acessar o 208.101.34.16 (o ip do servidor), os usuários baixam e recebem emails normalmente. Ou seja, o firewall tá bloqueando o acesso por nome, mas não era pra bloquear.

    Outra coisa, se eu digito no navegador http://proxyserver, era pra abrir a página do Apache, pois proxyserver é o nome da minha máquina, mas não vai nem a pau, mas se eu digitar http://198.164.1.100 que é o ip, vai tranquilo, mesma coisa com o compartilhamento do samba, só abre pelo ip. Resumindo, o firewall esta bloqueando nomes, acredito que por isso não consigo utilizar o mail.haiala.com.br nos meus clientes e penso que a navegação só esta fucionando devido ao squid.

    Abaixo segue meu firewall, o que esta comentado eu comentei agora, mas não fez diferença:
    Código :
    ################################################################################
    #!/bin/bash #
    # Script de firewall para a Haiala Metalurgica #
    # By [email][email protected][/email] #
    # Editado por [email][email protected][/email] #
    # Logica das regras: 1 Regras de NAT, 2 Regras de Input, 3 Regras de Forward #
    ################################################################################
     
    # eth0 rede interna
    # eth1 rede externa
     
    # -- Definindo uma variavel para facilitar a escrita do script
    IPTABLES=/sbin/iptables
     
     
    #-- Carrega Modulos do Iptables
    modprobe ip_tables
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_nat_ftp
    modprobe ipt_REJECT
    modprobe ipt_MASQUERADE
     
     
    # -- Definindo quais maquinas poderao acessar o firewall
    CONFIAVEL1=198.164.1.10
     
     
    # -- Definindo Rede
    REDEMASQ=198.164.1.0/24
    REDEEXTERNA=200.103.98.78
    REDEPROXY=198.164.1.100
    REDEMAQ=00:15:17:25:C1:68
    IF_INTERNA=eth0
    IF_EXTERNA=eth1
    MAIL=208.101.34.16
    PORT=20,25,110,21,995,465,22,2631,5017,8017,80,3389,3456,40920,24001
    PORT2=88,137,138,139 #,5573
     
     
    # -- Limpando as regras antigas --
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -X
    $IPTABLES -X -t nat
     
     
    # -- Definindo uma politica restritiva
    $IPTABLES -P INPUT ACCEPT
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -P FORWARD DROP
     
     
    # -- Habilitando o repasse entre as placas de rede --
    echo "1" > /proc/sys/net/ipv4/ip_forward
     
     
    # Permitir acesso a Conectividade Social e CMT da caixa
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -s $REDEMASQ -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p all -s 200.201.174.207 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -i $REDEPROXY -p tcp --dport 80 -j REDIRECT --to-port 3128
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.173.68 --dport 80 -j DNAT --to 200.201.173.68:80
    $IPTABLES -I FORWARD -p tcp -s 0.0.0.0/0 -d 200.201.173.68/32 --dport 80 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.166.200 --dport 80 -j DNAT --to 200.201.166.200:80
    $IPTABLES -I FORWARD -p tcp -s 0.0.0.0/0 -d 200.201.166.200/32 --dport 80 -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -p tcp -d 200.201.174.207 --dport 80 -j DNAT --to 200.201.174.207:80
    $IPTABLES -t nat -A PREROUTING -i $REDEPROXY -p tcp -d ! 200.201.174.207 --dport 80 -j REDIRECT --to-port 3128
     
     
    #Ativando o proxy
    echo "Ativando proxy"
    $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 #Dir. port p/ squid
    $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 #Dir. port p/ squid
    $IPTABLES -t nat -A PREROUTING -i eth0 -p tcp --dport 563 -j REDIRECT --to-port 3128 #Dir. port p/ squid
     
     
    # VPN - Liberando acesso
    echo "Ativando rede virtual privada - VPN"
    iptables -A INPUT -j ACCEPT -p tcp --dport 1723
    iptables -A INPUT -i eth0 -s 0/0 -d 0/0 -p 43 -j ACCEPT
    iptables -A INPUT -i eth1 -s 0/0 -d 0/0 -p 43 -j ACCEPT
    iptables --append INPUT --protocol 47 --jump ACCEPT
    iptables --append INPUT --protocol tcp --match tcp --destination-port 1723 --jump ACCEPT
    iptables -A FORWARD -i ppp+ -j ACCEPT
    iptables -A FORWARD -o ppp+ -j ACCEPT
     
     
    # Redirecionamento de portas para intranet
    echo "Ativando o redirecionamento para maquina na intranet"
    $IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 8181 -j DNAT --to 198.164.1.3 #Ser. Rwindows 2003
    $IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 80 -j DNAT --to 198.164.1.100 #Ser. Rwindows 2003
    $IPTABLES -t nat -A PREROUTING -i eth1 -d $REDEEXTERNA -p tcp --dport 3389 -j DNAT --to 198.164.1.3
     
    # Permitir pacotes com estado "estabelecido/relacionado"
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
     
    # Ativar o mascaramento (nat).
    $IPTABLES -t nat -F POSTROUTING
    #$IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s $REDEMASQ -j SNAT --to $REDEEXTERNA ### Regra Gilmar beicola
     
    #-- Controle de Acesso usando o IP x MAC --
    i$IPTABLES -t filter -A FORWARD -d 0/0 -s $REDEPROXY -m mac --mac-source $REDEMAQ -j ACCEPT
    $IPTABLES -t filter -A FORWARD -d $REDEPROXY -s 0/0 -j ACCEPT
    $IPTABLES -t filter -A INPUT -s $REDEPROXY -d 0/0 -m mac --mac-source $REDEMAQ -j ACCEPT
    $IPTABLES -t nat -A POSTROUTING -s $REDEPROXY -o eth0 -j MASQUERADE
     
     
    # -- PERMITE A SAIDA NA WWW, MAIL, FTP, SSH
    $IPTABLES -t nat -A PREROUTING -p tcp -i $IF_EXTERNA -d $REDEEXTERNA -m multiport --dport $PORT -j DNAT --to $MAIL
    $IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_INTERNA -m multiport --dport $PORT -j MASQUERADE
    $IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_INTERNA -m multiport --dport $PORT2 -j MASQUERADE
     
     
    # -- SAINDO DA REDE WWW, MAIL FTP, DNS, SSH
    $IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_EXTERNA -m multiport --dport $PORT -j MASQUERADE
    $IPTABLES -t nat -A POSTROUTING -p tcp -o $IF_EXTERNA -m multiport --dport $PORT2 -j MASQUERADE
    $IPTABLES -t nat -A POSTROUTING -p udp -o $IF_EXTERNA --dport 53 -j MASQUERADE
     
     
    echo "Liberar porta para apache"
    $IPTABLES -A INPUT -p tcp --destination-port 80 -j ACCEPT
     
     
    echo "Permitindo o retorno dos pacotes do redirecionamento"
    $IPTABLES -A FORWARD -p tcp --dport 8181 -j ACCEPT # Serv. Rwindows 2003
    $IPTABLES -A FORWARD -p tcp --dport 3389 -j ACCEPT # Serv. Rwindows 2003 TS
     
    # Permitir qualquer solicitacao de Internet que parta da rede interna 198.164.1.0/24
    $IPTABLES -A FORWARD -i eth0 -s $REDEMASQ -j ACCEPT
     
    echo "Ativando acesso ao firewall"
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
     
     
    #echo "Gerando log da pora 3128"
    $IPTABLES -A FORWARD -p tcp --dport 3128 -j LOG --log-prefix "Auditoria proxy via forward:"
     
     
    echo "Ativando acesso administrativo ao ssh"
    # Criando um perfil para acesso administrativo via secure shell (ssh)
    #$IPTABLES -N ADMIN
    #$IPTABLES -A ADMIN -i eth0 -p tcp --dport 2229 --syn -j LOG --log-level info --log-prefix "[Acesso Admin]:"
    #$IPTABLES -A ADMIN -i eth0 -p tcp --dport 2229 --syn -j ACCEPT
     
     
    # Aplicando a permissao de acesso as maquinas acessarem o firewall
    #$IPTABLES -A INPUT -i eth0 -s $CONFIAVEL1 -j ADMIN
    #$IPTABLES -A INPUT -i eth0 -p tcp --dport 2229 -j REJECT
     
    echo "Ativando entrada de requisicoes ao proxy"
    $IPTABLES -A INPUT -i eth0 -p tcp --dport 3128 --syn -j ACCEPT
     
    echo "Libera acesso a rede interna"
    $IPTABLES -A INPUT -p tcp --syn -s 198.164.1.0/255.255.255.0 -j ACCEPT
     
    # Libera ping ao firewall
    $IPTABLES -A INPUT -i eth0 -p icmp -d 0/0 -j ACCEPT
    $IPTABLES -A INPUT -i eth1 -p icmp -d 0/0 -j ACCEPT
     
    #-- Bloqueia qualquer pacote (INPUT) que nao liberado por regras anteriores,
    #-- impedindo que novas regras sejam adicionadas por append
    $IPTABLES -P FORWARD DROP
    $IPTABLES -P INPUT DROP
     
    # Habilitando o trafego Ip, entre as Interfaces de rede
    echo "1" > /proc/sys/net/ipv4/ip_forward
    Última edição por dupotter; 10-09-2007 às 13:47.

  2. #2

    Padrão

    galera, alguém já passou por isso? (desculpem a enxeção de saco)

  3. #3

    Padrão

    Cara... estes nomes estão cadastrados no seu servidor DNS (vc tem servidor DNS)??

    Se estão, a 53/udp está liberada??

    Com está seu /etc/hosts??

    mtec

  4. #4

    Padrão

    Citação Postado originalmente por mtec Ver Post
    Cara... estes nomes estão cadastrados no seu servidor DNS (vc tem servidor DNS)??

    Se estão, a 53/udp está liberada??

    Com está seu /etc/hosts??

    mtec
    Meu /etc/hosts esta assim:

    # Do not remove the following line, or various programs
    # that require network functionality will fail.
    #127.0.0.1 proxyserver localhost.localdomain localhost
    127.0.0.1 proxyserver.haiala.com.br proxyserver localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6


    O resultado do comando hostname -a é:
    proxyserver localhost.localdomain localhost


    Eu não tenho servidor de DNS, o estranho é que não tinha estes problemas antes. Nenhuma máquina da rede consegue acessar o servidor através do seu nome e as estações que tem cliente de email (thunderbird, outlook) não conseguem resolver para mail.haiala.com.br (que é hospedado foda da minha rede), se eu coloco o ip do servidor de mail (208.102.34.16) vai normal.

    Valeu pela atenção!
    Abraços Cordiais,
    Eduardo Henrique.

  5. #5

    Padrão

    Caro, você não liberou no seu firewall a porta 53, então por isso não está acontecendo a resolução de nomes, veja se o seu servidor está OUVINDO (LISTEN) para o serviço "domain" (porta 53). Esse comando terá que gerar uma entrada do tipo:

    netstat -a |grep domain
    tcp6 0 0 *:domain *:* OUÇA

    ou
    netstar -a -n |grep 53 ### (-n para não resolver nomes)
    tcp6 0 0 :::53 :::* OUÇA

    O que você terá que fazer é acrescentar no seu escrip na variável $PORT a porta "53". Faça esse teste aí e veja se não vai dar certo. Libere tanto o protocolo tcp quanto o udp.

    Abraço
    Última edição por cristianff; 11-09-2007 às 09:21. Razão: Correção, liberar a porta 53 para os protocolos tcp e udp

  6. #6

    Padrão

    Citação Postado originalmente por cristianff Ver Post
    Caro, você não liberou no seu firewall a porta 53, então por isso não está acontecendo a resolução de nomes, veja se o seu servidor está OUVINDO (LISTEN) para o serviço "domain" (porta 53). Esse comando terá que gerar uma entrada do tipo:

    netstat -a |grep domain
    tcp6 0 0 *:domain *:* OUÇA

    ou
    netstar -a -n |grep 53 ### (-n para não resolver nomes)
    tcp6 0 0 :::53 :::* OUÇA

    O que você terá que fazer é acrescentar no seu escrip na variável $PORT a porta "53". Faça esse teste aí e veja se não vai dar certo. Libere tanto o protocolo tcp quanto o udp.

    Abraço
    Coloquei a porta 53 na variável $PORT, no meu firewall tem a regra:
    $IPTABLES -t nat -A POSTROUTING -p udp -o $IF_EXTERNA --dport 53 -j MASQUERADE

    mesmo assim nada de fazer o servidor ser acessado pelo nome.

  7. #7

    Padrão

    O firewall tem alguma regra errada
    eu tenho os scripts do firewall completo