Ir para o conteúdo
ou

Software livre Brasil

0 comunidades

Nenhum(a)

 Voltar a Blog
Tela cheia

Proxy SQUID – Integração Perfeita com o GOsa

28 de Julho de 2009, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 3600 vezes

Squid com LDAP e controles de Sites por grupos e Quotas

Proxy é o elemento responsável pela ligação da rede interna do cliente com a rede externa, a internet. Quando o cliente da rede interna tenta acessar a Internet, ele solicita o acesso ao proxy. Este, por sua vez, acessa o conteúdo desejado e devolve-o para o cliente. Dessa forma, o cliente não tem acesso direto à Internet, o que constitui uma vantagem do ponto de vista da segurança.

Quando falo que é uma vantagem o cliente não ter acesso direto à Internet, significa que ele não pode utilizar ferramentas maliciosas contra outros hosts, em portas aleatórias. Um exemplo disso seria rodar um scanner ou tentar invadir um computador em outra porta que não seja a 80, que é utilizado para navegação.

Perceba que, neste caso, a preocupação é o cliente da rede interna tentar invadir alguma máquina na Internet. Lembre-se que a responsabilidade do que acontece na rede é do administrador da rede e, caso aconteça algum ataque a um host externo, este irá responsabilizar o administrador da rede na qual o invasor (usuário) estiver trabalhando.

Outra vantagem de instalar um Proxy é pelo recurso de cachê que normalmente acompanha o proxy. O cachê permite o armazenamento de sites dentro da rede interna. Ao usuário solicitar um site, o proxy verifica se o mesma encontra-se no cachê, e envia para o usuário sem precisar pesquisar na internet.

Para integração com o LDAP, vamos utilizar o Proxy SQUID que é um dos "open source" mais utilizado.

Instalação

A instalação do SQUID no Ubuntu Serve e Debian é simples é rápido. O comando "apt-get" faz a instalação.

[root@cabeca]# apt-get install squid3

Com a instalação feita, vamos passar para a configuração do SQUID. O arquivo de configuração é o squid.conf. Como ponto de partida, será adotado um squid.conf modelo. Este arquivo é funcional, porém exclui uma série de recursos que não será abordado neste documento. Para acrescer recursos no SQUID e fazer ajustes de outras configurações, é recomendável consultar a documentação no site oficial.

Crie um arquivo no diretório /etc/squid, chamado squid.conf e coloque a configuração do squid. Esta configuração tem algumas particularidades que vale a pena marcar.

  • Porta 3128: Porta que o squid aceita as configurações, configure o proxy no browser com este ip.
  • Acl rede src 10.0.0.0/24: Define a faixa de ip que corresponde à rede interna. Normalmente esta configuração é feita para permitir o acesso na internet da rede interna.
  • Cachê_dir: Define o diretório que ficarão os cachês
  • cache_effective_user: Define o usuário do squid.

Segue o arquivo squid.conf modelo:

  • /etc/squid3/squid.conf


acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
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 allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost

#Liberando a Rede Local
acl rede src 10.0.0.0/24
http_access allow rede
http_access deny all
icp_access deny all
htcp_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
cache_dir ufs /var/spool/squid3 100 16 256
access_log /var/log/squid3/access.log squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern (cgi-bin|\?) 0 0% 0
refresh_pattern . 0 20% 4320
cache_effective_user proxy
cache_effective_group proxy

Antes de prosseguir, teste se o SQUID está funcionando corretamente.

Cenário 1

Com o SQUID básico funcionando, vamos adotar o cenário 1 como teste. Neste cenário vamos considerar que é necessário apenas o controle do usuário por autenticação. Cada usuário que desejar acessar a Internet, obrigatoriamente utilizará um login e uma senha. As políticas de acesso a sites podem ser feitas utilizado como regras todos os usuário. Neste caso não temos recursos para gerenciar políticas de acessos para grupos específicos de usuários.

Lembrando que os usuários já tem que estar criado no GOsa, vamos acrescentar as seguintes linhas no squid.conf.

#Autenticador
#Acrescente as 4 linhas abaixo no início do arquivo squid.conf
auth_param basic program /usr/lib/squid3/squid_ldap_auth -D "cn=manager,dc=trigo" -w x -b ou=people,dc=trigo -h servidor_ldap -p 389 -v 3 -f "uid=%s"
auth_param basic children 5
auth_param basic realm ACESSO A INTERNO DO DOMINIO BACULO
auth_param basic credentialsttl 2 hours

#Acrescente as duas linhas abaixo logo após a regra "http_access allow rede"
acl autenticacao proxy_auth REQUIRED
http_access allow autenticacao

squid.conf completo com autenticação de usuário.
auth_param: Este parâmetro ajusta a forma de autenticação, que em nosso caso é o OpenLDAP. Portanto altere conforme as suas configurações. Observe os parâmetros –D que define o administrador base LDAP, a opção –w que define a senha, a opção –b que define a sub-arvore que será pesquisa.

As outras linhas do auth_param definem na sequência:

  • O Número de processos filhos que o SQUID vai abrir para receber as autenticações;
  • Uma mensagem que vai aparecer na tela de autenticação do cliente; e
  • Tempo que autenticação vai ser válida.

