FreeIPA: Gestión centralizada de accesos a usuarios

FreeIPA es una herramienta de login centralizado, es decir, sirve para gestionar todos los usuarios, los hosts y los accesos de una manera centralizada. Permite varias opciones además del clasico login con contraseña, por ejemplo, OTP, mediante certificados SSH, servidor RADIUS, Tickets… La instalación no es demasiado complicada y permite varias opciones. Es muy recomendable para poder tener bien gestionados todos los accesos.

Para instalar FreeIPA es necesario tener un servidor DNS. En este caso el servidor DNS va a ser externo aquí un tutorial de como instalar un servidor DNS. Pero también se puede instalar en la misma máquina. Como sistema operativo, se utilizará CentOS ya que es el único además de fedora que trae en los repositorios oficiales el paquete de freeIPA

También hay que tener en cuenta los requisitos mínimos para instalar FreeIPA

Servidor

Para empezar, configurar correctamente el archivo hosts

vim /etc/hosts
192.168.0.103 freeipa.ichasco.com  freeipa

Deshabilitar el firewall (o si no abrir los puertos necesarios)

systemctl disable firewalld
systemctl stop firewalld

Antes que nada, desinstalar chrony e instalar ntp

yum erase chrony
yum install ntp

Lanzar el demonio ntp

ntpd

A continuación instalar el instalador del servidor freeIPA

yum install ipa-server

Y empezar a con la instalación de FreeIPA

ipa-server-install
The log file for this installation can be found in /var/log/ipaserver-install.log
==============================================================================
This program will set up the IPA Server.

This includes:
  * Configure a stand-alone CA (dogtag) for certificate management
  * Configure the Network Time Daemon (ntpd)
  * Create and configure an instance of Directory Server
  * Create and configure a Kerberos Key Distribution Center (KDC)
  * Configure Apache (httpd)

To accept the default shown in brackets, press the Enter key.

Do you want to configure integrated DNS (BIND)? [no]: no

Enter the fully qualified domain name of the computer
on which you're setting up server software. Using the form
<hostname>.<domainname>
Example: master.example.com.

Server host name [freeipa.ichasco.com]: freeipa.ichasco.com

The domain name has been determined based on the host name.

Please confirm the domain name [ichasco.com]: 

The kerberos protocol requires a Realm name to be defined.
This is typically the domain name converted to uppercase.

Please provide a realm name [ICHASCO.COM]: 
Certain directory server operations require an administrative user.
This user is referred to as the Directory Manager and has full access
to the Directory for system management tasks and will be added to the
instance of directory server created for IPA.
The password must be at least 8 characters long.

Directory Manager password: 
Password (confirm): 

The IPA server requires an administrative user, named 'admin'.
This user is a regular system account used for IPA server administration.

IPA admin password: 
Password (confirm): 


The IPA Master Server will be configured with:
Hostname:       freeipa.ichasco.com
IP address(es): 192.168.0.103
Domain name:    ichasco.com
Realm name:     ICHASCO.COM

Continue to configure the system with these values? [no]: yes

Y una vez que termine de configurar todos los paquetes, ya estaría listo. Ahora habría que conectarse a la web mediante un navegador

https://freeipa.ichasco.com

Ahora se pueden crear usuarios, añadirles claves SSH, OTPs…

Cliente Linux

En este caso el cliente que vamos a utilizar va a ser un cliente Debian

Añadir los repositorios necesarios

vim /etc/apt/sources.list
deb http://apt.numeezy.fr jessie main

Añadir la clave publica

wget -qO - http://apt.numeezy.fr/numeezy.asc | apt-key add -

Actualizar los repositorios

apt update

Instalar el cliente

apt install freeipa-client

Crear la carpeta para almacenar los certificados

mkdir -p /etc/pki/nssdb

Crear la base de datos para almacenar las credenciales

certutil -N -d /etc/pki/nssdb

Crear la carpeta para el proceso

mkdir -p /var/run/ipa

Eliminar la configuración por defecto

rm -f /etc/ipa/default.conf

Lanzar el configurador (cuando pregune algo, dejarlo por defecto)

ipa-client-install --no-ntp --no-dns-sshfp --mkhomedir
Using existing certificate '/etc/ipa/ca.crt'.
DNS discovery failed to determine your DNS domain
Provide the domain name of your IPA server (ex: example.com): ichasco.com
Provide your IPA server name (ex: ipa.example.com): freeipa.ichasco.com
The failure to use DNS to find your IPA server indicates that your resolv.conf file is not properly configured.
Autodiscovery of servers for failover cannot work with this configuration.
If you proceed with the installation, services will be configured to always access the discovered server for all operations and will not fail over to other servers in case of failure.
Proceed with fixed values and no DNS discovery? [no]: yes
Hostname: ns1.ichasco.com
Realm: ICHASCO.COM
DNS Domain: ichasco.com
IPA Server: freeipa.ichasco.com
BaseDN: dc=ichasco,dc=com

Continue to configure the system with these values? [no]: yes
Synchronizing time with KDC...
Unable to sync time with IPA NTP server, assuming the time is in sync. Please check that 123 UDP port is opened.
User authorized to enroll computers: admin
Password for admin@ICHASCO.COM: 
Enrolled in IPA realm ICHASCO.COM
Created /etc/ipa/default.conf
New SSSD config will be created
Configured sudoers in /etc/nsswitch.conf
Configured /etc/sssd/sssd.conf
Added the CA to the default NSS database.
Configured /etc/krb5.conf for IPA realm ICHASCO.COM
trying https://freeipa.ichasco.com/ipa/json
Forwarding 'ping' to json server 'https://freeipa.ichasco.com/ipa/json'
Forwarding 'env' to json server 'https://freeipa.ichasco.com/ipa/json'
Adding SSH public key from /etc/ssh/ssh_host_ecdsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_dsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_rsa_key.pub
Adding SSH public key from /etc/ssh/ssh_host_ed25519_key.pub
Forwarding 'host_mod' to json server 'https://freeipa.ichasco.com/ipa/json'
SSSD enabled
Configured /etc/openldap/ldap.conf
Configured /etc/ssh/ssh_config
Configured /etc/ssh/sshd_config
Configuring ichasco.com as NIS domain.
Client configuration complete.

Habilitar la autocreación de los homes de los usuarios de LDAP

echo 'session required pam_mkhomedir.so' >> /etc/pam.d/common-session

Modificar el archivo de configuración de nsswitch.conf

sed -i -e 's/compat/files/g' /etc/nsswitch.conf

Y por último, reiniciar la máquina

reboot

Y con esto ya nos podríamos conectar por ssh con nuestro usuario

4 comments

  1. Hola, muy buen tutorial. Si quisiera conectar a mis pcs linux para iniciar sesión grafica que debo hacer?. Gracias

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *