Servidor proxy gratuito para empresas com autorização de domínio

Servidor proxy gratuito para empresas com autorização de domínio

pfSense+Squid com filtragem https + Tecnologia de logon único (SSO) com filtragem por grupos do Active Directory

Fundo breve

A empresa precisava 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 nenhuma senha adicional e a administração pudesse ser feita a partir da interface web. Não é um aplicativo ruim, não é?

A resposta correta seria comprar soluções como Kerio Control ou UserGate, mas como sempre não há dinheiro, mas há necessidade.

É aqui que o bom e velho Squid vem em nosso socorro, mas, novamente, onde posso obter a interface web? SAMS2? Moralmente desatualizado. É aqui que o pfSense vem ao resgate.

descrição

Este artigo descreverá como configurar um servidor proxy Squid.
Kerberos será usado para autorizar usuários.
O SquidGuard será usado para filtrar por grupos de domínio.

Os sistemas de monitoramento Lightsquid, sqstat e interno pfSense serão usados ​​para monitoramento.
Um problema comum associado à implementação da tecnologia de login único (SSO) também será resolvido, nomeadamente aplicações que tentam aceder à Internet sob a conta bússola da sua conta de sistema.

Preparando para instalar o Squid

pfSense será usado como base, Instruções de instalação.

Dentro do qual organizamos a autenticação no próprio firewall usando contas de domínio. Instruções.

É muito importante!

Antes de começar a instalar o Squid, você precisa configurar o servidor DNS no pfsense, fazer um registro A e um registro PTR para ele em nosso servidor DNS e configurar o NTP para que a hora não seja diferente da hora no controlador de domínio.

E na sua rede, forneça a capacidade para a interface WAN do pfSense acessar a Internet e para os usuários da rede local se conectarem à interface LAN, inclusive através das portas 7445 e 3128 (no meu caso, 8080).

Está tudo pronto? O domínio está conectado via LDAP para autorização no pfSense e o horário está sincronizado? Ótimo. É hora de iniciar o processo principal.

Instalação e pré-configuração

Instalaremos o Squid, SquidGuard e LightSquid a partir do gerenciador de pacotes pfSense na seção “System/Package Manager”.

Após a instalação com sucesso, vá em “Serviços/servidor Squid Proxy/” e antes de tudo, na aba Cache Local, configure o cache, configurei tudo para 0, pois Não vejo muito sentido em armazenar sites em cache; os navegadores lidam com isso muito bem. Após a configuração, pressione o 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:

Servidor proxy gratuito para empresas com autorização de domínio

A porta padrão é 3128, mas prefiro usar 8080.

Os parâmetros selecionados na guia Interface Proxy determinam quais interfaces nosso servidor proxy escutará. Como esse firewall é construído de forma que olha para a Internet através da interface WAN, mesmo que a LAN e a WAN possam estar na mesma sub-rede local, recomendo usar a LAN como proxy.

O loopback é necessário para que o sqstat funcione.

Abaixo você encontrará as configurações do proxy Transparente, assim como o Filtro SSL, mas não precisamos deles, nosso proxy não será transparente, e para filtragem https não trataremos de substituição de certificado (afinal, temos gerenciamento de documentos , clientes de bancos, etc.), vejamos apenas o aperto de mão.

Nesta fase, precisamos ir ao nosso controlador de domínio, criar nele uma conta para autenticação (você também pode usar aquela que você configurou para autenticação no próprio pfSense). Um fator muito importante aqui é que se você pretende usar a criptografia AES128 ou AES256, marque as caixas apropriadas nas configurações da sua conta.

Se o seu domínio for uma floresta muito complexa com um grande número de diretórios ou seu domínio for .local, então POSSIVELMENTE, mas não com certeza, você terá que usar uma senha simples para esta conta, o bug é conhecido, mas com uma senha complexa senha pode simplesmente não funcionar, você precisa verificar um caso individual específico.

Servidor proxy gratuito para empresas com autorização de domínio

Depois de tudo isso, criamos um arquivo de chave para Kerberos, no controlador de domínio, abrimos um prompt de comando com direitos de administrador e digitamos:

# ktpass -princ HTTP/[email protected] -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:keytabsPROXY.keytab

Onde indicamos nosso FQDN pfSense, não deixe de respeitar o caso, no parâmetro mapuser inserimos nossa conta de domínio e sua senha, e em crypto selecionamos o método de criptografia, usei rc4 para trabalhar e no campo -out selecionamos onde enviaremos nosso arquivo de chave pronto.
Após criar com sucesso o arquivo de chave, iremos enviá-lo para o nosso pfSense, usei o Far para isso, mas você também pode fazer isso usando comandos, putty ou através da interface web do pfSense na seção “DiagnosticsCommand Line”.

