Introdução
Este blog abrange a instalação de um proxy Squid que irá integrar perfeitamente com o Active Directory utilizando Kerberos, NTLM e autenticação básica para clientes não autenticados via Kerberos ou NTLM.
exemplo Ambiente
os exemplos a seguir são utilizados, você deve atualizar quaisquer exemplos de configuração com o seu domínio clientes, nomes de máquinas, etc. de IP, se necessário.
- Rede
- Domínio = example.local
- Sub-rede 192.168.0.0/24 =
- Servidor proxy
- OS = GNU / Linux
- Squid 3.1
- IP = 192.168.0.10
- HOSTNAME = squidproxy.example.local
- Kerberos nome do computador = SQUIDPROXY-K
- Windows Server 1
- IP = 192.168.0.1
- HOSTNAME = dc1.example.local
- Windows Server 2
Pré-requisitos
Cliente computadores Windows precisa ter Ativar autenticação integrada do Windows assinalada em Opções da Internet ⇒ Configurações avançadas .
Configuração de DNS
No servidor de DNS do Windows adicionar uma nova Uma entrada de registro para hostname do servidor proxy e assegurar um PTR correspondente (DNS reverso) entrada também é criado e funciona. Verifique se o proxy estiver usando o servidor de DNS do Windows para resolução e atualização nome /etc/resolv.conf em conformidade.
Edite o arquivo de acordo com a sua rede.
domain example.local search example.local nameserver 192.168.0.1 nameserver 192.168.0.2
Ping um nome de host interno e externo para garantir DNS está a funcionar.
de ping -c dc1.example.local 4 && de ping google.com -c 4
Verifique você pode inverter procurar o Windows Server eo ip proxy local do DNS do Windows.
dig -x 192.168.0.1
dig -x 192.168.0.10
A secção de resposta deve conter o nome do DNS de dc1.example.local e squidproxy.example.local .
Importante: Se uma pesquisa falhar não prosseguir até que você corrija ou a autenticação poderá falhar.
Configuração NTP
Instale o pacote ntp:
apt-get install ntp
Porque Kerberos precisa ter o tempo sincronizado com controladores de domínio do Windows para autenticação .
vi /etc/ntp.conf
Localize a seção seguinte e atualizar os servidores NTP, conforme necessário. Se você tiver mais de um controlador de domínio ou servidor NTP você pode adicionar várias linhas.
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server domaincontroller1.example.local server server2.example.local
Em seguida, reiniciar e testar NTP.
invoke-rc.d ntp restart
ntpq -p
ntpq -p
Você deve ver uma saída que se refere aos controladores de domínio e outros servidores NTP que são processados na ordem em que aparecem no arquivo conf.
Instalar e configurar o Kerberos
Instalar pacotes Kerberos -no Debian apt-get install krb5-user libkrb53
Editar o arquivo /etc/krb5.conf substituindo as variáveis com o seu domínio e servidores.
Importante: Se você tiver apenas um controlador de domínio remova o KDC adicional do [realm] DC.
Dependendo do sistema operativo da versão do seu controlador de domínio remover o comentário da seção relevante do Windows 200X e comentar a secção adversária.
[libdefaults] default_realm = example.local dns_lookup_kdc = nenhuma dns_lookup_realm = nenhuma ticket_lifetime = 24h default_keytab_name = /etc/squid3/PROXY.keytab ; para Windows 2003 default_tgs_enctypes = RC4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = RC4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = RC4-hmac des-cbc-crc des-cbc-md5 ; para Windows 2008 com a AES ; default_tgs_enctypes = aes256-cts-hmac-sha1-96 RC4-hmac des-cbc-crc des-cbc-md5 ; default_tkt_enctypes = aes256-cts-hmac-sha1-96 RC4-hmac des-cbc-crc des-cbc-md5 ; permitted_enctypes = aes256-cts-hmac-sha1-96 RC4-hmac des-cbc-crc des-cbc-md5 [realm] Example.local = { KDC = dc1.example.local KDC = dc2.example.local admin_server = dc1.example.local default_domain = example.local } [Domain_realm] .example.local = example.local example.local = example.local
Aviso importante: Deve-se usar "Windows 2008 com a AES", se disponível. Este não é apenas importante por razões de segurança, mas você também pode ter problemas ao usar o nome de DNS do servidor squid em vez do endereço IP.
mensagens de erro exemplo em relação a este problema pode ser parecido com este:
ERROR: Negotiate Authentication validating user. Error returned 'BH gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information.'
Instale Squid 3
Nós instalar squid 3 agora como precisamos dos diretórios squid3 disponível. configuração do Squid tem lugar após a autenticação está configurada.No Debian instalar os squid3 ldap-utils pacotes.
"apt-get install squid3 ldap-utils"
Autenticação
O Proxy utiliza 4 métodos para autenticar os clientes, Negociar / Kerberos, Negociar / NTLM, NTLM e autenticação básica. Markus Moellers negotiate_wrapper é usado para as 2 Negociar métodos.
Kerberos
Kerberos utiliza msktutil um gerente de keytab do Active Directory (presumo que o nome é abreviado para "Microsoft Keytab Utility"). Precisamos instalar alguns pacotes que msktutil requer.No Debian instalar libsasl2-modules-gssapi-mit libsasl2-módulos
"apt-get install libsasl2-modules-gssapi-mit libsasl2-modules"
cd /var/cache/apt/archives/ wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb
dpkg -i msktutil_0.4-2_i386.deb
cd
dpkg -i msktutil_0.4-2_i386.deb
cd
Iniciar uma sessão de Kerberos para o servidor com permissões de administrador para adicionar objetos a AD, atualizar o nome de usuário, quando necessário.msktutil vai usá-lo para criar nosso objeto kerberos computador no Active Directory.
administrador kinit
Ele deve retornar sem erros. Você pode ver se você obteve com sucesso um bilhete com:
klist
Agora vamos configurar a conta Kerberos computador do proxy e princípio de serviço, executando msktutil (lembre-se de atualizar os valores com o seu).
Importante: Há 2 ressalvas importantes no que diz respeito aos argumentos do msktutils "--computer-name ".
-computer-name não pode ser maior que 15 caracteres devido a limitações de nomes NetBIOS. Veja este link e este link para mais informações.
-computer-name deve ser diferente do nome de host do proxy para atualizações de senha de conta de computador para NTLM e Kerberos não entram em conflito,. Este guia utiliza -k anexado ao nome do host.
Execute o comando msktutil da seguinte forma:
msktutil -c -b "CN = computadores" -s HTTP / squidproxy.example.local -k /etc/squid3/PROXY.keytab \ --tecnologia-name SQUIDPROXY-K --upn HTTP / squidproxy.example.local --server dc1.example.local --verbose
Importante: Se você estiver usando um domínio Server 2008, em seguida, adicione --enctypes 28 no final do comando.
Preste atenção para a saída do comando para garantir o sucesso, porque estamos usando --verbose saída que você deve rever cuidadosamente.
Defina as permissões no keytab para o squid poder lê-lo.
chgrp proxy /etc/squid3/PROXY.keytab chmod g+r /etc/squid3/PROXY.keytab
Destruir as credenciais de administrador usados para criar a conta.
kdestroy
No Windows Server redefinir a conta de computador no AD clicando com o botão direito sobre o objeto SQUIDPROXY-K Computador e selecione "Reset Account", em seguida, executar msktutil da seguinte forma a garantir a keytab é atualizado conforme o esperado e que a keytab está sendo originada por msktutil de /etc/krb5.conf corretamente. Isto não é absolutamente necessário, mas é útil para assegurar msktutil funciona como esperado.Em seguida, execute o seguinte:
msktutil --auto-update --verbose --computer-name squidproxy-k
Nota: Mesmo que a conta foi adicionado em letras maiúsculas, o --auto-update em msktutil exige que o --computer-name sejam minúsculas.
Se o keytab não é encontrado tente adicionar /etc/squid3/PROXY.keytab-k para o comando para ver se ele funciona e, em seguida, solucionar até resolvido ou os usuários não serão capazes de se autenticar com Squid.
Adicione o seguinte ao cron para que ele possa atualiza automaticamente a conta de computador no Active Directory quando ele expirar (normalmente 30 dias).Canalizá-lo através do logger para que eu possa ver quaisquer erros no syslog se necessário. Como msktutil afirmou usa o padrão /etc/krb5.conf arquivo por suas parametros por isso estar ciente de que, se você decidir fazer quaisquer alterações nele.
00 4 * * * msktutil --auto-update --verbose --computer-name squidproxy-k | logger -t msktutil
Script de inicialização Editar do squid3 para exportar o KRB5_KTNAME variável para squid sabe onde encontrar o keytab Kerberos.
No Debian a maneira mais simples de fazer isso é a seguinte:
Adicionar a seguinte configuração para /etc/default/squid3
KRB5_KTNAME=/etc/squid3/PROXY.keytab export KRB5_KTNAME
NTLM
Instale Samba e Winbind. No Debian instalar samba winbind samba-common-bin
Pare o samba e daemons winbind e editar /etc/samba/smb.conf
workgroup = EXAMPLE security = ads realm = EXAMPLE.LOCAL winbind uid = 10000-20000 winbind gid = 10000-20000 winbind use default domain = yes winbind enum users = yes winbind enum groups = yes
Agora juntar-se o proxy para o domínio.
net ads join -U Administrator
Comece samba e winbind e teste acesso ao domínio.
wbinfo -t
Este comando deve saída algo como isto:
checking the trust secret for domain EXAMPLE via RPC calls succeeded
wbinfo -a EXAMPLE\\testuser% 'password'
Saída deve ser semelhante a este.
plaintext password authentication succeeded challenge/response password authentication succeeded
Definir permissões para a conta de usuário proxy pode ler / var / run / samba / winbindd_privileged .
gpasswd -a winbindd_priv
- no Debian uma sistemas Ubuntu também pode haver um / var lib / samba / / winbindd_privileged diretório criado pela winbind e ferramentas ntlm_auth com a propriedade de raiz. O grupo da pasta precisa ser alterada para coincidir com o /var/run/samba/winbindd_privileged
acrescente o seguinte ao cron para mudar regularmente a senha da conta do computador - nota Wiki: Necessidade de pesquisar se Samba faz isso automaticamente.
05 4 * * * net rpc changetrustpw -d 1 | logger changetrustpw -t
básico
Para utilizar a autenticação básica por meio de LDAP, precisamos criar uma conta com o qual para acessar o Active Directory.
No Active Directory criar um usuário chamado "Squid Proxy" com o logon SQUID " squid@example.local ."
Verifique o seguinte :.
- O usuário deve alterar a senha no próximo logon unticked
- O usuário não pode alterar a senha Ticked
- A senha nunca expira Ticked
- Conta desativada unticked
Criar um arquivo de senha usada por squid para acesso LDAP e garantir as permissões de arquivo (substitua a palavra "squidpass" abaixo com sua senha).
echo 'squidpass' > /etc/squid3/ldappass.txt chmod o-r /etc/squid3/ldappass.txt chgrp proxy /etc/squid3/ldappass.txt
instale negotiate_wrapper
Em primeiro lugar precisamos instalar negotiate_wrapper. Instalar as ferramentas de compilação necessárias em Debian apt-get install build-essential linux-headers-$(uname -r) Em seguida, compilar e instalar.
cd /usr/local/src/ wget "http://downloads.sourceforge.net/project/squidkerbauth/negotiate_wrapper/negotiate_wrapper-1.0.1/negotiate_wrapper-1.0.1.tar.gz" tar -xvzf negotiate_wrapper-1.0.1.tar.gz cd negotiate_wrapper-1.0.1/ ./configure make make install
squid.conf
Em seguida, squid configuração e está associado arquivos de configuração.
Adicione o seguinte ao seu squid.conf .
Estude e atualize o texto a seguir com cuidado, substituindo o conteúdo example, com a configuração de sua rede - se você botar algo de errado seu proxy não funcionará.
### /etc/squid3/squid.conf Do Arquivo de Configuração #### ### Negociar autenticação Kerberos e NTLMauth_param negotiate program /usr/local/bin/negotiate_wrapper -d --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=EXAMPLE --kerberos /usr/local/bin/squid_kerb_auth -d -s GSS_C_NO_NAME auth_param negotiate children 10 auth_param negotiate keep_alive off### Autenticação NTLM puraauth_param ntlm program /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=EXAMPLE auth_param ntlm children 10 auth_param ntlm keep_alive off### Fornecer autenticação básica via LDAP para clientes não autenticados via Kerberos / NTLM auth_param básica do programa / usr / local / bin / squid_ldap_auth -R -b "dc = exemplo, dc = local" -D squid@example.local -W /etc/squid3/ldappass.txt -f sAMAccountName =% s -h dc1 .example.localauth_param basic children 10 auth_param basic realm Internet Proxy auth_param basic credentialsttl 1 minute### Acl de autorização de autenticação proxy e LDAP acl auth proxy_auth reguered ### Aplica a autenticação http_access deny! auth http_access allow auth http_access deny all
Nenhum comentário:
Postar um comentário