El ip de mi server nfs sera 172.24.254.254 y el cliente station18 172.24.0.10
El servicio nfs se instala con el paquete nfs-utils (al menos en rhel54), luego en la configuracion:
[root@server ~]# cat /etc/exports
/pruebas/nfs 172.24.0.0/255.255.0.0(rw,sync)
[root@server ~]# showmount -e
Export list for server.example.com:
/pruebas/nfs 172.24.0.0/255.255.0.0
[root@server ~]# getenforce
Enforcing
[root@server ~]# ls -l /pruebas/
total 8
drwxr-xr-x 2 root root 4096 Jun 10 19:01 nfs
[root@server ~]#
Revisemos el valor del boolean nfs_export_all_rw en el server :
[root@server ~]# getsebool nfs_export_all_rw
nfs_export_all_rw --> off
Haciendo pruebas desde station18 para montar la carpeta /pruebas/nfs publicada por el server:
[root@station18 /]# showmount -e 172.24.254.254
Export list for 172.24.254.254:
/pruebas/nfs 172.24.0.0/255.255.0.0
Bien, "al parecer" el servicio nfs esta en el server esta OK como servicio (para fines de aprendizaje de selinux aun la politica por default en el firewall del server es ACCEPT)
Ahora intentare montar el recurso compartido por el server en mi station18 en la ruta /mnt/nfs
[root@station18 /]# mount 172.24.254.254:/pruebas/nfs /mnt/nfs/
mount: 172.24.254.254:/pruebas/nfs failed, reason given by server: Permission denied
Ajaaa !!! el selinux del server no me deja ...ademas el log registro esto :
Jun 10 19:22:57 server kernel: type=1400 audit(1276215777.400:40): avc: denied { search } for pid=2173 comm="rpc.mountd" name="pruebas" dev=dm-0 ino=1265473 scontext=system_u:system_r:nfsd_t:s0 tcontext=root:object_r:default_t:s0 tclass=dir
Bien, entonces en el server activaremos el valor del boolean requerido nfs_export_all_rw a 1:
[root@server ~]# setsebool nfs_export_all_rw 1
Entonces ya vamos teniendo una mejor relacion con /var/log/messages de nuestro server :
Jun 10 19:29:30 server kernel: type=1405 audit(1276216170.802:41): bool=nfs_export_all_rw val=1 old_val=0 auid=4294967295 ses=4294967295
Jun 10 19:29:30 server kernel: type=1107 audit(1276216170.805:42): user pid=1948 uid=81 auid=4294967295 subj=system_u:system_r:system_dbusd_t:s0 msg='avc: received policyload notice (seqno=4)
Jun 10 19:29:30 server kernel: : exe="?" (sauid=81, hostname=?, addr=?, terminal=?)'
Jun 10 19:29:31 server setsebool: The nfs_export_all_rw policy boolean was changed to 1 by root
Vemos que ahora ya podemos montar desde nuestro cliente station18.
[root@station18 /]# mount 172.24.254.254:/pruebas/nfs /mnt/nfs/
[root@station18 /]#
El log de nuestro server dice que el cliente station18 monto el recurso publicado en el server /pruebas/nfs :
Jun 10 19:49:50 server mountd[2173]: authenticated mount request from 172.24.0.10:908 for /pruebas/nfs (/pruebas/nfs)
Podemos tambien verificar que desde nuestro cliente station18 podemos mirar que existia un archivo de nombre "algo" publicado en el server nfs el cual hemos montado en nuestro /mnt/nfs
[root@station18 /]# ls -lZ /mnt/nfs/*
-rw-r--r-- root root system_u:object_r:nfs_t /mnt/nfs/algo
[root@station18 /]#
Desde station18 tratemos de crear (osea escribir) un archivo "nuevo"
[root@station18 /]# touch /mnt/nfs/nuevo
touch: cannot touch `/mnt/nfs/otro': Permission denied
Upss, al inicio de este post indicamos detalles de la carpeta compartida en el server no ?
[root@server ~]# ls -l /pruebas/
total 8
drwxr-xr-x 2 root root 4096 Jun 10 19:01 nfs
Ok, en el server las politicas de acceso discresionales (DAC) estan denegando por cuestiones de permisos, ya esto lo manejamos con mejor experiencia, agregamos a "otros" permisos de escritura sobre /pruebas/nfs
[root@server ~]# chmod o+w /pruebas/nfs/
[root@server ~]# ls -lZ /pruebas/
drwxr-xrwx root root root:object_r:default_t nfs
Ahora ya podriamos crear (escribir) el archivo de nombre "nuevo" en el server desde station18 :
[root@station18 /]# touch /mnt/nfs/nuevo
[root@station18 /]# echo "montamos el primer nfs con selinux, activando el boolean nfs_export_all_rw" >> /mnt/nfs/nuevo
[root@station18 /]# cat /mnt/nfs/nuevo
montamos el primer nfs con selinux, activando el boolean nfs_export_all_rw
[root@station18 /]#
Si en nuestro server, selinux inicia en modo enforcing ya no tenendriamos por que tener problemas si el server es reiniciado por ejemplo... Probemos !!!! detalle valioso para el rhce !!
[root@server ~]# service nfs status
rpc.mountd (pid 2162) is running...
nfsd (pid 2159 2158 2157 2156 2155 2154 2153 2152) is running...
[root@server ~]# getsebool nfs_export_all_rw
nfs_export_all_rw --> on
[root@server /]# ls -lZ /pruebas/nfs/
-rw-r--r-- root root root:object_r:default_t algo
-rw-r--r-- nfsnobody nfsnobody system_u:object_r:default_t nuevo
-rw-r--r-- nfsnobody nfsnobody system_u:object_r:default_t nuevo2
-rw-r--r-- nfsnobody nfsnobody system_u:object_r:default_t otro
[root@server /]#
El archivo nuevo2 fue creado desde station18 despues que el server reinicio ..
Espero que este primer post incluyendo selinux sirva para ya iniciar mi aprendizaje ..con selinux con miras a mi rhce !!! caraxo ...jajaja ...!
PD: Esto no es un manual oficial ni perfecto, ..solo estoy practicando y tratando de aprender .. si tu encuentras algun error o tienes alguna sugerencia ...favor ..te agradecere mucho la indiques.
No hay comentarios.:
Publicar un comentario