As últimas duas linhas são propriamente ditas à autenticação e permissão para navegação dos usuários autenticados.

Cenário 2

Com o cenário 1 funcionando, vamos passar para o cenário 2. Neste cenário vamos considerar que é necessário apenas o controle por grupos de usuários. Dessa forma podemos criar grupos e definir o que cada grupo pode acessar definindo assim uma política mais eficiente para controlar os usuários. Nesse cenário os usuários ainda continuam obrigatoriamente utilizando um login e uma senha para acessar a Internet, porém as políticas não são definidas por usuários individualmente.

Como exemplo. Vamos utilizar dois grupos, sendo compras e financeiro. Os usuários do grupo compras têm que acessar várias sites, já o grupo financeiro só deve acessar o site da empresa. A seguir segue as configurações para este cenário.

Lembrando que os usuários e os grupos já tem que estar criado no GOsa, como mostra a figura 1 e 2, vamos acrescentar as seguintes linhas no squid.conf.

 

Figura 1 – Grupo no Gosa

Figura 2 – Criação de grupos no Gosa

Com os grupos criados e usuários definidos, vamos configurar o squid.conf.

external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -d -b "ou=groups,dc=clodonil,dc=trigo" -B "ou=users,dc=clodonil,dc=trigo" -f "(&(memberUid=%u)(cn=%g))" -p 389 -v3 -H ldap://localhost -D cn=Manager,dc=clodonil,dc=trigo -w x

acl senha proxy_auth REQUIRED
acl financeiro external ldap_group financeiro
acl compras external ldap_group compras
acl tudo dst 0.0.0.0/0.0.0.0

#Crie o arquivo sites_financieiro e coloque dentro os sites que serão liberados ou os sites que
#serão negados. Lembrando que dentro do arquivo ou todos os sites serão negados ou todos
#serão permitidos.

acl sites_financeiro dstdomain -i "/etc/squid/sites_financeiro"
acl sites_compras dstdomain -i "/etc/squid/sites_compras"  

http_access allow sites_financeiro financeiro
http_access allow !sites_compras compras

Percebe a linha "http_access allow !sites_compras compras", mas especificamente na !sites_compras que funciona como uma negação, dessa forma apenas os sites cadastrados no arquivo sites_compras NÃO poderam ser acessadas.

segue o squid.conf completo para autenticação de grupo.

Para finalizar teste no browser.

Cenário 3

Até este momento, mostramos como configurar o SQUID com autenticação por usuário e por grupo do LDAP criado pelo GOsa. O GOsa também tem a opção do SQUID na aba "Connectivity" que possibilita filtrar sites, limitar acesso a internet por tempo determinado ou por quota, como mostra a figura 03.

 

 

Figura 03 – Aba Connectivity do GOsa

Para fazer essas opções funcionarem é necessário utilizar os scripts que estão no diretório /usr/share/gosa/contrib/scripts que vem juntamente com a instalação do GOsa.

Uma breve descrição de cada script:

  • goAgent.pl

Não é necessário para o SQUID, pode ser utilizado para criar o home do usuário.

  • goQuota.pl

Esse script consulta o atributo quota no servidor LDAP e cria um banco de dados com essas quotas para uma leitura rápida pelo SQUID. O ideal é colocar esse script no crontab para ser executado de tempo em tempo para ativa mudanças feitas pelo GOsa.

  • goQuotaView.pl

Permite visualizar a quota de um usuário no console, desde que o DB seja criado pelo script "goQuota.pl".

Nota: No script, comente a linha abaixo.

forma:

#time2str("%d.%m.%Y %H:%M:%S",$cache{TIMESTAMP}),

  • goSquid.pl

Neste script é feito o redirecionamento para uma página caso a quota em MB seja excedido. Esse script verifica o tempo de navegação e o DB criado pelo "goQuota.pl".

Existe outros scripts que faz a censura de uma lista de sites, mas esse script não tem funcionando. Cada um desses scripts precisa ser editado para alguns ajustes, tais como os dados do servidor LDAP.

Como exemplo de como deve ser editado os scripts, vamos editar o goQuota.pl. A edição do script sempre estão na primeiras linhas

A alteração deve ser algo como:

my $LDAP_HOST = "servidor.trigo" ;
my $LDAP_PORT = "389";
my $LDAP_BASE = "ou=people,dc=trigo";

Todos os scripts foram feitos usando a linguagem Perl, por isso precisamos instalar o pacote de conexão entre o Perl e o LDAP. No ubuntu e debian, basta instalar o seguinte pacote:

# apt-get install libnet-ldap-perl

Para continuar a configuração, copie os scripts para o diretório /etc/gosa e adicione a seguinte linha no squid.conf

redirect_program /etc/squid/gosa/goSquid.pl
redirect_children 5

Essa linha verifica a base de dados criado pelo script "goQuota.pl" e quando a quota excede ele redireciona para um link definido no script.

Lembre-se de colocar o goQuota.pl no crontab.


Fonte: http://www.nisled.org/?p=1139

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.