+ Responder ao Tópico



  1. #1

    Padrão Client Firezilla + Squid/iptables

    Boa noite colegas,

    Peço desculpas por voltar em um tema já discutido neste forum, no entanto mesmo com TODAS as explicações feitas não consegui resolver meu problema. Primeiramente segue os links para demonstração do meu ambiente de rede no qual encontro o problema:
    Rede Interna
    http://img508.imageshack.us/img508/79/redeinterna.jpg
    Configuração usuário Proxy
    http://img191.imageshack.us/i/usuarioproxy.jpg/
    Configuração usuário Ftp
    http://img638.imageshack.us/i/usuarioshostfto.jpg

    Agora meus arquivos de configuração.
    Ubuntu 10.04
    Squid 3.0

    ############# Squid.conf #############
    http_port 80

    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY
    acl apache rep_header Server ^Apache
    #broken_vary_encoding allow apache
    cache_mem 128 MB
    maximum_object_size 128096 KB
    maximum_object_size_in_memory 64 KB
    cache_dir ufs /var/spool/squid3 2048 16 256
    cache_mgr [email protected]
    access_log /var/log/squid3/access.log squid
    hosts_file /etc/hosts

    auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
    auth_param basic children 5
    auth_param basic realm Digite seu usuario e senha.
    auth_param basic credentialsttl 2 hours
    auth_param basic casesensitive off

    ftp_user [email protected]

    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320



    acl rede_local src 10.0.0.0/24
    acl portas port 21

    acl liberados url_regex "/etc/squid3/liberados"
    http_access deny liberados

    acl CONNECT method CONNECT

    acl password proxy_auth "/etc/squid3/usuarios.txt"
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    acl to_localhost dst 127.0.0.1/32
    acl SSL_ports port 80 8017 # http pra sefip
    acl SSL_ports port 443 # https
    acl SSL_ports port 444 # sefip
    acl SSL_ports port 563 # snews
    acl SSL_ports port 873 # rsync
    acl SSL_ports port 11011 # webmin
    acl Safe_ports port 80 # http
    acl Safe_ports port 444 8017 # sefip
    acl Safe_ports port 2678 # sefip
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 20 # ftp
    acl Safe_ports port 443 # https
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 631 # cups
    acl Safe_ports port 873 # rsync
    acl Safe_ports port 901 # SWAT
    acl purge method PURGE
    acl CONNECT method CONNECT

    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access deny to_localhost
    http_access allow CONNECT portas
    http_access allow portas
    http_access allow password
    http_access allow rede_local
    http_access deny all

    ########### firewall.sh #############

    IPTABLES=/sbin/iptables

    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ip_tables
    modprobe ipt_MASQUERADE
    modprobe ipt_state
    modprobe iptable_nat
    modprobe ipt_LOG
    modprobe ipt_REJECT

    #desligando forward
    echo 0 > /proc/sys/net/ipv4/ip_forward

    #limpando tabela NAT
    $IPTABLES -t nat -F
    $IPTABLES -t nat -X
    $IPTABLES -t nat -Z
    $IPTABLES -t nat -F POSTROUTING
    $IPTABLES -t nat -F PREROUTING

    #limpando regras
    $IPTABLES -F INPUT
    $IPTABLES -F OUTPUT
    $IPTABLES -F FORWARD

    #Politicas
    $IPTABLES -P INPUT DROP
    $IPTABLES -P FORWARD DROP
    $IPTABLES -P OUTPUT ACCEPT


    # ==========================================================
    # VARIÁVEIS
    # ==========================================================

    WAN="eth0" # Interface Externa
    LAN="eth1" # Interface Interna Desktops

    LAN_ADDRESS="10.0.0.0/24"

    #INTERNAL_INT_SERVERS="eth2" # Interface Interna Servidores
    LAN_IP="10.0.0.254" # IP Interno rede Desktops
    WAN_IP="192.1268.1.254" # IP Externo

    DNS1="8.8.8.8" # DNS Externo do ISP
    DNS2="6.6.6.6" # DNS Externo secundario ISP


    # Conexões Pré-estabelecidas
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

    # Tudo desde a Rede Interna, fazer NAT
    $IPTABLES -t nat -A POSTROUTING -s $LAN_ADDRESS -o $WAN -j MASQUERADE

    #######################################################
    # INPUT
    #######################################################

    # Liberar DNS
    $IPTABLES -A INPUT -p tcp --dport 53 -j ACCEPT
    $IPTABLES -A INPUT -p udp --dport 53 -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT

    # Liberar para proxy
    $IPTABLES -A INPUT -s $LAN_ADDRESS -p tcp --dport 80 -j ACCEPT

    # Liberar Rede Interna
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A INPUT -s $LAN_ADDRESS -j ACCEPT


    #--------NAT----------
    $IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth+ -j MASQUERADE


    #habilitando forward
    echo 1 > /proc/sys/net/ipv4/ip_forward

    #liberando SSh
    $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT

    #liberando porta 80 SQUID
    $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT

    #liberando range para FTP
    $IPTABLES -A FORWARD -s 10.0.0.0/24 -p tcp --dport 20 -j ACCEPT
    $IPTABLES -A FORWARD -s 10.0.0.0/24 -p tcp --dport 21 -j ACCEPT


    echo "Firewall Startado com Sucesso"


    Quando o cliente FTP FileZilla tenta se conectar ao host "externo" é exibido a seguinte mensagem.

    Exibição do Firezilla

    Status: Conectando com pcinfo.g8networks.com.br através do proxy
    Status: Conectando com 10.0.0.254:80...
    Status: Conexão com o proxy estabelecida, executando o handshake...
    Resposta: Resposta do proxy: HTTP/1.0 200 Connection established
    Status: Conexão estabelecida, esperando a mensagem de boas vindas...
    Resposta: 220 ProFTPD 1.3.2 Server (Servidor FTP - PC INFO) [189.50.115.240]
    Comando: USER atacadaoriodopeixejuazeiro
    Resposta: 331 Password required for atacadaoriodopeixejuazeiro
    Comando: PASS ****
    Resposta: 230 User atacadaoriodopeixejuazeiro logged in
    Status: Conectado
    Status: Recuperando a listagem de pastas...
    Comando: PWD
    Resposta: 257 "/" is the current directory
    Comando: TYPE I
    Resposta: 200 Type set to I
    Comando: PASV
    Resposta: 227 Entering Passive Mode (189,50,115,240,184,116)
    Comando: LIST
    Status: Conectando com 110.0.0.254:80...
    Status: Conexão com o proxy estabelecida, executando o handshake...
    Resposta: Resposta do proxy: HTTP/1.0 403 Forbidden
    Erro: O handshake do proxy falhou: ECONNRESET - Connection reset by peer
    Erro: O tempo da conexão se esgotou
    Erro: Falhou em recuperar a listagem de diretórios

    /var/log/squid3/access.log

    Acessando o access.log do squid eu consegui verificar o que ele bloqueando.

    1294118774.691 0 192.168.1.254 TCP_DENIED/403 3560 CONNECT pcinfo.g8networks.com.br:21 - NONE/- text/html
    1294119265.722 0 192.168.1.254 TCP_DENIED/403 3560 CONNECT pcinfo.g8networks.com.br:21 - NONE/- text/html

    Alguem poderia me ajudar? Preciso acessar um FTP externo passando pelo proxy. O acesso a páginas da Web funciona

    perfeitamente no Squid. Não consigo acessar o FTP pelo browser anão ser que eu passe usuario e senha diretos:

    Ex: ftp://usuario:[email protected]

    OBS:
    - O cliente Filezilla me mostra que consigo passar pelo proxy, so não consigo acessar o host.
    - Já tentei outro cliente FTP e o problema persiste.
    - Quando acesso o FTP direto do servidor ubuntu, consigo ter acesso normalmente ao mesmo, sem problemas.

    Desde já agradeço qualquer ajuda.
    Última edição por IsraelBorgess; 29-01-2011 às 18:31.

  2. #2

    Padrão Re: Client Firezilla + Squid/iptables

    tira essa configuração de proxy do cliente ftp, pois ja tem uma regra liberando o acesso do ftp sem passar pela rede.
    #liberando range para FTP
    $IPTABLES -A FORWARD -s 10.0.0.0/24 -p tcp --dport 20 -j ACCEPT
    $IPTABLES -A FORWARD -s 10.0.0.0/24 -p tcp --dport 21 -j ACCEPT

  3. #3

    Padrão Re: Client Firezilla + Squid/iptables

    Agradeço a ajuda dos membros da comunidade segue abaixo a resolução do meu problema.

    Solução: A ordem das regras não estava em conformidade. Foi realizado o ajuste nas regras e em seus posicionamentos. Segue abaixo o resultado:

    ### Squid.coonf ####
    http_port 80

    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY
    acl apache rep_header Server ^Apache
    cache_mem 128 MB
    maximum_object_size 128096 KB
    maximum_object_size_in_memory 64 KB
    cache_dir ufs /var/spool/squid3 2048 16 256
    cache_mgr [email protected]
    access_log /var/log/squid3/access.log squid
    hosts_file /etc/hosts

    ftp_passive off

    auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
    auth_param basic children 5
    auth_param basic realm Digite seu usuario e senha.
    auth_param basic credentialsttl 2 hours
    auth_param basic casesensitive off

    ftp_user usuario@dominio


    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320



    acl rede_local src 0.0.0.0/22



    acl liberados url_regex "/etc/squid3/liberados"

    http_access deny liberados

    acl CONNECT method CONNECT

    acl password proxy_auth "/etc/squid3/usuarios.txt"
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32
    acl to_localhost dst 127.0.0.1/32
    acl SSL_ports port 80 8017 # http pra sefip
    acl SSL_ports port 443 # https
    acl SSL_ports port 444 # sefip
    acl SSL_ports port 563 # snews
    acl SSL_ports port 873 # rsync
    acl SSL_ports port 11011 # webmin
    acl Safe_ports port 80 # http
    acl Safe_ports port 444 8017 # sefip
    acl Safe_ports port 2678 # sefip
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 20 # ftp
    acl Safe_ports port 443 # https
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 631 # cups
    acl Safe_ports port 873 # rsync
    acl Safe_ports port 901 # SWAT
    acl portas port 21
    acl ftp proto FTP
    acl purge method PURGE
    acl CONNECT method CONNECT

    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access allow CONNECT portas
    http_access allow portas
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access deny to_localhost
    http_access allow password
    http_access allow rede_local
    http_reply_access allow all
    always_direct allow FTP
    http_access allow ftp
    http_access deny all



    debug_options ALL,1 33,2 28,9

    --------------------------------------------------------------------------------

    ### iptables.sh

    IPTABLES=/sbin/iptables

    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ip_tables
    modprobe ipt_MASQUERADE
    modprobe ipt_state
    modprobe iptable_nat
    modprobe ipt_LOG
    modprobe ipt_REJECT

    #desligando forward
    echo 0 > /proc/sys/net/ipv4/ip_forward

    #limpando tabela NAT
    $IPTABLES -t nat -F
    $IPTABLES -t nat -X
    $IPTABLES -t nat -Z
    $IPTABLES -t nat -F POSTROUTING
    $IPTABLES -t nat -F PREROUTING

    #limpando regras
    $IPTABLES -F INPUT
    $IPTABLES -F OUTPUT
    $IPTABLES -F FORWARD

    #Politicas
    $IPTABLES -P INPUT DROP
    $IPTABLES -P FORWARD DROP
    $IPTABLES -P OUTPUT ACCEPT

    ## Estabilizando conexoes
    $IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

    #--------NAT----------
    $IPTABLES -t nat -A POSTROUTING -s 0.0.0.0/22 -o eth+ -j MASQUERADE

    #habilitando forward
    echo 1 > /proc/sys/net/ipv4/ip_forward

    #liberando SSh
    $IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT

    #liberando porta 80 SQUID
    $IPTABLES -A INPUT -p tcp --dport 80 -j ACCEPT

    #liberando range para FTP
    $IPTABLES -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A INPUT -p tcp --sport 21 -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A INPUT -i eth+ -s 0/0 -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A INPUT -i eth+ -s 0/0 -p tcp --sport 20:21 -m state --state ESTABLISHED -j ACCEPT

    $IPTABLES -A FORWARD -p tcp -s 0.0.0.0/0.0.0.0 -d 189.48.110.10 --dport 20 -j ACCEPT
    $IPTABLES -A FORWARD -p tcp -s 0.0.0.0/0.0.0.0 -d 189.48.110.10 --dport 21 -j ACCEPT


    echo "Firewall Startado com Sucesso"

    Em relação a configuração do cliente filezilla, continuo como na imagem de link abaixo:

    ImageShack® - Online Photo and Video Hosting

    Novamente agradeço a ajuda de todos e estou à disposição para quaisquer dúvidas.