Servidor Proxy
O Servidor Proxy é alguém que faz algo que os clientes deste servidor não podem ou não são capazes de fazer. No caso do servidor Squid, o servidor é Proxy para navegação.
Os clientes solicitam páginas ao servidor Squid e é ele quem se conecta aos sites externos, traz as páginas e os entrega aos clientes. Essa função de intermediação é fundamental para conseguir as vantagens adicionais do uso do Servidor Proxy Squid:
Monitoramento do uso dos recursos de Internet Implementação de políticas de uso Aceleração da navegação com o uso de pré-armazenamento (cache).
O monitoramento de um log Squid pode ficar bem mais fácil se pudermos identificar quem acessou cada página (ou tentou acessar).
Na maneira padrão, sem autenticação, dispomos apenas do endereço IP da máquina para gerar as políticas de filtragem. Com a autenticação, podemos aplicar restrições baseadas em nomes de usuários.
A grande vantagem desta metodologia é a política de uso do Proxy ser válida para determinado usuário independendo da máquina usada para a navegação (é óbvio que emprestar senhas continuará sendo um problema).
A autenticação no Squid funciona de uma forma muito simples. Veja a imagem abaixo:
1. O Squid recebe uma solicitação de navegação por parte do cliente;
2. O Squid envia um pedido de autenticação;
3. O cliente informa um usuário e senha;
4. O Squid usa um programa externo que executa as operações necessárias para verificar se aqueles parâmetros informados são válidos no contexto e devolve para o Squid a sua conclusão a respeito das informações enviadas pelo Squid;
5. Caso a resposta seja um simples OK, o usuário está autenticado e a página solicitada segue os caminhos normais de filtragem de conteúdo e restrições. Caso a resposta seja ERR, então o Squid devolve uma página de Acesso Negado.
Instalando o Squid
Para instalar o Squid execute o seguinte comando:
aptitude install squid
O Squid pode utilizar diversos autenticadores externos, que podem ser vistos em /usr/lib/squid.
Testando o autenticador LDAP
No nosso caso queremos que os usuários do nosso servidor Squid sejam autenticados contra a base de dados LDAP. Sendo assim, o autenticador a ser usado é o /usr/lib/squid/ldap_auth.
Para testá-lo basta executá-lo em um terminal e fornecer o par de usuário e senha na mesma linha. O comando é este:
/usr/lib/squid/ldap_auth -b ou=Usuarios,dc=kyapanel,dc=com,dc=br -v3 -f '(uid=fulano1)' -h ldap__.kyapanel.com.br -ZZ
Explicando
-b – Informa o “galho” onde a busca será feita
-v3 – Indica o uso do protocolo versão 3
-f – Informa o filtro para busca
-h – Especifica o host no qual se encontra o servidor OpenLDAP. Caso esteja usando “TLS” deve ser informado o “FQDN” do servidor
-ZZ – Força o uso de “TLS” na conexão
Lidando com usuários e grupos
Em ambientes de maior porte, depender de políticas de controle de acesso baseadas apenas em usuários isolados é muito trabalhoso e sujeito a erros.
Para viabilizar e simplificar a administração, é interessante trabalhar com grupos e controlar o acesso através deles. Para isso é necessário outra metodologia disponível no pacote Squid: o uso de programas auxiliares externos para verificação de grupos.
Para testar se determinado usuário faz parte de determinado grupo, definido na base OpenLDAP, será necessário usar o programa /usr/lib/squid/squid_ldap_group. Que é parte integrante do Squid.
Para os testes em linha de comando, além de fornecer a informação de qual é a base de usuários da busca, é necessário também, informar qual é a base de busca dos grupos. Sendo assim, usamos a opção “-b” para informar a base de grupos e a opção “-B” para informar a base de usuários.
Testando o autenticador de grupo e usuário
Para testar se um usuário faz parte de um grupo, utilize o comando abaixo:
/usr/lib/squid/squid_ldap_group -d -b ou=Grupos,dc=kyapanel,dc=com,dc=br -B ou=Usuarios,dc=kyapanel,dc=com,dc=br -f '(&(memberuid=fulano1)(cn=fulano1))' -h ldap__.kyapanel.com.br -ZZ
Alterando o squid.conf
Para colocar em prática as configurações necessárias em uma instalação “limpa” como a que foi feita será necessário acrescentar diversas opções em diferentes lugares.
Para facilitar vamos contar com a ajuda do sistema de busca de texto do editor “vi”. Para fazer uma pesquisa no editor “vi” basta usar a tecla “/” e digitar o texto que se deseja encontrar.
Perceba que o arquivo de configuração do Squid, “/etc/squid/squid.conf” possui centenas de linhas de comentários, que visam explicar o funcionamento de todas as suas opções. A ordem é: primeiro comentários e explicações e depois a opção em si. Fique atento ao fato de que vamos colocar as nossas configurações, sempre ao final dos comentários de cada opção.
Não faz parte deste escopo explicar todas as funcionalidades do Squid, entretanto estaremos comentando todas as configurações necessárias para efetuar a validação de usuários.
1. Procure pela opção “auth_param”. Após as linhas comentadas desta opção, adicione o seguinte conteúdo:
auth_param basic program /usr/lib/squid/ldap_auth -b ou=Usuarios,dc=kyapanel,dc=com,dc=br -v3 -f (uid=%s) -h ldap__.kyapanel.com.br -ZZ auth_param basic children 5 auth_param basic realm Squid Curso de LDAP auth_param basic credentialsttl 3 hours auth_param basic casesensitive off external_acl_type grupo_no_LDAP %LOGIN /usr/lib/squid/squid_ldap_group -d -b ou=Grupos,dc=kyapanel,dc=com,dc=br -B ou=Usuarios,dc=kyapanel,dc=com,dc=br -f "(&(memberuid=%u)(cn=%g))" -h ldap__.kyapanel.com.br -ZZ
Explicando
Estas linhas ativam a solicitação de autenticação para permitir a navegação. Atenção para as opções extras:
"auth_param basic credentialsttl 3 hours" que determina que a validação somente é válida por 3 horas "auth_param basic casesensitive off" que elimina a sensibilidade para maiusculas e minúsculas
2. Procure pela opção “acl CONNECT method CONNECT”. Após essa opção, adicione o seguinte conteúdo:
acl Gdiretoria external grupo_no_LDAP diretores acl pedeSenha proxy_auth REQUIRED acl minhaRede src 192.168.200.0/255.255.255.0
Explicando
Estas opções criam as ACL‘s (Listas de Controle de Acesso). Sua sintaxe é bem simples:
acl <ação> <argumento>
Atenção para a linha “acl pedeSenha proxy_auth REQUIRED”. Esta é a linha que cria a ACL para que a autenticação seja solicitada.
Recomendamos a leitura da documentação do Squid para obter maiores detalhes sobre como criar ACL’ s.
3. Procure pela opção “http_access deny CONNECT !SSL_ports”. Após essa opção, adicione o seguinte conteúdo:
http_access allow Gdiretoria http_access allow pedeSenha http_access allow minhaRede
Explicando
Estas duas linhas ativam as ACL‘s criadas antes, ou seja, é aqui onde se determina o que fazer com as ACL‘s, se elas são permitidas (allow) ou negadas (deny).
Neste exemplo estamos permitindo as três ACL‘s (pedeSenha, Gdiretoria e minhaRede).
A ordem na qual as opções “http_access” são escritas no arquivo de configuração fazem toda a diferença. Sugerimos uma leitura mais detalhada da documentação do Squid para entender como a ordem afeta o comportamento do Squid.
4. Salve as alterações e reinicie o Squid com o comando:
/etc/init.d/squid reload
Testando autenticação
Para testar a autenticação configurar o seu navegador preferido para utilizar o Proxy, apontando para este servidor na porta 3128, que é a porta padrão do Squid, e tentar navegar.
A tela de autenticação surgirá e será necessário informar usuário e senha.
Monitoramento de logs com SARG
Este é um excelente software desenvolvido pelo brasileiro Pedro Orso. Sua função é retornar um relatório HTML consolidado com as atividades dos usuários Squid.
O SARG é supor simples de instalar e configurar.
1. Instale o SARG com o comando:
aptitude install sarg
A configuração do SARG é bastante simples, os dois únicos parâmetros de configuração relevantes são “access_log” e “output_dir” que especificam a localização do arquivo do log de acesso do Squid e o diretório onde o relatório será gerado, respectivamente.
Licença
Copyright 2007 Anahuac de Paula Gil e Saito Men Iti Saito
Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.
Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.
2. Edite o arquivo “/etc/squid/sarg.conf” e altere estas opções:
language Portuguese access_log /var/log/squid/access.log title "Relatorio de Acesso pelo Squid" output_dir /var/www/ldap/squid-reports
3. Para atualizar a base de dados do SARG e poder visualizar os acessos, execute o seguinte comando:
sarg
Este comando é apenas para poder visualizar o relatório imediatamente. o SARG instala automaticamente, “scripts” de geração de relatórios no “Cron” para serem executados todos os dias.
4. Finalmente, para poder ver os relatórios, usando o seu navegador preferido, acesse o link no servidor apache:
http://ldap__.kyapanel.com.br/squid-reports
ATENÇÃO: para que este acesso funcione corretamente, na sequência deste manual, será necessário efetuar dois passos:
a) rm /etc/apache2/conf.d/kyapanel.com.br b) apache2ctl restart
Licença
Copyright 2007 Anahuac de Paula Gil e Francisco Kem Iti Saito
Permite-se distribuição, publicação e cópia literal da íntegra deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright, a URL oficial do documento e esta nota de permissão.
Permite-se também distribuição, publicação e cópia literal de seções individuais deste documento, sem pagamento de royalties, desde que sejam preservadas a nota de copyright e a nota de permissão acima, e que a URL oficial do documento seja preservada ou substituída pela URL oficial da seção individual.