Agora podemos editar create /etc/krb5.conf

Servidor proxy gratuito para empresas com autorização de domínio

onde /etc/krb5.keytab é o arquivo-chave que criamos.

Certifique-se de verificar o funcionamento do Kerberos usando o kinit; se não funcionar, não faz sentido ler mais.

Configurando autenticação Squid e lista de acesso sem autenticação

Depois de configurar o Kerberos com sucesso, iremos anexá-lo ao nosso Squid.

Para isso, acesse ServicesSquid Proxy Server e nas configurações principais, vá até o final, lá 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 programa de negociação auth_param /usr/local/libexec/squid/negotiate_kerberos_auth — seleciona o auxiliar de autenticação Kerberos que precisamos.

Ключ -s com significado GSS_C_NO_NAME — determina o uso de qualquer conta do arquivo de chave.

Ключ -k com significado /usr/local/etc/squid/squid.keytab — determina usar este arquivo keytab específico. No meu caso, este é o mesmo arquivo keytab que geramos, que copiei para o diretório /usr/local/etc/squid/ e renomeei porque o squid não queria ser amigo daquele diretório, aparentemente eu não tinha direitos suficientes.

Ключ -t com significado -não nenhum — desativa solicitações cíclicas ao controlador de domínio, o que reduz bastante a carga nele se você tiver mais de 50 usuários.
Durante o teste, você também pode adicionar a opção -d - ou seja, diagnóstico, mais logs serão exibidos.
auth_param negocia filhos 1000 — determina quantos processos de autorização simultâneos podem ser iniciados
auth_param negociar keep_alive em — evita que a conexão seja desconectada durante a pesquisa da cadeia de autorização
autenticação acl proxy_auth OBRIGATÓRIA — cria e exige uma lista de controle de acesso que inclui usuários autorizados
acl noauth dstdomain "/etc/squid/noauth.txt" — informamos o squid sobre a lista de acesso noauth, que contém domínios de destino aos quais todos sempre terão acesso permitido. Criamos o próprio arquivo e inserimos os domínios dentro dele no formato

.whatsapp.com
.whatsapp.net

O Whatsapp é usado como exemplo por um motivo: ele é muito exigente em relação aos proxies de autenticação e não funcionará se não for permitido antes da autenticação.
http_access permite noauth — permitir acesso a esta lista para todos
http_access negar!auth — proibimos o acesso a outros sites para usuários não autorizados
http_access permitir autenticação — permitir acesso a usuários autorizados.
É isso, o próprio Squid está configurado, agora é hora de começar a filtrar por grupos.

Configurando o SquidGuard

Vá para Filtro de proxy ServicesSquidGuard.

Nas Opções LDAP inserimos os detalhes da nossa conta usada para autenticação Kerberos, mas no seguinte formato:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Se houver espaços ou caracteres não latinos, toda esta 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 marcar estas caixas:

Servidor proxy gratuito para empresas com autorização de domínio

Para eliminar DOMAINpfsense desnecessário DOMÍNIO.LOCAL ao qual todo o sistema é muito sensível.

Agora vamos para o Grupo Acl e vincular nossos grupos de acesso ao domínio, eu uso nomes simples como grupo_0, grupo_1, etc. até 3, onde 3 significa acesso apenas à lista branca e 0 significa que tudo é possível.

Os grupos estão interligados 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 em Times, lá criei uma lacuna que significa que sempre vai funcionar, agora vamos em Target Categorias e criamos listas a nosso critério, após criar as listas voltamos para nossos grupos e dentro do grupo usamos botões para selecionar quem pode ir aonde e quem não pode ir aonde.

LightSquid e sqstat

Se durante o processo de configuração selecionamos loopback nas configurações do squid e abrimos a capacidade de acessar 7445 no firewall tanto em nossa rede quanto no próprio pfSense, então quando formos para DiagnosticsSquid Proxy Reports podemos facilmente abrir tanto sqstat quanto Lighsquid, para o último precisaremos. Lá você pode criar um login e uma senha, e também pode escolher um design.

Realização

O pfSense é uma ferramenta muito poderosa que pode fazer muitas coisas - proxy de tráfego e controle de acesso de usuários à Internet é apenas uma parte de toda a funcionalidade, porém, em uma empresa com 500 máquinas, resolveu o problema e nos permitiu economizar na compra de uma procuração.

Espero que este artigo ajude alguém a resolver um problema bastante relevante para médias e grandes empresas.

Fonte: habr.com

Adicionar um comentário