Identity Management on Linux – IDM – Parte 2 de 2

Bom dia,

Tenho estado um pouco ausente devido a compromissos profissionais, mas chegou a hora de finalizar a segunda parte do post referente ao IDM: A instalação e configuração dos clientes IPA/IDM

Todo o IDM é uma stack de autenticação que abrange vários universos. Como tal pode ser utilizada para autenticar tanto sistemas operativos, como aplicações.

Para o universo Linux (sistema operativo) utilizaremos a componente de SSSD:

Em primeiro lugar iremos instalar o pacote client e admin tools (necessário apenas se o cliente a ser enrolled,  irá gerir igualmente o IPA/IDM).

[root@client ~]# yum install ipa-client ipa-admintools

É necessário previamente provisionar do lado do IPA/IDM Server em termos de DNS o IP e hostname do cliente a conectar:

[root@server ~]# ipa dnsrecord-add 4.16.172.in-addr.arpa 7 –ptr-rec client.net.xpto.
[root@server ~]# ipa dnsrecord-add net.xpto client –a-rec 172.16.4.7

Nota: O primeiro comando adiciona o reverse do IP do cliente a integrar. O segundo cria o A record do cliente a provisionar.
Neste exemplo especifico, os DNS Servers a utilizar fazem parte da configuração do servidor IDM/IPA. Caso na vossa realidade, os servidores de DNS sejam externos a solução, deverão ter a mesma o par de configuração A record / PTR associados ao cliente antes de iniciarem o passo seguinte.

Em seguida iremos proceder a configuração do cliente e produto:

[root@client ~]# cat /etc/resolv.conf (validar que o IP do DNS do IPA – ou dns’s – estão como nameservers)

[root@client ~]# nslookup ipa.net.xpto
[root@client ~]# nslookup client.net.xpto
[root@client ~]# nslookup 172.16.4.7

Nota: todos as querys nslookup tem de devolver resultados válidos. Sem este passo o enrollment irá falhar.

[root@client ~]# ipa-client-install –enable-dns-updates

DNS discovery failed to determine your DNS domain
Please provide the domain name of your IPA server (ex: example.com): net.xpto
DNS discovery failed to find the IPA Server
Please provide your IPA server name (ex: ipa.example.com): ipa.net.xpto

Continue to configure the system with these values? [no]: y
User authorized to enroll computers: admin
Synchronizing time with KDC…
Password for [email protected]:
Successfully retrieved CA cert
Subject: CN=Certificate Authority,O=NET.XPTO
Issuer: CN=Certificate Authority,O=NET.XPTO
Valid From: Tue Aug 08 00:30:07 2015 UTC
Valid Until: Sat Aug 08 00:30:07 2035 UTC
Enrolled in IPA realm NET.XPTO
Created /etc/ipa/default.conf
New SSSD config will be created
Configured /etc/sssd/sssd.conf
Configured /etc/krb5.conf for IPA realm NET.XPTO
Failed to update DNS records.
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_dsa_key.pub
Could not update DNS SSHFP records.
SSSD enabled
Configured /etc/openldap/ldap.conf
NTP enabled
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Client configuration complete.

Toda a configuração é automática se tudo estiver bem configurado em termos de IP’s e resolvers.

Finalmente iremos testar a solução:

[nuno@client ~]$ id
[nuno@client ~]$ getent passwd admin
[nuno@client ~]$ getent group admins

Para a componente aplicação a configuração será igualmente straight foward:

Por exemplo para um vhost de apache:

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /mnt/netcore_apps/appz/video.net.xpto
        ServerName video.net.xpto
        Options +FollowSymLinks +Multiviews +Indexes
        Options +ExecCGI
        ErrorLog /var/log/http/clientes/video.net.xpto/error.log
        CustomLog /var/log/http/clientes/video.net.xpto/access.log combined

   <Location />
   AuthType Basic
   AuthBasicProvider ldap
   AuthName “LDAP Login – LDAP Group”
   AuthLDAPBindDN uid=bind,cn=users,cn=accounts,dc=net,dc=xpto
   AuthLDAPBindPassword P4ssw0rdl33t!
   AuthLDAPUrl “ldaps://ipa.net.xpto/cn=users,cn=accounts,dc=net,dc=xpto?uid”
   Require ldap-group cn=webusers,cn=groups,cn=accounts,dc=net,dc=xpto
   Satisfy all

   </Location>
</VirtualHost>

Notas:

AuthLDAPBindDN contem um user válido, criado em IDM/IPA que efetua o bind á árvore LDAP de forma a que se consiga fazer querys contra a mesma. A password (AuthLDAPBindPassword) tem que ser igualmente válida.

Em seguida e no próprio httpd.conf (main config file) adicionar o certificado da CA que assina o IPA/IDM (tipicamente o próprio IPA/IDM). Este passo é necessário pois estamos a utilizar ldaps como descrito acima.

LDAPTrustedGlobalCert CA_BASE64 /etc/ca-certificates/selfsigned/ca.crt

Finalmente será altura de efetuar restart ao apache e aceder ao URL do vhost acima configurado.
Desse ponto para a frente, os acessos a esse site, serão autenticados contra o LDAP do IDM/IPA.

Considerações finais:

O IPA/IDM é a ferramenta de facto para autenticação, identificação e auditoria em Linux. É transversal, extremamente resiliente a falhas, self healing e extremamente completa e amadurecida.
Necessita contudo que posteriormente a esta configuração, sejam efetuadas algumas tarefas de hardening da solução conforme a vossa necessidade e requisitos de segurança.
O IDM/IPA pode ainda centralizar a vossa gestão de sudo’s para utilizadores ou grupos, o que em ecossistemas grandes irá vos poupar muito tempo perdido em tarefas repetitivas de gestão de sistema operativo.

Caso tenham alguma questão ou sugestão, queiram pf alertar-me para o email do costume, nuno at nuneshiggs.com

Abr.
Nuno