Búsqueda de sitios web

Configuración del servidor NFS con autenticación basada en Kerberos para clientes Linux - Parte 7


En el último artículo de esta serie, revisamos cómo configurar un recurso compartido Samba en una red que puede constar de varios tipos de sistemas operativos. Ahora, si necesita configurar el uso compartido de archivos para un grupo de clientes tipo Unix, automáticamente pensará en el Sistema de archivos de red, o NFS para abreviar.

En este artículo, lo guiaremos a través del proceso de uso de la autenticación basada en Kerberos para recursos compartidos NFS. Se supone que ya ha configurado un servidor NFS y un cliente. De lo contrario, consulte instalar y configurar el servidor NFS, que enumerará los paquetes necesarios que deben instalarse y explicará cómo realizar las configuraciones iniciales en el servidor antes de continuar.

Además, querrá configurar SELinux y firewalld para permitir compartir archivos a través de NFS.

El siguiente ejemplo supone que su recurso compartido NFS está ubicado en /nfs en box2:

semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
restorecon -R /nfs
setsebool -P nfs_export_all_rw on
setsebool -P nfs_export_all_ro on

(donde el indicador -P indica persistencia entre reinicios).

Finalmente, no olvides:

Crear grupo NFS y configurar directorio compartido NFS

1. Cree un grupo llamado nfs y agregue el usuario nfsnobody, luego cambie los permisos de /nfs. > directorio a 0770 y el propietario de su grupo a nfs. Por lo tanto, nfsnobody (que está asignado a las solicitudes del cliente) tendrá permisos de escritura en el recurso compartido) y no necesitará usar no_root_squash en el archivo /etc. /exporta archivo.

groupadd nfs
usermod -a -G nfs nfsnobody
chmod 0770 /nfs
chgrp nfs /nfs

2. Modifique el archivo de exportaciones (/etc/exports) de la siguiente manera para permitir solo el acceso desde box1 usando Kerberos. seguridad (sec=krb5).

Nota: que el valor de anongid se ha establecido en el GID del nfs grupo que creamos anteriormente:

/nfs box1(rw,sec=krb5,anongid=1004)

3. Reexportar (-r) todas las (-a) las acciones de NFS. Agregar detalle a la salida (-v) es una buena idea ya que proporcionará información útil para solucionar problemas del servidor si algo sale mal:

exportfs -arv

4. Reinicie y habilite el servidor NFS y los servicios relacionados. Tenga en cuenta que no es necesario habilitar nfs-lock y nfs-idmapd porque los otros servicios los iniciarán automáticamente al arrancar:

systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
systemctl enable rpcbind nfs-server

Entorno de prueba y otros requisitos previos

En esta guía utilizaremos el siguiente entorno de prueba:

  1. Máquina cliente [box1: 192.168.0.18]
  2. Servidor NFS/Kerberos [box2: 192.168.0.20] (también conocido como Centro de distribución de claves, o KDC para abreviar).

Nota: el servicio Kerberos es crucial para el esquema de autenticación.

Como puedes ver, el servidor NFS y el KDC están alojados en la misma máquina para simplificar, aunque puedes configurarlos en máquinas separadas si tienes más disponibles. Ambas máquinas son miembros del dominio mydomain.com.

Por último, pero no menos importante, Kerberos requiere que al menos un esquema básico de resolución de nombres y el servicio Network Time Protocol estén presentes tanto en el cliente como en el servidor, ya que la seguridad de la autenticación Kerberos se basa en parte en las marcas de tiempo de Entradas.

Para configurar la resolución de nombres, usaremos el archivo /etc/hosts tanto en el cliente como en el servidor:

192.168.0.18    box1.mydomain.com    box1
192.168.0.20    box2.mydomain.com    box2

En RHEL 7, chrony es el software predeterminado que se utiliza para la sincronización NTP:

yum install chrony
systemctl start chronyd
systemctl enable chronyd

Para asegurarse de que chrony realmente esté sincronizando la hora de su sistema con los servidores de hora, puede ejecutar el siguiente comando dos o tres veces y asegurarse de que la compensación se acerque a cero:

chronyc tracking

Instalación y configuración de Kerberos

Para configurar el KDC, instale los siguientes paquetes tanto en el servidor como en el cliente (omita el paquete del servidor en el cliente):

yum update && yum install krb5-server krb5-workstation pam_krb5

Una vez instalado, edite los archivos de configuración (/etc/krb5.conf y /var/kerberos/krb5kdc/kadm5.acl) y reemplace todas las instancias de ejemplo.com (minúsculas y mayúsculas) con midominio.com de la siguiente manera.

Ahora cree la base de datos Kerberos (tenga en cuenta que esto puede llevar un tiempo ya que requiere cierto nivel de entropía en su sistema. Para acelerar las cosas, abrí otra terminal y ejecuté ping -f localhost durante 30-45 segundos):

kdb5_util create -s

A continuación, habilite Kerberos a través del firewall e inicie/habilite los servicios relacionados.

Importante: nfs-secure también debe iniciarse y habilitarse en el cliente:

firewall-cmd --permanent --add-service=kerberos
systemctl start krb5kdc kadmin nfs-secure   
systemctl enable krb5kdc kadmin nfs-secure       

A continuación, utilizando la herramienta kadmin.local, cree un administrador principal para root:

kadmin.local
addprinc root/admin

Y agregue el servidor Kerberos a la base de datos:

addprinc -randkey host/box2.mydomain.com

Lo mismo ocurre con el servicio NFS tanto para el cliente (box1) como para el servidor (box2). Tenga en cuenta que en la siguiente captura de pantalla olvidé hacerlo para box1 antes de salir:

addprinc -randkey nfs/box2.mydomain.com
addprinc -randkey nfs/box1.mydomain.com

Y salga escribiendo salir y presionando Enter:

Luego obtenga y almacene en caché el ticket de concesión de tickets de Kerberos para root/admin:

kinit root/admin
klist

El último paso antes de utilizar Kerberos es almacenar en un archivo keytab (en el servidor) los principales que están autorizados a utilizar la autenticación Kerberos:

kadmin.local
ktadd host/box2.mydomain.com
ktadd nfs/box2.mydomain.com
ktadd nfs/box1.mydomain.com

Finalmente, monte el recurso compartido y realice una prueba de escritura:

mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
echo "Hello from linux-console.net" > /mnt/greeting.txt

Ahora desmontemos el recurso compartido, cambiemos el nombre del archivo keytab en el cliente (para simular que no está presente) e intentemos montar el recurso compartido nuevamente:

umount /mnt
mv /etc/krb5.keytab /etc/krb5.keytab.orig

Ahora puede utilizar el recurso compartido NFS con autenticación basada en Kerberos.

Resumen

En este artículo hemos explicado cómo configurar NFS con autenticación Kerberos. Dado que hay mucho más sobre el tema de lo que podemos cubrir en una sola guía, no dude en consultar la documentación en línea de Kerberos y dado que Kerberos es un poco complicado por decir lo mínimo, no dude en enviarnos una nota utilizando el siguiente formulario. si tiene algún problema o necesita ayuda con sus pruebas o implementación.