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