quarta-feira, 22 de junho de 2016

Configurando um servidor Squid para autenticar no Active Directory

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
    • IP = 192.168.0.2
    • HOSTNAME = dc2.example.local

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

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
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

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 
  • {X}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 NTLM
auth_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 pura
auth_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.local
auth_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

 

bobox

Blogger news