Squid com autenticação local + SquidGuard com categorias no PFSense


Hoje mostrarei como configurar um proxy no seu PFSense utilizando os pacotes Squid e SquidGuard. Nesse tutorial faremos a autenticação local pelo squid e a separação dos usuários por grupos de navegação, além dos bloqueios por categoria através de Blacklist no SquidGuard.

 



 

Caso você tenha um servidor Active Directory na sua rede, é possível fazer essa configuração utilizando os usuários já existentes via LDAP. Para aprender a fazer dessa forma clique aqui.

 

Para o tutorial estou utilizando uma máquina virtual com o PFSense 2.3.2, porém também é aplicável a versões mais antigas. Além disso, é importante se dizer que abordaremos somente as configurações mais importantes para o funcionamento do sistema. Praticas mais avançadas serão vistas futuramente em novos tutoriais.

 

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 Local para que possamos criar usuários diretamente no squid.

 

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.

 

Clique em save ao final da tela.

 

squidlocal08

 

9 – Agora vamos a tela onde criaremos os usuários. Vá até a aba Users, lá podemos editar ou deletar usuários existentes além de criar novos usuários.

 

squidlocal09

 

10 – Para criar um usuário é necessário apenas preencher os campos username e password. Note que não há confirmação de senha e, dessa forma também não existe uma interface para que o usuário altere ele mesmo sua senha. O campo Description não é obrigatório. Após clicar em Save na tela abaixo, também é necessário dar um save na tela descrita acima.

 

squidlocal10

 

Com isso terminamos a configuração do Squid com usuários locais do próprio pacote. Para que o squid saiba quais sites cada usuário pode acessar ele faz uma requisição ao SquidGuard e é nesse pacote que devemos configurar os grupos de acesso e quais serão os bloqueios.

 

Vamos utilizar um exemplo com 3 grupos de acesso. Um grupo deverá ter acesso total a internet sem nenhum tipo de bloqueio, esse grupo chamaremos Ouro. O segundo grupo terá acesso a internet  porém com bloqueios a sites que nós especificaremos. Caso o site não esteja marcando como proibido, ele passará. Esse grupo será chamado Prata. O terceiro grupo será apenas uma Whitelist. Sites, acessos ou serviços que não precisem de autenticação para funcionar ficarão nessa lista e esse grupo será chamado Bronze.

 

Resumo:

 

Ouro – Grupo com acesso total.

Prata – Grupo com acesso restrito.

Bronze – Lista com endereços acessíveis para qualquer máquina na rede.

 

1 – Clique em Services e depois em SquidGuard Proxy Filter

 

squidlocal11

 

2 – Na aba General Settings Clique em Enable.

 

squidlocal12

 

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) devemos colocar os nomes dos usuários que pertencem a esse grupo. Sempre entre aspas simples e separados por espaço.

 

squidlocal22

 

14 – Aqui também 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.

 

squidlocal25

 

17 – Aqui 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

 

Agora basta marcar um computador da nossa rede para navegar através do proxy e testar se está tudo funcionando corretamente.

 

Em breve colocarei um tutorial ensinando como fazer a configuração de um proxy automático através de DHCP.

 

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