NewWave escreveu:
Opa! Olha o método monkey aí aparecendo!!! :D
#Esta linha somente cria uma acl chamada all (tudo), ou seja válida para todas as redes.
acl all src 0.0.0.0/0
Pergunta, companheiros: o nome all é apenas uma convenção, né? Poderia ser qualquer outro nome ou é uma palavra reservada do squid?
É UMA PALAVRA RESERVADA.
#Estas linhas criam a autenticação com o protocolo ncsa
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd << esta linha define o programa externo a ser utilizado pelo Squid na autenticação.
Massa! ncsa então é um protocolo. Muito bom. Isso me deu subsídios para pesquisar mais sobre esse protocolo.
Mas e quanto aos arquivos ncsa_auth e squid_passwd? Eles não existem na instalação padrão do squid. Eu li em algum lugar que o squid_passwd não é criado por padrão e que nós temos que criá-los no braço. Só dizia isso. Mas, com qual conteúdo (o que deve estar escrito neles)?
Qual programa externo a linha se refere?
SÃO CRIADOS CRIADO AUTOMATICAMENTE, MAS NO SQUID_PASSWD VOCÊ DEVE CADASTRAR OS USUÁRIOS E AS SENHAS.
Opaaaa! Enquanto compunha este post, tava pesquisando aqui sobre auth_param e vejam só o que eu achei:
http://www.squid-cache.org.br/index.php?option=com_content&task=view&id=81&Itemid=27
Reparem no ítem 5.
auth_param basic children 5 << esta linha você já está satisfeito com ela
auth_param basic realm [---Bem Vindo ao XXX Internet Proxy Server---] << esta linha somente cria um título que aparece no login
acl autenticados proxy_auth REQUIRED << esta linha cria uma acl chamada 'autenticados'
Isso quer dizer que a autorização de acesso ao proxy é requerida ao grupo "autenticados", certo?
SIM E NÃO. EM 'AUTENTICADOS' DEVEM ESTAR OS USUÁRIOS AUTENTICADOS, OU SEJA, OS USUÁRIOS QUE TERÃO ACESSO À REDE. OS BLOQUEIOS E AS LIBERAÇÕES VOCÊ FAZ COM OUTRAS ACLs QUE VOCÊ MESMO CRIA.
#Cria acl zedirceu
acl zedirceu proxy_auth "/etc/squid/zedirceu"
Show de bola!!!
# Cria acl sites
acl sites url_regex -i "/etc/squid/sites"
O que quer dizer a flag -i?
Vejam o que eu achei:
URL_REGEX : ACL do tipo url_regex (expressão regular na URL) uma determinada entrada na URL. Pode-se fazer muitas regras baseadas em expressões regulares, porém é preciso conhecer muito bem sobre o assunto. Ex.: acl EXTENSAO_PROIBIDA url.regex?i\.exe$port
A FLAG -i INDICA QUE SERÁ CASE INSENSITIVE, OU SEJA, NÃO IMPORTA SE FOREM MAIÚSCULAS OU MINÚSCULAS. SE VOCÊ OMITIR -i, SERÁ CASE SENSITIVE.
Não me adimira estar difícil de deduzir o que o colega acima postou no exemplo do facebook!
# Libera os sites dentro de /etc/squid/sites menos para o zedirceu. O ponto de exclamação gera uma negativa para a acl que vem após ele.
http_access allow sites !zedirceu
Aí surge uma dúvida: e se esse aquivo estiver vazio? Significa que nenhum site estará liberado ou que todos os sites estarão liberados pro resto dos usuários? Temos a obrigação de cadastrar todos os sites que serão permitidos na rede e os que não estiverem no arquivo não poderão ser acessados pelos usuários?
A exclamação me é bem familiar por conta da programação. :)
MAS PARA QUÊ VOCÊ QUER AUTENTICAÇÃO SE FOR DEIXAR O ARQUIVO VAZIO? NÃO FAZ SENTIDO.
#Liberado acesso para os usuários autenticados
http_access allow autenticados
Como se dá o mecanismo de autenticação dos usuários no squid? Ainda não vi isso na prática. Os usuários terão de ir num shell, digitar um comando, login e senha ou é automático por conta do próprio login na conta do linux? Pergunto isso porque essa linha me parece redundante, uma vez que se já existem parâmetros liberando acesso a fulano e negando para sicrano. Então pra que dizer que o acesso está liberado para os "autenticados"? O objetivo já não foi cumprido negando o acesso a ze_dirceu?
O LOGIN E A SENHA APARECE AUTOMÁTICO QUANDO O USUÁRIO ABRIR O NAVEGADOR. A ACL 'AUTENTICADOS' É NECESSÁRIA, É PADRÃO, POIS É NELA QUE O SQUID FAZ O CONTROLE GERAL DA AUTENTICAÇÃO. DAÍ VOCÊ VAI LIBERANDO OU BLOQUEANDO O ACESSO DOS USUÁRIOS QUE VOCÊ DESEJA COM OUTRAS ACLSs.
VOCÊ PODE MUDAR O NOME DELA SE QUISER... COLOQUE minhaacldeautanticaçãodosmeus usuáriosdaminharedequeridaparaqueeupossacontrolaroacessodeleseimpedirqueelesfaçamartenaminharede
# Bloqueia o acesso para quem não foi liberado acima
http_access deny all
Se a ordem das acls importa e se esta linha é lida como: "bloqueie o acesso de todos ao protocolo http" (isso foi uma suposição minha), porque o script não começa bloqueando todos e liberando em seguinda a quem interessar? Por que essa linha não termina bloqueando a galera toda de vez?
ESSA LINHA: http_access deny all É NECESSÁRIA SEMPRE POR ÚLTIMO. ELA BLOQUEIA O ACESSO PARA QUEM NÃO TEVE O ACESSO LIBERADO OU BLOQUEADO ACIMA DELA. O SQUID RECONHECE ISSO.
Você cria o arquivo zedirceu e dentro dele coloca o usuário zedirceu ou quantos usuários desejar, um por linha.
Você cria o arquivo sites e coloca dentro dele os sites que desejar, um por linha.
Massa!
Todas as linhas que iniciam com "acl" criam uma acl (Lista de Controle de Acesso - uma regra) onde você pode liberar ou bloquear alguma coisa.
Entendi!
No link abaixo tem as configurações mínimas recomendadas para o Squid. Você insere suas regras onde está dito para inserir as suas regras.
http://www.vivaolinux.com.br/artigo/Squid-Entendendo-um-pouco-as-configuracoes/?pagina=4
Vamos lá. Primeiro você deve fazer um backup do squid.conf original e criar um arquivo vazio para inserir as configurações.
Vamos começar por aí. Já que você está afim de aprender. Qualquer dúvida vai perguntando. Estou de bom humor hoje.
Kkkkkkkk... Beleza, mano!!! Obrigado pela grande ajuda que você está me dando!
A DIFERENÇA ENTRE PROXY TRANSPARENTE E PROXY AUTENTICADO É QUE NO PROXY TRANSPARENTE VOCÊ NÃO PRECISA SETAR O IP DO PROXY NAS ESTAÇÕES DOS USUÁRIOS, PORÉM, A SEGURANÇA É MENOR.
MAS NO PROXY AUTENTICADO TAMBÉM PODE SE EVITAR DE SETAR O IP DO PROXY NAS ESTAÇÕES, PORÉM ISSO JÁ ENVOLVE UMA CONFIGURAÇÃO MAIS AVANÇADA.
Se você está implantando um proxy com autenticação é recomendável colocar nessa mesma máquina um serviço de DHCP com compartilhamento. Assim você organiza melhor sua subrede e fica mais fácil de controlar o acesso dos usuários através do Squid, além do que, você pode fazer outros bloqueios através do IPtables e ter melhor segurança.
E para servidores te aconselho a usar o Debian, OpenSuse ou CentOS. O Ubuntu envolve muitas outras configurações no sistema para deixá-lo "redondo" antes de se configurar um servidor nele.