pfSense + Squid com filtragem https + tecnologia Logon único (SSO) com filtragem de grupo do Active DirectoryBreve histórico
Na empresa, havia a necessidade de implementar um servidor proxy com a capacidade de filtrar o acesso a sites (incluindo https) por grupos do AD, para que os usuários não inserissem senhas adicionais e que pudessem ser administrados a partir da interface da web. Não é uma aplicação ruim, é?A resposta correta seria comprar soluções como Kerio Control ou UserGate, mas como sempre, não há dinheiro, mas há uma necessidade.Então, o bom e velho Squid vem em nosso socorro, mas, novamente - onde obter a interface da web? SAMS2? Moralmente obsoleta. Aqui o pfSense vem em socorro.Descrição
Este artigo descreve como configurar o servidor proxy Squid.O Kerberos será usado para autorizar usuários.O SquidGuard será usado para filtrar por grupos de domínio.Para o monitoramento, serão utilizados os sistemas de monitoramento interno Lightsquid, sqstat e pfSense.Ele também resolverá um problema comum associado à introdução da tecnologia de logon único (SSO), ou seja, aplicativos que tentam ficar online na conta do computador \ na conta do sistema.Preparando para instalar o Squid
As bases serão tomadas no pfSense, Instruções de Instalação.Dentro do qual organizamos a autenticação para o próprio firewall usando contas de domínio. InstruçãoMuito importante!Antes de iniciar a instalação do Squid, você precisa configurar o servidor DNS no pfsense, criar um registro A e PTR em nosso servidor DNS e configurar o NTP para que o horário não seja diferente do horário no controlador de domínio.E na sua rede, você pode fornecer à interface pfSense WAN acesso à Internet, e os usuários na rede local podem se conectar à interface LAN, inclusive através das portas 7445 e 3128 (no meu caso, 8080).Tudo está pronto? A conexão LDAP com o domínio para autorização no pfSense está instalada e a hora está sincronizada? Bem. É hora de iniciar o processo principal.Instalação e Predefinição
Instale o Squid, SquidGuard e LightSquid no gerenciador de pacotes pfSense na seção "System / Package Manager".Após uma instalação bem-sucedida, vá para "Serviços / servidor Proxy Squid /" e, primeiro, na guia Cache local, configure o cache, defino tudo como 0, porque Não vejo muito sentido em sites de cache, e os navegadores se saem bem com isso. Após as configurações, clique no botão "Salvar" na parte inferior da tela e isso nos dará a oportunidade de fazer configurações básicas de proxy.As principais configurações são as seguintes:
A porta padrão é 3128, mas eu prefiro usar 8080.Os parâmetros selecionados na guia Interface do proxy determinam quais interfaces o servidor proxy escutará. Como esse firewall é projetado de forma a parecer com a Internet com uma interface WAN, mesmo que a LAN e a WAN possam estar na mesma sub-rede local, recomendo usar a LAN para o proxy.O Lupbek é necessário para o sqstat funcionar.Abaixo, você encontrará as configurações do proxy Transparente (transparente) e do Filtro SSL, mas não precisamos delas, nosso proxy não será transparente e, para a filtragem de https, não trataremos da substituição de certificados (temos fluxo de documentos, clientes bancários etc.), mas basta olhar para o aperto de mão.Nesse estágio, precisamos ir ao nosso controlador de domínio, criar uma conta para autenticação (você pode usar o que está configurado para autenticação no próprio pfSense). Esse é um fator muito importante - se você pretende usar a criptografia AES128 ou AES256 - marque a caixa apropriada nas configurações da conta.Se o seu domínio for uma floresta muito complexa com um grande número de diretórios ou o domínio .local, é POSSÍVEL, mas não exatamente, você precisará usar uma senha simples para esta conta, um bug conhecido, mas talvez não funcione com uma senha complexa, é necessário verifique um caso específico.
Depois disso, criamos o arquivo de chave do Kerberos, no controlador de domínio, abrimos uma linha de comando com direitos de administrador e inserimos:# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:\keytabs\PROXY.keytab
Onde especificamos nosso FQDN pfSense, siga o caso, digite nossa conta de domínio e sua senha no parâmetro mapuser e selecione o método de criptografia em criptografia, usei o rc4 para trabalhar e, no campo -out, selecionamos para onde enviaremos nosso arquivo-chave pronto.Após criar com êxito o arquivo-chave, nós o enviaremos ao nosso pfSense, usei Far para isso, mas você também pode fazer isso com os comandos e a massa de vidraceiro, ou através da interface da web do pfSense na seção Diagnostics \ Command Line.Agora podemos editar \ create /etc/krb5.conf em
que /etc/krb5.keytab é o arquivo de chave que criamos.Certifique-se de verificar a operação do kerberos com o kinit; se não funcionar, não há sentido em ler.Configurar autenticação Squid e lista de acesso sem autenticação
Tendo configurado com sucesso o kerberos, vamos prendê-lo ao nosso Squid.Para fazer isso, vá para Services \ Squid Proxy Server e nas configurações principais desça até o final, onde encontraremos o botão "Configurações avançadas".No campo Opções personalizadas (antes da autenticação), insira:
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt"
http_access allow nonauth
http_access deny !auth
http_access allow auth
onde auth_param negocia programa / usr / local / libexec / squid / negociate_kerberos_auth - seleciona o auxiliar de autenticação Kerberos que precisamos.A opção -s com o valor GSS_C_NO_NAME - define o uso de qualquer conta do arquivo de chaves.A opção -k com o valor /usr/local/etc/squid/squid.keytab - define o uso desse arquivo keytab. No meu caso, esse é o mesmo arquivo keytab que criamos, que copiei no diretório / usr / local / etc / squid / e o renomeei porque não queria ser amigo desse diretório, aparentemente não havia direitos suficientes.A opção -t com o valor -t none- Desativa solicitações cíclicas ao controlador de domínio, o que reduz bastante a carga, se você tiver mais de 50 usuários.Durante o teste, você também pode adicionar a opção -d, ou seja, diagnósticos, mais logs serão exibidos.auth_param negociate children 1000 - especifica quantos processos de autorização simultâneos podem ser executadosauth_param a negociação keep_alive ativada - não interrompe a conexão durante a pesquisa da cadeia de autorização -acl o auth proxy_auth REQUIRED é - cria e requer uma lista de controle de acesso que inclui usuários autenticadosacl nonauth dstdomain " /etc/squid/nonauth.txt "- Informamos o squid sobre a lista de acesso nonauth que contém os domínios de destino, aos quais todos sempre terão acesso permitido. Criamos o próprio arquivo e, dentro dele, inserimos os domínios no formato.whatsapp.com
.whatsapp.net
O Whatsapp não é em vão usado como exemplo - é muito exigente quanto aos proxies de autenticação e não funcionará se não for permitido antes da autenticação.http_access allow nonauth - permita acesso a esta lista a todos oshttp_access negar! auth - desativar o acesso de usuários não autorizados a outros siteshttp_access permitir auth - permitir o acesso de usuários autorizados.Tudo, o próprio squid está configurado para você, agora é hora de começar a filtrar por grupos.Configurar SquidGuard
Vá para Services \ SquidGuard Proxy Filter.Nas Opções LDAP, inserimos os detalhes de nossa conta usada para autenticação Kerberos, mas no seguinte formato:CN=pfsense,OU=service-accounts,DC=domain,DC=local
Se houver espaços e / ou caracteres não latinos, toda essa entrada deverá ser colocada entre aspas simples ou duplas:'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"
Em seguida, certifique-se de colocar as seguintes marcas de seleção:
Para cortar DOMAIN \ pfsense desnecessário DOMÍNIO.LOCAL ao qual todo o sistema é muito sensível.Agora vamos ao Grupo Acl e vinculamos nossos grupos de acesso ao domínio, uso nomes simples no espírito de grupo_0, grupo_1, etc. até 3, onde 3 é acesso apenas à lista branca e 0 é tudo.Os grupos são anexados da seguinte forma:ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))
salvamos nosso grupo, vamos para Times, lá eu criei um intervalo que significa trabalhar sempre, agora vamos para categorias de destino e crio listas como você gosta, depois de criar as listas voltamos aos nossos grupos e dentro do grupo selecionamos com botões que podem onde e onde não. .LightSquid e sqstat
Se durante o processo de instalação, selecionamos um loopback nas configurações do squid e abrimos a capacidade de acessar o 7445 no firewall, tanto na nossa rede quanto no próprio pfSense, quando acessamos o Diagnostics \ Squid Proxy Reports, podemos abrir o sqstat e o Lighsquid sem problemas, para o último Você precisará criar um nome de usuário e senha no mesmo local, e também há a oportunidade de escolher o design.Conclusão
O pfSense é uma ferramenta muito poderosa que pode fazer muitas coisas - o proxy de tráfego e o controle de acesso de usuários à Internet são apenas uma fração de toda a funcionalidade; no entanto, em uma empresa com 500 máquinas, isso resolveu o problema e economizou na compra de um proxy.Espero que este artigo ajude alguém a resolver um problema que é bastante relevante para empresas de médio e grande porte.