Squid com autenticação via LDAP + SquidGuard com categorias no PFSense


Nesse breve tutorial veremos como configurar um servidor proxy no seu PFSense utilizando os pacotes Squid e SquidGuard com bloqueio por categorias além de autenticação e criação de grupos no AD via LDAP.

 

Caso você não tenha um servidor Active Directory na sua rede, pode seguir o tutorial apresentado anteriormente que trata do mesmo assunto, porém usando autenticação local clicando aqui.

 



 

O mais importante de falarmos a respeito dessa integração é que, para acessar as informações do AD, o Squid e o SquidGuard precisam de um usuário e senha do AD. Esse usuário não precisa ter nenhum privilégio, porém é necessário que sua senha não expire e essa senha também não pode ter caracteres especiais.

 

Se a senha tiver caracteres especiais não funciona.

 

Sempre que eu usar a sigla OU, obviamente estou me referindo as Organization Units do AD

 

Vamos ao cenário referente ao AD.

 

IP: 10.1.1.12

Domínio: lab.local

Usuário: pfsense

Senha: pfsense123tuto

 

Então vamos lá. Caso você já tenha o proxy funcionando e queira apenas ver a parte de integração com o AD, pule para o passo 8.

 

1 – Em System, clique em Package Manager.

 

squidlocal01

 

2 – Na Aba Available Packages, localize os pacotes Squid e SquidGuard. Instale primeiramente o SquidGuard clicando no botão install. Confirme e aguarde até que o pacote seja instalado sem sair da página que aparecerá. Faça a mesma coisa com o Squid.

 

squidlocal02

 

3 – Clique em Services, Squid Proxy Server

 

squidlocal03

 

4 – Primeiro precisamos acessar a aba Local Cache e clicar em salvar ao final da tela. Assim o Squid criará toda a sua estrutura de arquivos.

 

squidlocal04

 

5 – Volte na Aba General, marque a opção Enable Squid Proxy. Escolha as interfaces onde o proxy estará habilitado e a porta que será utilizada para o serviço.

 

squidlocal05

 

6 – Para que possamos ter um log do que é acessado e assim, futuramente, gerarmos relatórios marque a opção Enable Access Logging.

 

Em Log Store Directory fica o caminho onde serão armazenados os logs, caso você tenha lido o nosso tutorial sobre softupdates, essa é uma das ocasiões onde o softupdates melhora a performance de um determinado serviço.

 

Em rotate Logs podemos escolher com qual frequência em dias será feita a rotação dos logs. Essa pratica evita que os arquivos de log do squid fiquem com um tamanho muito grande.

 

squidlocal06

 

7 – Em visible hostname podemos colocar um nome de host para aparecer nos erros do squid.

 

Em Administrator Email’s coloque o email do administrador da rede, aquela pessoa que os usuários ou clientes devem chamar caso precisem.

 

Em Error Language escolhemos o idioma da página de erro do squid.

 

Em Suppress Squid Version marcamos para que a versão do squid não apareça na página de erro.

 

Clique em save.

 

squidlocal07

 

8 – Agora vamos até a aba authentication para configurarmos detalhes da autenticação.

 

Em authentication Method devemos escolher LDAP para que possamos pegar os usuários já existentes no AD.

 

Em Authentication Server devemos colocar o IP do nosso AD, nesse caso será 10.1.1.12

 

Em Authentication Server Port colocaremos a porta que o Squid usará para se conectar ao AD, 389 é o padrão.

 

Em Authentication Prompt podemos colocar a mensagem que virá na tela em que o usuário deve colocar suas credenciais ao tentar navegar na internet.

 

Authentication Processes é o número de processos de autenticação que poderão rodar simultaneamente no servidor, se deixarmos 5, apenas 5 daquelas mensagens perguntando nome e senha aparecerão simultaneamente para todos os usuários da rede. Esse numero não precisa ser muito grande, pois é improvável que todos os usuários comecem uma nova conexão ao mesmo tempo.

 

Authentication TTL teoricamente seria quanto tempo o squid considera válido uma combinação de usuário e senha sem que haja interações do usuário. Após esse tempo, em minutos, o squid pede novamente as credenciais para esse usuário.

 

squidldap01

 

Seguindo na mesma tela mais abaixo temos:

 

LDAP Version: Versão do seu LDAP, nesse caso é o 3.

 

LDAP Server User DN: Usuário que o squid usará para se conectar ao AD. Onde CN=squid é o nome do usuário. cn=Users é a OU onde esse usuário se encontra e DC=lab,DC=local é o meu domínio.

 

LDAP Password: Senha do usuário colocado acima. Sempre lembrando que não deve ter caracteres especiais.

 

