Cómo configurar NFSv4 en un entorno kerberizado para mejorar el rendimiento y la seguridad

**Cómo configurar NFSv4 en un entorno kerberizado para mejorar el rendimiento y la seguridad**

En este artículo, te mostraremos cómo configurar NFSv4 en un entorno kerberizado para obtener un mejor rendimiento y seguridad. Para ello, asumiremos que ya tienes un entorno Kerberos funcional, un servidor NFS y un poco de paciencia. También asumiremos que estás utilizando una distribución Red Hat Enterprise Linux o Fedora; si estás utilizando otra distribución Linux, es posible que algunas configuraciones como NFS o los ajustes del firewall se realicen en archivos diferentes.

1. Configuración del directorio de exportación de NFSv4

Para empezar, necesitamos configurar nuestro directorio de exportación de NFSv4 de nivel superior. Este será un contenedor "raíz" donde podremos unir otros puntos de montaje como subdirectorios. En este ejemplo, crearemos el directorio /exports/ para ser nuestro sistema de archivos exportado de nivel superior y haremos que el directorio local /srv/ esté disponible a través de él:

```shell
# mkdir /exports
# chmod 1777 /exports
# mount --bind /srv /exports/srv
```

Esto remonta /srv en /exports/srv. Esto significa que /srv se puede acceder directamente o a través de /exports/srv y los cambios realizados en una ubicación se reflejarán en la otra.

Cómo instalar y configurar Sybase Adaptive Server Enterprise (ASE) en Linux

Para que esta configuración sea persistente, agrega el comando de montaje anterior a /etc/rc.d/rc.local u otro script que se ejecute durante el arranque del sistema.

2. Configuración del archivo de exportación

A continuación, edita el archivo /etc/exports y cambia las exportaciones en estilo NFSv3 a exportaciones en estilo NFSv4. Por ejemplo, un archivo /etc/exports antiguo podría verse así:

```
/srv 192.168.1.0/255.255.255.0(rw,sync)
```

Queremos cambiar esto a:

```
/exports     gss/krb5(rw,sync,fsid=0,insecure,no_subtree_check)
/exports/srv gss/krb5(rw,sync,nohide,insecure,no_subtree_check)
```

Qué es sudo y por qué deberías usarlo

Lo primero que se debe tener en cuenta es que la entrada "/exports" tiene la opción "fsid=0", lo que le indica a NFS que esta es la exportación "raíz" que creamos anteriormente.

Los directorios subsiguientes (esos directorios montados de forma separada debajo de él, como /srv, que hemos remontado debajo de /exports antes), no pueden tener "fsid=0" en sus opciones; en cambio, usamos "nohide" aquí, para que no necesiten montarse explícitamente, sino que se monten como parte de una llamada de montaje a la exportación "raíz" por parte de los clientes de NFS.

También puedes optar por utilizar krb5 normal, que se utiliza solo para la autenticación, o krb5i (gss/krb5i) para la verificación de integridad, o krb5p (gss/krb5p) para la encriptación. Hay una penalización de rendimiento para krb5i y krb5p, pero si estás en una red de confianza parcial o no confiable, las opciones de integridad y encriptación completa pueden valer el costo de rendimiento.

3. Creación del principal de servidor para NFS

Crea el principal de servidor para el servidor NFS y agrégalo al archivo keytab del servidor utilizando kadmin (por lo general, /etc/krb5.keytab):

```shell
# kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local:  addprinc -randkey nfs/nfsserver.dominio.com
WARNING: no policy specified for nfs/[email protected]; defaulting to no policy
Principal "nfs/[email protected]" created.
kadmin.local:  ktadd -e des-cbc-crc:normal -k /etc/krb5.keytab nfs/nfsserver.dominio.com
Entry for principal nfs/nfsserver.dominio.com with kvno 5, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/nfsserver.dominio.com with kvno 5, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/nfsserver.dominio.com with kvno 5, encryption type DES with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal nfs/nfsserver.dominio.com with kvno 5, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/etc/krb5.keytab.
kadmin.local: quit
```

Cómo eliminar registros duplicados en una base de datos de Access

4. Configuración del archivo idmapd.conf

Edita el archivo /etc/idmapd.conf y asegúrate que las opciones Nobody-User y Nobody-Group sean correctas (por ejemplo, en Red Hat Enterprise Linux y Fedora, utiliza el usuario y el grupo "nfsnobody"; otras distribuciones pueden utilizar simplemente "nobody"). También asegúrate de que la entrada Domain esté configurada correctamente con el nombre de dominio DNS.

5. Reinicio de los servicios de NFS

A continuación, reinicia los servicios de NFS:

```shell
# service nfs restart
# service rpcidmapd restart
```

Si estás utilizando un firewall en el servidor, asegúrate de abrir el puerto TCP 2049 para que se pueda usar con NFSv4.

Ventajas de las claves sustitutas en bases de datos relacionales

6. Configuración de los clientes de NFS

