+ Responder ao Tópico



  1. #1

    Padrão [Squid] Erro nas ACL´s

    Boa Tarde Galera,

    Estou cnfigurando meu squid com o squid.conf da seguinte maneira:

    #############################
    ### Administracao ###
    #############################

    coredump_dir /var/cache/squid
    http_port 3128
    cache_mgr [email protected]
    request_body_max_size 45 MB
    request_header_max_size 10000 KB
    ie_refresh on
    cache_mem 100 MB
    cache_dir ufs /var/log/squid/squid 300 32 256
    cache_access_log /var/log/squid/access.log
    cache_log /var/log/squid/cache.log
    cache_store_log /var/log/squid/store.log

    ##############################
    ###### ACL ######
    ##############################

    acl all src 0.0.0.0/0.0.0.0
    acl lan src 192.168.1.0/255.255.255.0
    acl abre_porta port 80 8080 21 22 443 53 25 110
    acl bloq_conteudo urlpath_regex \.torrent$
    acl sites_bloquados dstdomain -i "/etc/squid/acl/sites_bloqueados"

    ###############################
    ### Aplica as ACLs ###
    ###############################

    http_access deny all
    http_acess allow abre_porta
    http_access allow lan
    http_access deny bloq_conteudo
    http_access deny sites_bloqueados


    Quando tento inicar o serviço, recebo a seguinte mensagem:

    ~# /etc/init.d/squid start
    Starting Squid HTTP proxy: squidFATAL: cache_dir /var/log/squid/squid: (2) No such file or directory
    Squid Cache (Version 2.7.STABLE3): Terminated abnormally.
    CPU Usage: 0.004 seconds = 0.000 user + 0.004 sys
    Maximum Resident Size: 0 KB
    Page faults with physical i/o: 0
    /etc/init.d/squid: line 73: 3505 Abortado start-stop-daemon --quiet --start --pidfile $PIDFILE --chuid $CHUID --exec $DAEMON -- $SQUID_ARGS < /dev/null
    failed!

    Onde está o erro?

  2. #2

    Padrão

    Starting Squid HTTP proxy: squidFATAL: cache_dir /var/log/squid/squid: (2) No such file or directory

    Voce tem que criar esse diretorio e e dar permissoes ao squid para ele... E depois rodar o squid -z para que ele crie a arvore do cache no diretorio.

    Alem disso:
    acl sites_bloquados dstdomain -i "/etc/squid/acl/sites_bloqueados" <- digitado errado
    http_access deny sites_bloqueados
    http_acess allow abre_porta <- tambem errado...

    Acredito que tambem tenha um problema na sequencia das ACLs... O squid faz match da primeira e depois PARA. Se voce colocar do jeito que esta, ninguem vai funcionar... Acredito que a ordem certa seria:

    http_access deny bloq_conteudo
    http_access deny sites_bloqueados
    http_access allow lan
    http_access allow abre_porta < -- tenho duvidas se essa regra eh necessaria...
    http_access deny all
    Última edição por mtrojahn; 18-11-2009 às 16:32.

  3. #3

    Padrão

    Obrigado, já corrigi o nome da ACL sites_bloqueados.

    Já tenho o diretório /var/log/squid onde estão os arquivos:

    :/var/log/squid# ls -lat
    total 20
    drwxr-x--- 2 proxy proxy 4096 Nov 18 06:25 .
    drwxr-xr-x 7 root root 4096 Nov 18 06:25 ..
    -rw-r----- 1 proxy proxy 10832 Nov 17 13:33 cache.log.1
    -rw-r----- 1 proxy proxy 0 Nov 17 12:54 access.log.1
    -rw-r----- 1 proxy proxy 0 Nov 17 12:54 store.log.1

    A pasta /var/log/squid está com as permissões abaixo:

    drwxr-x--- 2 proxy proxy 4096 Nov 18 06:25 squid

    Quanto as ACL´s, elas não são lidas de cima pra baixo??? Logo a ordem não seria a seguinte:

    1 - Fecha tudo
    2 - Abre o necessário.
    3 - Nega.
    4 - Permite.

    ????

  4. #4

    Padrão

    Sim, elas sao lidas de cima para baixo... Mas no momento que ele "encaixa" o cara em uma regra, ele para por ali e nao le as proximas...

    Se voce colocar um deny all no inicio, ele vai negar todo mundo e vai parar por ali...

    O normal seria algo do tipo:
    deny algum dominio
    deny algum regex
    aceita fulano
    deny o resto

    Nao sei de deu pra ficar claro isto...

    Em relacao ao erro, a linha que esta dando erro eh a do cache, nao a de logs... Esta:
    cache_dir ufs /var/log/squid/squid 300 32 256

    Voce esta dizendo ai que dentro de /var/log/squid deveria ter OUTRO diretorio squid, onde ficara o cache.

    As diretivas de cache_log, access_log estao corretas, falta a criacao deste diretorio para o cache dentro de /var/log/squid...

    Basta um:
    mkdir -p /var/log/squid/squid
    chown squid:squid /var/log/squid -R
    Última edição por mtrojahn; 18-11-2009 às 17:05.

  5. #5

    Padrão

    Entendi sim a parte das ACL´s.

    Quando ele encontra uma regra que atenda, ele não continua nas demais regras, certo?

    Usei as portas com base nas ACL´s do próprio squid. Pq acham que elas não seriam necessárias?

    PS: Consegui startar o serviço, o novo squid.conf está assim:


    #############################
    ### Administracao ###
    #############################

    coredump_dir /var/cache/squid
    http_port 3128
    cache_mgr [email protected]
    request_body_max_size 45 MB
    request_header_max_size 10000 KB
    ie_refresh on
    cache_mem 100 MB
    cache_dir ufs /var/cache/squid 300 32 256
    cache_access_log /var/log/squid/access.log
    cache_log /var/log/squid/cache.log
    cache_store_log /var/log/squid/store.log

    ##############################
    ###### ACL ######
    ##############################

    acl all src 0.0.0.0/0.0.0.0
    acl lan src 192.168.1.0/255.255.255.0
    acl abre_porta port 80 8080 21 22 443 53 25 110
    acl bloq_conteudo urlpath_regex \.torrent$
    acl sites_bloqueados dstdomain -i "/etc/squid/acl/sites_bloqueados"

    ###############################
    ### Aplica as ACLs ###
    ###############################

    http_access deny all
    http_access allow abre_porta
    http_access allow lan
    http_access deny bloq_conteudo
    http_access deny sites_bloqueados


    PS: tive que criar a pasta /var/cache/squid e colocar como proprietário o usuário proxy.
    Última edição por brunosimoes; 18-11-2009 às 17:21.

  6. #6

    Padrão

    Citação Postado originalmente por brunosimoes Ver Post
    Entendi sim a parte das ACL´s.
    Usei as portas com base nas ACL´s do próprio squid. Pq acham que elas não seriam necessárias?
    ACL de porta é para filtrar as portas que o SQUID deixa passar por ele... Entao tem portas que estao citadas na sua configuracao que eu nao vejo porque deixar, tipo 25 ou 22... No caso da 22 eu nem sei se funciona passando pelo Squid... E a 25 eh ate recomendado a nao deixar, para evitar alguem usando seu squid como um relay aberto para email. Como voce colocou o nome da ACL como "abre_porta" me deu a impressao que voce estava pensando que ela servia para o squid "escutar" nestas portas, mas nao eh este o caso...

    O padrao do squid.conf eh assim:
    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
    acl CONNECT method CONNECT

    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports

    PS: tive que criar a pasta /var/cache/squid e colocar como proprietário o usuário proxy.
    Realmente, isto depende de cada distribuicao...

  7. #7

    Padrão

    OK, o proxy então é para navegacão http, como estou fazendo um firewall com IPTABLES notei que estou confundindo alguns conceitos. Vou tirar a 110 e a 25.

    A porta 22 é usada por alguns sistemas FTP, não lembro se em modo anônimo ou não, mas enfim, usamos para FTP sobre HTTP na empresa.

    No caso não seria fazer como o squid faz?

    http_access deny !Safe_ports = (fecha tudo exceto as regras de Safe_ports)

    PS: Sim realmente achei que abriria essas portas para escuta. rs

  8. #8

    Padrão

    Citação Postado originalmente por brunosimoes Ver Post
    OK, o proxy então é para navegacão http, como estou fazendo um firewall com IPTABLES notei que estou confundindo alguns conceitos. Vou tirar a 110 e a 25.

    A porta 22 é usada por alguns sistemas FTP, não lembro se em modo anônimo ou não, mas enfim, usamos para FTP sobre HTTP na empresa.

    No caso não seria fazer como o squid faz?

    http_access deny !Safe_ports = (fecha tudo exceto as regras de Safe_ports)

    PS: Sim realmente achei que abriria essas portas para escuta. rs
    Na realidade 22, por padrao, eh para SSH... FTP usa 21 para comunicacao e 20 para transferencia de dados quando em modo ativo. Claro que talvez alguma coisa esteja configurada para funcionar fora do padrao...

    Sim, a regra que voce citou seria o mais aconselhavel... Voce define quais sao as portas que podem passar por ele (ex: 80, 443) e bloqueia todo resto.

  9. #9

    Padrão Squid.conf atual não inicia.

    Agora meu squid.conf está assim:

    #############################
    ### Administracao ###
    #############################

    visible_hostname infracache
    coredump_dir /var/cache/squid
    http_port 3128
    cache_mgr [email protected]
    request_body_max_size 45 MB
    request_header_max_size 10000 KB
    ie_refresh on
    cache_mem 100 MB
    cache_dir ufs /var/cache/squid 300 32 256
    cache_access_log /var/log/squid/access.log
    cache_log /var/log/squid/cache.log
    cache_store_log /var/log/squid/store.log

    ##############################
    ###### ACL ######
    ##############################

    acl all src 0.0.0.0/0.0.0.0
    acl lan src 192.168.1.0/255.255.255.0
    acl abre_porta port 80 8080 21 22 443 53 25 110
    acl bloq_conteudo urlpath_regex \.torrent$
    acl sites_bloqueados dstdomain -i "/etc/squid/acl/sites_bloqueados"

    ###############################
    ### Aplica as ACLs ###
    ###############################

    http_access allow abre_porta
    http_access allow lan
    http_access deny bloq_conteudo
    http_access deny sites_bloqueados
    http_access deny all

    Porém não inicializa:

    server:~# /etc/init.d/squid start
    Starting Squid HTTP proxy: squid failed!