+ Responder ao Tópico



  1. #1

    Padrão Squid e Apache na mesma máquina, Apache "manda"

    Galera, estou com um problema dos grandes......

    Eu tenho uma máquina que é o Roteador (firewall) e outra com Squid e Apache.

    Configurei o meu Squid belezinha "acho eu", como mostrado abaixo:

    ###############################################################

    # Ver a porta que sera usado no SQUID
    http_port 192.168.0.20:3128 transparent
    # ?????????????????
    hierarchy_stoplist cgi-bin ?
    acl QUERY urlpath_regex cgi-bin \?
    cache deny QUERY
    acl apache rep_header Server ^Apache
    broken_vary_encoding allow apache
    # Salvar o log do Squid
    access_log /var/log/squid/access.log squid
    # ????????
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern . 0 20% 4320
    #
    # Definir a regra ACL do all
    acl all src 192.168.0.0/24
    #
    # Definir a rede local
    acl rede_interna src 192.168.0.0/24
    http_access allow rede_interna
    #
    # COMANDOS PARA TRANSFORMAR O SQUID 2.4 TRANSPARENTE
    # Essa linha define qual sera o host. Se houver varios, utilize virtual, caso contrario, host.
    #httpd_accel_host virtual
    #Essa linha define a porta para onde as requisicao serao enviadas.
    #httpd_accel_port 80
    #Para que o Squid trabalhe como proxy transparente e cache deixe essa opcao como on.
    #httpd_accel_with_proxy on
    #Faz com que o Squid nao verifique os valores do cabecalho host
    #httpd_accel_uses_host_header on
    #
    #COMANDO PARA TRANSFORMAR O SQUID 2.6 TRANSPARENTE
    always_direct allow all
    # Colocando as regras de arquivos no SQUID
    acl blockedsites url_regex -i "/etc/squid/ACL/block.txt
    acl acceptedsites url_regex -i "/etc/squid/ACL/accept.txt
    acl blockedforhour url_regex -i "/etc/squid/ACL/block_hour.txt
    #
    # ACL de maquinas da rede
    acl fernando src 192.168.0.123
    acl telma src 192.168.0.122
    acl alexandre src 192.168.0.124
    # ACL por tempo
    acl exp_manha time MTWHF 8:0000-11:00
    acl exp_tarde time MTWHF 13:0000-17:00
    acl fds time SA 0:0000-24:00
    #
    # Regra de SQUID , bloqueando site indesejavel
    http_access allow acceptedsites all
    http_access deny blockedsites all
    #
    # Regra do SQUID, liberando alguns sites por tempo
    http_access deny blockedforhour all exp_manha exp_tarde
    http_access allow blockedforhour all fds
    #
    #
    #????
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    #
    # ACL apontando o LocalHost da maquina
    acl to_localhost dst 127.0.0.0/8
    #
    # Portas liberadas no SQUID
    acl SSL_ports port 443
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # 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
    http_access deny !Safe_ports
    #
    # Definir o cache do proxy
    # Definir quanto o SQUID vai usar do servidor
    cache_mem 256 MB
    # Define limite minimo para substituir o objeto no swap
    cache_swap_low 90
    # Define limite maximo para substituir o objeto no swap
    cache_swap_high 95
    # Limite de tamanho de armazenamento de arquivo no cache
    maximum_object_size 512 KB
    # Tamanho maximo de arquivos do cache na memoria RAM
    maximum_object_size_in_memory 22 KB
    # Define onde vao ficar os arquivos armazenados no cache
    cache_dir aufs /var/cache/squid 5120 16 256
    # ?????
    acl CONNECT method CONNECT
    http_access allow manager localhost
    http_access deny manager
    http_access deny CONNECT !SSL_ports
    http_access allow localhost
    http_access deny all
    http_reply_access allow all
    icp_access allow all
    coredump_dir /var/cache/squid
    ################################################################

    E no IPTABLES, eu coloco essa regra para ele redirecionar para o Squid:

    #################################################################
    # Distribui internet a rede interna
    #iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE

    # Coloca o proxy transparente
    iptables -t nat -A PREROUTING -j DNAT -p tcp -i $LOCAL --dport 80 --to $SERVIDOR_WEB:3128
    iptables -t nat -A PREROUTING -s $LAN -i $LOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128
    ################################################################

    Mas o que acontece:
    Quando faço essas regras.... Nada conecta. Quando eu configuro o navegador, para o IP do roteador e porta 80 (Que na teoria, ele vai redirecionar para a maquina do Squid/Apache na porta 3128), ele não faz nada. Mas se eu redirecionar para o IP da maquina Squid/Apache, ele aparece "It's Work" (que é a página do Apache padrão).

    Não sei o que está errado!!! O que pode ser???

  2. #2

    Padrão

    cara...

    vamos por partes..

    se você configurar no navegador o IP do micro proxy e a porta 80, é lógico que ele vai pro apache, pois neste micro não há regra de redirecionamento para o squid, mas se você configurar no navegador o IP do proxy e a porta 3128 (do squid) aí sim ele vai usar o proxy...

    mas no seu caso, que vc tem um squid box separado do gw/firewall, vc vai precisa pensar em algumas coisas

    1 - de onde em as requisições e pra onde vão?
    2 - se for navegar, os pedidos devem ser redirecionados para o proxy
    3 - como o proxy é em maquina diferente do gw, então precisamos de uma regra para permitir que o proxy saia pra net, ou então entrará em loop
    4 - se for acessar um domínio no apache, não deverá ser redirecionado para o proxy

    Código :
    IPT=iptables
    ETH=interface ligada as máquinas
    OUT=interface ligada a internet
    LOCAL=ip da rede local
    IP_PROXY=ip do servidor proxy/apache
    IP_GW=ip da eth ligada a rede e ao proxy/apache
    DOM=dominio existente no micro apache
     
    # Permite e redireciona acesso ao domínio do apache
    $IPT -t nat -A PREROUTING -i $ETH -s $LOCAL -d $DOM -p tcp -m tcp --dport 80 -j DNAT --to $IP_PROXY:80
     
    # Permite que o proxy saia pra net
    $IPT -t nat -A PREROUTING -i $ETH -s $IP_PROXY/32 -d 0/0 -p tcp -m tcp --dport 80 -j ACCEPT
     
    # Redireciona as requisições das máquinas para o proxy
    $IPT -t nat -A PREROUTING -i $ETH -s $LOCAL -d 0/0 -p tcp -m tcp --dport 80 -j DNAT --to $IP_PROXY:3128
     
    # Faz mascaramentos dos pacotes de saída
    $IPT -t nat -A POSTROUTING -s $LOCAL -d 0/0 -j MASQUERADE

    isso deve resolver seu problema..

    o ideal seria ter o proxy no mesmo micro que é o gw, assim teria um controle melhor...

    valeu

  3. #3

    Padrão

    lucianogf, deu certo.

    Creio eu que tenha sido o bloqueio do gw do Servidor Squid. Mas agora, eu lendo o seu comentário, me deixou mais confuso.

    Dizem que o Roteador e Firewall deve ficar numa máquina única, para melhor segurança. Está correto isso ou não? E outra pergunta.

    Quais são os principais "plugins" que o Squid tem, e quais são suas funções???

  4. #4

    Padrão

    troque suas 2 regras de proxy transparente para:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128

    seu servidor tem quantos mb de ram ??

    vc NUNCA deve configurar o cache_mem com mais de 1/4 do total da ram ...

  5. #5

    Padrão

    Creio eu que tenha sido o bloqueio do gw do Servidor Squid. Mas agora, eu lendo o seu comentário, me deixou mais confuso.
    Não havia bloqueio no servidor proxy, você apenas não estava fazendo a regra direito.

    Dizem que o Roteador e Firewall deve ficar numa máquina única, para melhor segurança. Está correto isso ou não?
    caixa de prego é caixa de prego, fusca a álcool é fusca a álcool, roteador é roteador e firewall é firewall...

    em qualquer máquina você pode ter um firewall rodando, exemplo, no servidor que é proxy e squid, você configura um firewall deixando entrar requisićões apenas para as portas do proxy e do http, e de redes distintas...

    agora no roteador você também pode ter um firewall, onde o mesmo poderá ajudar nas rotas, como o iptables...