Nota:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Instalar el servidor FreeIPA en Oracle Linux
Introducción
FreeIPA es un sistema de gestión de identidad y autenticación de código abierto para entornos de red de Linux. El servidor incluye el servidor de directorios 389 como almacén de datos central, lo que proporciona una funcionalidad LDAPv3 completa de varios maestros.
Más allá del alcance de este tutorial, FreeIPA también proporciona Kerberos de MIT para la autenticación de conexión única, la autoridad de certificación de Dogtag y la gestión opcional de nombres de dominio mediante un servidor de enlace de ISC.
En este tutorial se muestra cómo instalar FreeIPA y configurar el directorio LDAP incluido.
Objetivos
- Instalar el servidor FreeIPA
- Desactivar enlaces anónimos
- Agregar Usuarios y Grupos
¿Qué se necesita?
- Un sistema con un mínimo de 2 vCPUs, 2 GB de RAM y Oracle Linux instalado
- Un FQDN (nombre de dominio completo) que apunta a la dirección IP del servidor
Para obtener más información sobre los requisitos para FreeIPA, consulte la Guía de inicio rápido ascendente.
Configuración del entorno de prácticas
Nota: Al utilizar el entorno de prácticas gratuitas, consulte Conceptos básicos de las prácticas de Oracle Linux para obtener información sobre la conexión y otras instrucciones de uso.
-
Abra un terminal y conéctese mediante ssh a la instancia de freeipa-server si aún no está conectada.
ssh oracle@<ip_address_of_instance>
Confirme el servidor HostName
El servidor FreeIPA requiere una configuración de DNS en funcionamiento. Los clientes inscritos mediante la herramienta de línea de comandos ipa
buscan el servidor mediante los parámetros xmlrpc_url
y domain
definidos en el archivo /etc/ipa/default.conf
.
-
Verifique el nombre de host del servidor.
sudo hostname
La salida no debe devolver
localhost
nilocalhost6
.
Confirme el nombre de dominio completo (FQDN).
FreeIPA tiene una limitación de 64 caracteres para el FQDN que valida durante la instalación. Si el FQDN supera los 64 caracteres, utilice sudo hostnamectl set-hostname NAME
, donde NAME
es el FQDN, para abreviarlo.
-
Verifique el FQDN y su longitud.
hostname -f
echo $(hostname -f) | wc -m
Nota: El FQDN consta de
freeipa.<RND_SUBNET>.linuxvirt.oraclevcn.com
, donde<RND_SUBNET>
es una cadena aleatoria de 4 caracteres con el prefijo de la letrao
.
Confirme la resolución de nombres.
-
Obtener la dirección IP del servidor.
sudo ip addr show
Resultado de ejemplo:
[oracle@freeipa ~]$ sudo ip addr show ... 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:00:17:02:b3:9e brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute ens3 valid_lft 85923sec preferred_lft 85923sec inet6 fe80::200:17ff:fe02:b39e/64 scope link noprefixroute valid_lft forever preferred_lft forever
La dirección IPv4 se muestra en la línea que empieza por
inet
. -
Verificar la configuración de DNS de reenvío.
host $(hostname -f)
Resultado de ejemplo:
[oracle@freeipa ~]$ host $(hostname -f) freeipa.o6fb5.linuxvirt.oraclevcn.com has address 10.0.0.150
Otra forma de verificar la configuración de DNS de reenvío es utilizar
dig +short $(hostname -f) A
. Tantohost
comodig
forman parte del paquetebind-utils
, que proporciona diferentes utilidades para consultar servidores de nombres DNS. -
Verifique la configuración de DNS inverso (registros PTR).
host $(hostname -i)
Resultado de ejemplo:
[oracle@freeipa ~]$ host $(hostname -i) 150.0.0.10.in-addr.arpa domain name pointer freeipa.o6fb5.linuxvirt.oraclevcn.com.
Una alternativa es utilizar
dig +short -x $(hostname -i)
.
Apertura de los puertos de firewall necesarios
FreeIPA requiere que varios puertos estén abiertos y disponibles para comunicarse con sus servicios.
Servicio | Puertos | Protocolo |
---|---|---|
HTTP/HTTPS | 80.443 | TCP |
LDAP/LDAP | 389.636 | TCP |
Kerberos | 88.464 | TCP y UDP |
DNS | 53 | TCP y UDP |
NTP | 123 | UDP |
Oracle Linux proporciona el servicio freeipa-4
para abrir estos puertos necesarios. Para obtener más información, consulte /usr/lib/firewalld/services/freeipa-4.xml
. El servicio freeipa-4
sustituye los servicios freeipa-ldap
y freeipa-ldaps
en desuso.
-
Agregue el servicio
firewalld
.sudo firewall-cmd --permanent --add-service=freeipa-4
sudo firewall-cmd --reload
Instalación de los paquetes requeridos
-
Instale los paquetes para un servidor FreeIPA sin los servicios DNS integrados.
sudo dnf install ipa-server -y
Nota: Los servicios de DNS integrados no se utilizan como parte de este tutorial. Si es necesario, agregue el paquete
ipa-server-dns
a la lista de instalación.
Instalar y configurar el servidor FreeIPA
-
Ejecute la utilidad de instalación.
sudo ipa-server-install
La secuencia de comandos comienza proporcionando la ubicación del archivo log de instalación y un resumen de lo que incluye el servidor FreeIPA.
Resultado de ejemplo:
[oracle@freeipa ~]$ sudo 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. Version 4.9.8 This includes: * Configure a stand-alone CA (dogtag) for certificate management * Configure the NTP client (chronyd) * Create and configure an instance of Directory Server * Create and configure a Kerberos Key Distribution Center (KDC) * Configure Apache (httpd) * Configure SID generation * Configure the KDC to enable PKINIT ...
A continuación, la secuencia de comandos utiliza varias peticiones de datos para configurar la configuración del servidor. El terminal muestra la respuesta predeterminada al indicador entre corchetes y al pulsar
Enter
se acepta la respuesta predeterminada. -
Acepte la respuesta por defecto de
no
para configurar el servicio DNS integrado.Do you want to configure integrated DNS (BIND)? [no]:
-
Acepte el nombre de host, el nombre de dominio y el nombre de dominio por defecto.
Estos son los valores verificados al principio de esta práctica. Se recomienda que el nombre de dominio coincida con el nombre de dominio de DNS principal, con todas las letras en mayúscula.
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.o6fb5.linuxvirt.oraclevcn.com]: The domain name has been determined based on the host name. Please confirm the domain name [o6fb5.linuxvirt.oraclevcn.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 [O6FB5.linuxvirt.ORACLEVCN.COM]:
-
Introduzca y confirme las contraseñas para el superusuario del servidor de directorios y el usuario FreeIPA
admin
.El superusuario del servidor de directorios se asigna a
cn=Directory Manager
dentro del directorio.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):
-
Acepte los valores por defecto para el nombre de dominio NETBIOS y configure la cronía.
NetBIOS domain name [O6FB5]: Do you want to configure chrony with NTP server or pool address? [no]:
-
La secuencia de comandos presenta un resumen de la configuración del servidor.
-
Introduzca
yes
para aceptar la configuración del servidor.Continue to configure the system with these values? [no]: yes
-
La secuencia de comandos continúa para configurar el servidor.
Esta operación podría tardar unos minutos.
... Client configuration complete. The ipa-client-install command was successful Please add records in this file to your DNS system: /tmp/ipa.system.records.mv9i0ec2.db ============================================================================== Setup complete Next steps: 1. You must make sure these network ports are open: TCP Ports: * 80, 443: HTTP/HTTPS * 389, 636: LDAP/LDAPS * 88, 464: kerberos UDP Ports: * 88, 464: kerberos * 123: ntp 2. You can now obtain a kerberos ticket using the command: 'kinit admin' This ticket will allow you to use the IPA tools (e.g., ipa user-add) and the web user interface. Be sure to back up the CA certificates stored in /root/cacert.p12 These files are required to create replicas. The password for these files is the Directory Manager password The ipa-server-install command was successful
Al finalizar, la secuencia de comandos proporciona:
- Resumen.
- Lista de registros para agregar al sistema DNS.
- Recomendación para realizar una copia de seguridad de los certificados de CA generados.
Los puertos de red necesarios ya están abiertos mediante el servicio
freeipa-4
firewalld
.
Pruebe el servidor FreeIPA
La instalación de FreeIPA incluye un cliente de línea de comandos y WebUI para interactuar con el servidor. El uso de WebUI está fuera del ámbito de este tutorial.
Acceso a la interfaz de línea de comandos (CLI)
-
Autentique el usuario
admin
en el dominio Kerberos.kinit admin
Cuando se le solicite, introduzca la contraseña para el usuario
admin
creada durante los pasos de instalación y configuración. El comandokinit
genera un ticket de Kerberos. -
Enumerar la información del ticket
klist
Resultado de ejemplo:
[oracle@freeipa ~]$ sudo klist Ticket cache: KCM:0 Default principal: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM Valid starting Expires Service principal 09/28/2022 14:05:46 09/29/2022 13:05:53 krbtgt/O6FB5.LINUXVIRT.ORACLEVCN.COM@O6FB5.LINUXVIRT.ORACLEVCN.COM
-
Obtenga una lista de todos los usuarios existentes en el servidor FreeIPA.
ipa user-find
Los resultados devuelven el usuario
admin
, que es el único usuario que existe actualmente.Resultado de ejemplo:
[oracle@freeipa ~]$ sudo ipa user-find -------------- 1 user matched -------------- User login: admin Last name: Administrator Home directory: /home/admin Login shell: /bin/bash Principal alias: admin@O6FB5.LINUXVIRT.ORACLEVCN.COM, root@O6FB5.LINUXVIRT.ORACLEVCN.COM UID: 872200000 GID: 872200000 Account disabled: False ---------------------------- Number of entries returned 1 ----------------------------
Ajustes de seguridad y endurecimiento
A continuación, se muestran algunas formas de utilizar el servidor FreeIPA de forma segura.
Desactivar enlaces anónimos
El servidor LDAP FreeIPA activa los enlaces anónimos como valores por defecto, lo que expone valores de directorio y valores de configuración específicos.
El atributo nsslapd-allow-anonymous-access
controla este comportamiento. Los valores aceptables incluyen:
on
: permite todos los enlaces anónimos (por defecto)rootdse
: permite enlaces anónimos solo para la información de DSE raízoff
: no permite ningún enlace anónimo
La recomendación es utilizar rootdse
en lugar de off
al no permitir enlaces anónimos, ya que el uso de off
también impide que los clientes externos comprueben la configuración del servidor. Los clientes que no son de dominio, como LDAP y los clientes web, se conectan de forma anónima mediante la lectura del archivo DSE raíz para obtener los detalles de conexión.
-
Compruebe si están activados los enlaces anónimos.
ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
-x
define la autenticación simple o anónima.-h
define el host del servidor LDAP.-b
define el dn base para la búsqueda.
Los valores de clave, incluido el dn base para el servidor FreeIPA, se almacenan en el archivo
/etc/ipa/default.conf
.$RND_SUBNET
es una variable de entorno definida en el entorno de prácticas libres que representa la cadena aleatoria de 4 caracteres en el FQDN.Resultado de ejemplo:
... # Default SMB Group, groups, accounts, o6fb5.linuxvirt.oraclevcn.com dn: cn=Default SMB Group,cn=groups,cn=accounts,dc=o6fb5,dc=linuxvirt,dc=oraclevc n,dc=com cn: Default SMB Group description: Fallback group for primary group RID, do not add users to this gr oup objectClass: top objectClass: ipaobject objectClass: posixgroup objectClass: ipantgroupattrs ipaUniqueID: 0c9cf178-4324-11ed-bf0b-02001704fe22 gidNumber: 921600001 ipaNTSecurityIdentifier: S-1-5-21-2697967063-3375457457-2974965896-1001 # search result search: 2 result: 0 Success # numResponses: 110 # numEntries: 109
Los resultados de la búsqueda devuelven todo el árbol para el directorio LDAP.
-
Modifique la configuración y desactive los enlaces anónimos.
El comando
ldapmodify
acepta un archivo LDIF con los cambios que se deben realizar o lee operaciones de la entrada estándar.-
Cree el archivo LDIF.
cat << 'EOF' | tee ~/disable_anon_bind.ldif > /dev/null dn: cn=config changetype: modify replace: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: rootdse EOF
Es posible cambiar varios atributos separándolos con un carácter de guión
-
en una línea por sí misma. Cada cambio adicional comienza con el tipo de cambio de atributo y proporciona los atributos necesarios. -
Aplique los cambios de LDIF.
ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif
-x
define la autenticación simple o anónima.-D
define el DN de enlace.-W
solicita la contraseñaadmin
de LDAP.-H
utiliza el identificador uniforme de recursos (URI) de LDAP para conectarse en lugar del host del servidor LDAP.-ZZ
inicia una solicitud TLS y fuerza una respuesta correcta.
Nota:
-ZZ
es necesario debido al uso de certificados autofirmados.Resultado de ejemplo:
[oracle@freeipa ~]$ ldapmodify -x -D "cn=Directory Manager" -W -H ldap:// -ZZ -f ~/disable_anon_bind.ldif Enter LDAP Password: modifying entry "cn=config"
-
Reinicie el servidor FreeIPA.
sudo systemctl restart ipa.service
-
-
Verifique la modificación consultando el directorio de forma anónima.
ldapsearch -x -h $(hostname -f) -b dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com
Observe la respuesta
Anonymous access is not allowed
.Resultado de ejemplo:
[oracle@freeipa ~]$ ldapsearch -x -h freeipa.o6fb5.linuxvirt.oraclevcn.com -b dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com # extended LDIF # # LDAPv3 # base <dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 48 Inappropriate authentication text: Anonymous access is not allowed. # numResponses: 1
-
Verifique que la consulta del directorio funciona mediante la autenticación.
ldapsearch -D uid=admin,cn=users,cn=accounts,dc=$RND_SUBNET,dc=linuxvirt,dc=oraclevcn,dc=com -W -H ldap://
Resultado de ejemplo:
... # freeipa.o6fb5.linuxvirt.oraclevcn.com + 389, subordinate-ids, dna, ipa, etc, o6fb5.linuxvirt.oraclevcn.com dn: dnaHostname=freeipa.o6fb5.linuxvirt.oraclevcn.com+dnaPortNum=389,cn=subord inate-ids,cn=dna,cn=ipa,cn=etc,dc=o6fb5,dc=linuxvirt,dc=oraclevcn,dc=com objectClass: dnaSharedConfig objectClass: top dnaHostname: freeipa.o6fb5.linuxvirt.oraclevcn.com dnaPortNum: 389 dnaSecurePortNum: 636 dnaRemainingValues: 32766 # search result search: 2 result: 0 Success # numResponses: 475 # numEntries: 474
Verificar que TLS está activado
A partir de Oracle Linux 8, FreeIPA utiliza la política de cifrado de todo el sistema. Consulte la página del comando man crypto-policies(7)
para obtener más información.
-
Muestre la política de cifrado actual del sistema.
cat /etc/crypto-policies/config
-
Muestre los detalles de la política de cifrado.
cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt
Resultado de ejemplo:
[oracle@freeipa ~]$ cat /usr/share/crypto-policies/$(cat /etc/crypto-policies/config)/nss.txt library= name=Policy NSS=flags=policyOnly,moduleDB config="disallow=ALL allow=HMAC-SHA256:HMAC-SHA1:HMAC-SHA384:HMAC-SHA512:CURVE25519:SECP256R1:SECP384R1:SECP521R1:aes256-gcm:chacha20-poly1305:aes256-cbc:aes128-gcm:aes128-cb > c:SHA256:SHA384:SHA512:SHA224:ECDHE-RSA:ECDHE-ECDSA:RSA:DHE-RSA:ECDSA:RSA-PSS:RSA-PKCS:tls-version-min=tls1.2:dtls-version-min=dtls1.2:DH-MIN=2048:DSA-MIN=2048:RSA-MIN=2048"
Observe que la política
DEFAULT
utiliza un mínimo deTLS 1.2
.
Compruebe el estado del servidor FreeIPA
El servidor FreeIPA incluye la utilidad ipactl
para ver el estado de los servicios configurados. La misma utilidad también puede iniciar, parar y reiniciar todo el servidor FreeIPA. Si necesita start
, stop
o restart
componentes individuales, utilice systemctl COMMAND name.service
.
-
Muestra el estado de todos los servicios.
sudo ipactl status
Resultado de ejemplo:
[oracle@freeipa ~]$ sudo ipactl status Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING pki-tomcatd Service: RUNNING ipa-otpd Service: RUNNING ipa: INFO: The ipactl command was successful
Utilice
sudo ipactl --help
para ver opciones de comandos adicionales.
Crear Usuarios y Grupos
Con la instalación y la configuración básicas del servidor FreeIPA completas, el siguiente paso consiste en gestionar la gestión de identidades, que consiste en crear usuarios y grupos. Antes de hacerlo, genere un token de Kerberos.
-
Genere un token para el usuario
admin
.kinit admin
-
Obtener una lista de tokens existentes.
klist
Los tokens de Kerberos son válidos durante 24 horas por defecto. Debido a la ejecución anterior de estos comandos en el paso titulado "Access the Command-Line Interface (CLI)", la lista muestra el token original en lugar de crear uno nuevo.
-
Agregue un nuevo grupo de usuarios.
FreeIPA define un grupo de usuarios como un juego de usuarios con políticas de contraseñas estándar, privilegios y otras características.
Un grupo de usuarios puede incluir:
- usuarios
- otros grupos de usuarios
- usuarios externos que existen fuera de FreeIPA
ipa group-add foo
Resultado de ejemplo:
[oracle@freeipa ~]$ ipa group-add foo ----------------- Added group "foo" ----------------- Group name: foo GID: 1326400003
El servidor FreeIPA soporta tres tipos de grupo:
- POSIX (por defecto)
- No POSIX
- Externa
El grupo foo
es un grupo de usuarios POSIX. Para especificar un tipo de grupo diferente, utilice una de estas opciones:
--nonposix
para crear un grupo que no sea POSIX--external
para crear un grupo externo- Obtener una lista de todos los grupos de usuarios existentes.
ipa group-find
Resultado de ejemplo:
[oracle@freeipa ~]$ ipa group-find ---------------- 5 groups matched ---------------- Group name: admins Description: Account administrators group GID: 1326400000 Group name: editors Description: Limited admins who can edit other users GID: 1326400002 Group name: foo GID: 1326400003 Group name: ipausers Description: Default group for all users Group name: trust admins Description: Trusts administrators group ---------------------------- Number of entries returned 5 ----------------------------
El servidor FreeIPA crea los siguientes grupos de usuarios durante la instalación.
admins
(Fin de creación)ipausers
(Fin de creación)trust admins
(Fin de creación)
Advertencia: No suprima el grupo
admin
porque contiene el usuarioadmin
por defecto. El servidor FreeIPA requiere que el grupoadmin
funcione correctamente.
-
Agregue una nueva cuenta de usuario.
ipa user-add
El comando ejecuta una secuencia de comandos interactiva que solicita el conjunto mínimo de datos que FreeIPA necesita para crear una cuenta de usuario.
Resultado de ejemplo:
[oracle@freeipa ~]$ ipa user-add First name: Oracle Last name: User User login [ouser]: oracle ------------------- Added user "oracle" ------------------- User login: oracle First name: Oracle Last name: User Full name: Oracle User Display name: Oracle User Initials: OU Home directory: /home/oracle GECOS: Oracle User Login shell: /bin/sh Principal name: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM Principal alias: oracle@OD1F5.LINUXVIRT.ORACLEVCN.COM Email address: oracle@od1f5.linuxvirt.oraclevcn.com UID: 1326400004 GID: 1326400004 Password: False Member of groups: ipausers Kerberos keys available: False
De manera alternativa, la ejecución del comando con varias opciones permite crear una cuenta de usuario en un modo no interactivo. Para obtener una lista de las opciones disponibles, ejecute
ipa user-add --help
. -
Agregue el nuevo usuario al nuevo grupo de usuarios.
ipa group-add-member foo --users=oracle
Resultado de ejemplo:
[oracle@freeipa ~]$ ipa group-add-member foo --users=oracle Group name: foo GID: 1326400003 Member users: oracle ------------------------- Number of members added 1 -------------------------
El comando ipa
tiene más funciones de las que se muestran. Para comandos adicionales, ejecute ipa help commands
para obtener una lista completa.
Resumen
Concluye este laboratorio, que presenta los conceptos básicos de la instalación y el uso del servidor FreeIPA. Explore más a fondo utilizando los enlaces siguientes o leyendo las páginas del manual del producto, ya que FreeIPA tiene muchas funciones adicionales más allá de lo que se trata aquí.
Para obtener más información
Ver otros recursos relacionados:
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Install FreeIPA Server on Oracle Linux
F71514-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.