LDAP Base Domain: Aqui devemos colocar onde estão os usuários que usarão o proxy. Se todos os usuários estiverem na mesma OU podemos coloca-la. No meu caso, os usuários estão esparramados em varis OU’s, então eu coloco apenas o dominio. dc=lab,dc=local

 

Deixe o resto preenchido como na imagem abaixo.

 

squidldap02

 

Com isso finalizamos as configurações do Squid. Note que nesse caso não há necessidade de criarmos usuários, pois ele sempre pegará os que estão no AD. E, sendo assim, os usuários conseguem trocar sua senha através do próprio windows.

 

No caso dos usuários a senha pode ter caracteres especiais normalmente.

 

Para que o Squid saiba o que cada usuário pode ou não acessar ele utiliza o SquidGuard. É nesse pacote que configuraremos os grupos de usuários e quais sites eles podem acessar.

 

Antes de tudo precisamos ir ao nosso servidor de AD e criar os grupos referentes ao grupos de acesso a internet. Utilizaremos um grupo chamado Ouro para acesso total, um grupo chamado Prata para acesso com bloqueios e um grupo chamado Bronze para acesso a apenas alguns endereços liberados por uma Whitelist.

 

Então vá ate o seu AD e crie apenas os grupos Prata e Ouro. O grupo bronze será para usuários que não possuem acesso. Nesse caso qualquer usuário que não esteja no grupo prata ou ouro automaticamente cairá no bronze.

 

Vamos a configuração do SquidGuard.

1 – Clique em Services e depois em SquidGuard Proxy Filter

 

squidlocal11

 

2 – Na aba General Settings Clique em Enable. 

 

Enable LDAP Filter: Habilite essa opção para que o SquidGuard faça a pesquisa dos grupos através de LDAP

 

Preencha o restante como na imagem abaixo, usando o mesmo usuário e senha para que o SquidGuard tenha acesso ao AD.

 

 

squidldap03

 

3 – Ainda em General Settings marque as opções que habilitam os logs do SquidGuard. Maque também a opção Blacklist para que façamos os bloqueios através de lista de categorias e coloque o endereço de onde o pacote ira baixar essa lista (http://www.shallalist.de/Downloads/shallalist.tar.gz) e clique em save.

 

squidlocal13

 

4 – Clique na Aba Blacklist, o endereço da lista deve vir preenchido. Caso não esteja basta colocar novamente o endereço citado acima. Clique em download e aguarde que o sistema baixe e aplique a lista como mostrado abaixo.

 

squidlocal12a

 

5 – Agora vamos criar uma lista branca para servir como o Bronze do nosso projeto. Vá em Target Categories e clique para adicionar uma nova. Aqui faremos o processo apenas para a lista branca, mas também funciona para lista negra. Se preferir já pode criar as duas como no exemplo a seguir.

 

squidlocal14

 

6 – Coloque o nome que deseja para a lista. Nesse exemplo colocaremos ListaBranca para os endereços que serão liberados para qualquer usuário ou máquina da rede. Para criar uma lista personalizada de bloqueios, o raciocínio é o mesmo. Se quiser, você já pode criar outra lista com o nome de ListraNegra para incluir endereços de bloqueio. No campo domain list colocaremos domínios ou IP’s que serão liberado no caso da lista branca ou bloqueados no caso de uma eventual lista negra. Futuramente chegaremos no passo onde eu digo que a lista branca é liberação e a lista negra é proibição.

 

squidlocal15

 

7 – Em Url List podemos colocar endereços que serão liberados ou bloqueados e em Regular Expression podemos colocar também palavras específicas para bloqueio ou liberação. Para funcionar, as palavras devem estar presentes na url.

 

squidlocal16

 

8 – Em Description podemos colocar uma descrição para a regra e marcamos a opção log para que todos os acessos que passarem por essa regra sejam adicionados aos logs e relatórios.

 

squidlocal17

 

9 – A aba Common ACL é o nosso grupo Bronze. O que configurarmos nela acontecerá para todos os acessos que não estejam especificados nos grupos Prata e Ouro. Por exemplo, se criarmos um usuário e esquecermos de coloca-lo em algum dos grupo, automaticamente os acessos dele cairão na common acl. Sistemas que não tenham a opção de se configurar acesso através do proxy também cairão aqui.

 

Clique no Simbolo + para expandir a lista nela aparecerá a nossa ListaBranca. Caso você tenha feito uma lista negra também aparecerá. Deixamos a lista Branca como WhiteList. Se desejarmos liberar mais alguma categoria devemos procura-la e colocar como allow.

 

squidlocal18

 

10 – A ultima linha dessa lista é o Default Access todas as linhas que estiverem como — terão o mesmo comportamento da Default Access que nesse caso deixaremos como Deny.

 

Importante: A diferença entre Allow e Whitelist é que, caso adicionemos um endereço na lista branca que já pertença a uma categoria que esteja como Deny, se a nossa lista branca estiver como Allow, o endereço continuará bloqueado, pois o Deny é mais “forte” que o Allow. Quando colocamos como WhiteList, o endereço é liberado mesmo que esteja em uma categoria Deny. Pois o Whitelist é mais “forte” que o Deny.

 

A opção Do not allow IP-addresses in URL bloqueia qualquer acesso feito no navegador diretamente a um endereço IP.

 

Em Use SafeSearch engine podemos marcar para que um usuário não consiga navegar num site proibido através de ferramentas de pesquisa que permitem visualizações prévias das páginas.

 

squidlocal19

 

11 – Devemos Marcar a opção Log para que os acessos que passem pela Common ACL apareçam nos logs e relatórios. Clique em Save.

 

squidlocal20

 

12 – Agora vamos criar nossos grupos ouro e prata. Acesse a aba Groups ACL e adicione um novo grupo.

 

squidlocal21

13 – O campo Disable serve para desabilitar o grupo, assim você não precisa deleta-lo para eventuais testes. Em name coloque o nome do grupo, nesse caso, Ouro. Em Cliente (source) vamos usar um filtro para dizer ao SquidGuard que todos os usuários que estiverem no grupo Ouro do AD devem ter acesso conforme configurado nos próximos passos.

 

Use o filtro:

 

ldapusersearch ldap://10.1.1.12/DC=lab,DC=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ouro%2cCN=Users%2cDC=lab%2cDC=local))

 

Edite conforme a sua realidade. Note que está escrito acima o IP do meu AD e os dados do grupo conforme o nome do meu domínio. É importante acertar o caminho da OU onde você criou os grupos. No meu caso criei na OU Users, por isso o trecho referente ao local ficou:

 

(memberOf=CN=ouro%2cCN=Users%2cDC=lab%2cDC=local)

 

squidldap04

 

14 – Ainda na mesma tela podemos clicar no sinal de + para expandir as categorias, porém como esse grupo é o que terá acesso totalmente liberado podemos deixar tudo padrão.

 

squidlocal23

 

15 – O Default Access desse grupo será Allow. As outras opções são as mesmas da Common ACL, porém marcaremos somente a opção de Log já que o acesso é ilimitado. Clique em Save.

 

squidlocal24

 

16 – Agora repetiremos o mesmo processo para criarmos o grupo prata. Não se esqueça de editar o filtro trocando

 

ldapusersearch ldap://10.1.1.12/DC=lab,DC=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=ouro%2cCN=Users%2cDC=lab%2cDC=local))

 

Para

 

ldapusersearch ldap://10.1.1.12/DC=lab,DC=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=prata%2cCN=Users%2cDC=lab%2cDC=local))

 

squidldap05

 

 

 

17 – Na mesma página clicaremos no + para expandir e vamos colocar Deny nas categorias que desejarmos. Se quiser saber qual site se encaixa em qual categoria basta acessar o site http://www.shallalist.de e pesquisar uma URL ou verificar a descrição de cada categoria.

 

squidlocal26

 

18 – Nesse caso o Default Access também é Allow. Dessa forma será liberado tudo que não está contido em uma categoria com Deny. Para garantir que um site da nossa lista branca não seja bloqueado vamos colocar a lista branca como Whitelist. Caso você já tenha feito uma lista negra basta colocar Deny na linha correspondente. As outras opções também são iguais as da Common ACL, aqui poderemos marca-las ou não. Você é quem decide de acordo com sua realidade.

 

squidlocal27

 

19 – Agora que nossos grupo já estão prontos clique em Save.

 

squidlocal28

 

20 – Volte até a aba General Settings e clique em apply para que todas essas configurações entrem em vigor. Não se esqueça desse passo, sempre que alterações forem feitas no SquidGuard devemos faze-lo novamente.

 

pfSense.localdomain - Package Proxy filter SquidGuard General settings General settings - Mozilla Firefox

 

 

Não se esqueça de distribuir os usuários do seu AD entre os grupos Ouro e Prata para que eles comecem a navegar pelo Proxy.

 

 

Se todos os computadores da sua rede estão logando pelo domínio é possível configurar o proxy através de GPO, logo teremos um tutorial sobre isso.

 

Obrigado pela atenção. Qualquer dúvida, crítica, sugestão ou correção, deixe um comentário, por favor.