Luego, es hora de configurar los clientes. En el sistema cliente, edita el archivo /etc/sysconfig/nfs y habilita SECURE_NFS como lo hicimos en el servidor. A continuación, debes ejecutar kadmin, lo que significa que deberás autenticarte en Kerberos. Si el usuario root en el cliente no tiene una cuenta de Kerberos, deberás copiar el archivo existente /etc/krb5.keytab al directorio del usuario que tenga privilegios administrativos y manipular el archivo como ese usuario:

```shell
# cp /etc/krb5.keytab ~usuario/
# chmod 600 ~usuario/krb5.keytab
# chown usuario:usuario ~usuario/krb5.keytab
# exit
$ kadmin
Couldn't open log file /var/log/kadmind.log: Permission denied
Authenticating as principal usuario/[email protected] with password.
Password for usuario/[email protected]:
kadmin:  addprinc -randkey nfs/nfsclient.dominio.com
WARNING: no policy specified for nfs/[email protected]; defaulting to no policy
Principal "nfs/[email protected]" created.
kadmin:  ktadd -k /home/usuario/krb5.keytab nfs/nfsclient.dominio.com
Entry for principal nfs/nfsclient.dominio.com with kvno 4, encryption type Triple DES cbc mode with HMAC/sha1 added to keytab WRFILE:/home/usuario/krb5.keytab.
Entry for principal nfs/nfsclient.dominio.com with kvno 4, encryption type ArcFour with HMAC/md5 added to keytab WRFILE:/home/usuario/krb5.keytab.
Entry for principal nfs/nfsclient.dominio.com with kvno 4, encryption type DES with HMAC/sha1 added to keytab WRFILE:/home/usuario/krb5.keytab.
Entry for principal nfs/nfsclient.dominio.com with kvno 4, encryption type DES cbc mode with RSA-MD5 added to keytab WRFILE:/home/usuario/krb5.keytab.
kadmin:  quit
$ sudo su -
# cd ~usuario
# chown root:root krb5.keytab
# chmod 600 krb5.keytab
# mv krb5.keytab /etc/
```

Luego, reinicia (o inicia) los servicios del cliente de NFS y asegúrate de que se inicien en el próximo arranque:

```shell
# service rpcidmapd restart
# service rpcgssd restart
# chkconfig rpcidmapd on
# chkconfig rpcgssd on
```

A continuación, crea el directorio en el que se montará la exportación remota de NFS:

Tipos de JOIN en SQL: explicación básica y ejemplos

```shell
# mkdir /nfsserver
```

En este punto, puedes editar /etc/fstab. Debido a que NFSv4 cambia cómo se llaman las cosas, estás solicitando montar la raíz ('/') del servidor en lugar de una ruta específica (es decir, /exports/srv/). Por eso, es importante tener un directorio exportado y vincular cualquier montaje adicional bajo ese árbol. En /etc/fstab debería haber algo como esto:

```
nfsserver.dominio.com:/ /nfsserver nfs4 rw,hard,intr,sec=krb5 0 0
```

Y trata de montarlo:

```shell
# mount -v /nfsserver
mount.nfs4: timeout set for Thu Oct 14 15:55:24 2010
mount.nfs4: trying text-based options 'hard,intr,sec=krb5,addr=192.168.1.14,clientaddr=192.168.1.52'
nfsserver.dominio.com:/ on /nfsserver type nfs4 (rw,hard,intr,sec=krb5)
```

Ahora, como usuario root, podrás ver el contenido del punto de montaje (/nfsserver), pero como usuario regular no podrás hasta que ejecutes kinit:

Funciones y cláusulas de la instrucción SELECT en SQL: Guía completa

```shell
$ klist
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_501)
$ ls /nfsserver/
ls: cannot access /nfsserver/: Permission denied
$ kinit
Password for [email protected]:
$ ls /nfsserver/
srv
$ klist
Ticket cache: FILE:/tmp/krb5cc_501
Default principal: [email protected]
Valid starting     Expires            Service principal
10/14/10 15:54:53  10/15/10 15:54:53  krbtgt/[email protected]
       renew until 10/21/10 15:54:53
10/14/10 15:54:57  10/15/10 15:54:53  nfs/[email protected]
       renew until 10/21/10 15:54:53
```

En este punto, podrás acceder al servidor NFSv4 remoto utilizando las credenciales de Kerberos. Antes de NFSv4, la seguridad en NFS prácticamente no existía. Podías evitar que las máquinas no autorizadas se conectaran a las exportaciones de NFS, pero tenías que confiar en que las asignaciones de ID de usuario fueran las mismas entre los sistemas para utilizar los permisos del servidor y proteger adecuadamente los archivos. Utilizar Kerberos de esta manera hace que NFS sea mucho más seguro de lo que solía ser.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Gestión de datos, allí encontraras muchos artículos similares a Cómo configurar NFSv4 en un entorno kerberizado para mejorar el rendimiento y la seguridad , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.