ForoSUSE

ForoSUSE (http://www.forosuse.org/forosuse/index.php)
-   Seguridad y Servidores (http://www.forosuse.org/forosuse/forumdisplay.php?f=32)
-   -   Servicio NFS - restringir mount por dirección IP (http://www.forosuse.org/forosuse/showthread.php?t=28076)

crakeador 12-abr-2012 14:34

Servicio NFS - restringir mount por dirección IP
 
Hola a todos, abro este post porque estoy intentado restringir el montaje de una carpeta mediante el servicio nfs a través de la ip de los equipos. Tengo un computador que tiene una carpeta /vms y quiero que solamente dos equipos de mi red puedan montarla por nfs.

He configurado el fichero /etc/exports de la siguiente manera:

/vms *(rw,no_root_squash,sync)

He configurado el fichero /etc/hosts.allow de la manera:

portmap:192.168.1.104
portmap:192.168.1.107
lockd:192.168.1.104
lockd:192.168.1.107
mountd:192.168.1.104
mountd:192.168.1.107
rquotad:192.168.1.104
rquotad:192.168.1.107
statd:192.168.1.104
statd:192.168.1.107

He configurado el fichero /etc/hosts.deny de la manera:
ALL:ALL

Como podeis observar, unicamente quiero que los equipos con ip 192.168.1.104/107 puedan montar la carpeta /vms, el resto no.

Con esta configuración cualquier equipo de la red puede montar /vms. ¿Alguna sugerencia?, gracias por cualquier ayuda.

jcsl 12-abr-2012 14:48

Hola.

Yo apenas sé de redes, pero como quería compartir algunos directorios entre el PC de sobremesa y el netboot lo hice así. Mi exports:

Código:

/dir0  192.168.3.1(fsid=0,crossmnt,rw,root_squash,sync,no_subtree_check)
/dir1  192.168.3.1(rw,root_squash,sync,no_subtree_check)
/dir2  192.168.3.1(rw,root_squash,sync,no_subtree_check)
/dir3  192.168.3.1(rw,root_squash,sync,no_subtree_check)

Como ves uso las IP en el propio exports y no uso host.X. Si no recuerdo mal también se pueden usar rangos de direcciones y si has modificado el archivo hosts supongo que también podrás usar el nombre de host.

El sobremesa lo uso también como servidor DHCP para darle una IP al netbook que está configurado para obtenerla así aunque estoy pensando en asignarle una dirección IP estática también mediante DHCP. De esa forma cuando conecto el netbook directamente al router no tengo que hacer cambios.

Un saludo.

crakeador 12-abr-2012 15:09

Cita:

Iniciado por jcsl (Mensaje 152139)
Hola.

Yo apenas sé de redes, pero como quería compartir algunos directorios entre el PC de sobremesa y el netboot lo hice así. Mi exports:

Código:

/dir0  192.168.3.1(fsid=0,crossmnt,rw,root_squash,sync,no_subtree_check)
/dir1  192.168.3.1(rw,root_squash,sync,no_subtree_check)
/dir2  192.168.3.1(rw,root_squash,sync,no_subtree_check)
/dir3  192.168.3.1(rw,root_squash,sync,no_subtree_check)

Como ves uso las IP en el propio exports y no uso host.X. Si no recuerdo mal también se pueden usar rangos de direcciones y si has modificado el archivo hosts supongo que también podrás usar el nombre de host.

El sobremesa lo uso también como servidor DHCP para darle una IP al netbook que está configurado para obtenerla así aunque estoy pensando en asignarle una dirección IP estática también mediante DHCP. De esa forma cuando conecto el netbook directamente al router no tengo que hacer cambios.

Un saludo.

Tu idea es muy buena, gracias porque funciona, la acabo de probar. Pero queria hacerlo algo más complejo. En vez de indicar la ip y la carpeta con las opciones a exportar, una a una, queria jugar con los ficheros hosts.allow y host.deny para que sea mas correcta la configuración. Haber si alguno tiene mas experiencia que yo configurando esos ficheros.

Un saludo y gracias por tu ayuda, temporalmente me lo solucionas.

jcsl 12-abr-2012 15:25

Hola.

Cita:

Iniciado por crakeador (Mensaje 152142)
En vez de indicar la ip y la carpeta con las opciones a exportar, una a una, queria jugar con los ficheros hosts.allow y host.deny para que sea mas correcta la configuración.

No entiendo bien eso que dices. Yo he usado IP+carpeta para cada carpeta porque corresponden a distintos puntos de montaje, pero tú tienes definido solo uno y una vez montado se tendría acceso a todo lo que contuviera recursivamente. De lo que sé, no entiendo que usar los archivos host.X sea más correcto que lo otro sino que son dos formas de hacerlo. En tu caso por ejemplo, si añades otro directorio que no esté contenido en /vms tendrías que añadirlo al exports. ¿Me estoy perdiendo algo?

Un saludo.

crakeador 12-abr-2012 15:34

Mi idea es exportar /vms a toda la red y restringir mediante hosts.allow y hosts.deny quien puede y quien no puede montar la carpeta.

/vms 192.168.1.0/24(rw,no_root_squash,sync) CARPETA EXPORTADA

¿como configuraria hosts.allow y hosts.deny para permitir solo el montaje a dos ips de esa red?

karlggest 12-abr-2012 15:36

Supongo que no quieres montar un cortafuegos para eso, pero ¿no es la mejor forma?

Salud!!

crakeador 12-abr-2012 15:39

Cita:

Iniciado por karlggest (Mensaje 152150)
Supongo que no quieres montar un cortafuegos para eso, pero ¿no es la mejor forma?

Salud!!

No es que quiera, es que esta vivito y operando. Habia leido que era necesario meterse con ip tables, pero no creí que esto fuera tan tan complejo. Aunque aqui tengo poca experiencia. ¿Es necesario Karlggest?

jcsl 12-abr-2012 15:54

Hola.

Cita:

Iniciado por crakeador (Mensaje 152148)
Mi idea es exportar /vms a toda la red y restringir mediante hosts.allow y hosts.deny quien puede y quien no puede montar la carpeta.

/vms 192.168.1.0/24(rw,no_root_squash,sync) CARPETA EXPORTADA

¿como configuraria hosts.allow y hosts.deny para permitir solo el montaje a dos ips de esa red?

Sin usar hosts.allow ni hosts.deny creo que se haría así:
/punto_exportado ip1(opciones1) ip2(opciones2) ... ipN(opcionesN)
Ejemplo:
/opt helpman.luna.edu(rw,no_root_squash) ida.luna.edu(ro,nohide) *.info.luna.edu(ro,all_squash) 172.24.0.0/16(ro)
No sé si los comodines se pueden aplicar también a las IP. Mirándolo bien pienso que puede ser mejor porque se aplica aquello del menor privilegio: se exporta a las máquinas que se debe y con las opciones justas. Del otro modo, exportándolo a toda la red, quizás podría ser más arriesgado desde el punto de vista de la seguridad.

Usando hosts.allow y hosts.deny no sé cómo se haría porque no lo he probado antes. Creo que con negar todo en hosts.deny (ALL:ALL) y admitir las IP que quieras en hosts.allow tendría que ser suficiente. Elimina el nombre del servicio en hosts.allow a ver si así funciona y luego vas añadiendo uno a uno, es lo único que se me ocurre.

Un saludo.

crakeador 12-abr-2012 15:59

Probare y te cuento...muchas gracias :)

karlggest 12-abr-2012 16:08

Cita:

Iniciado por crakeador (Mensaje 152151)
No es que quiera, es que esta vivito y operando. Habia leido que era necesario meterse con ip tables, pero no creí que esto fuera tan tan complejo. Aunque aqui tengo poca experiencia. ¿Es necesario Karlggest?

Yo tengo muy poca experiencia con redes, pero en mi opinión es mucho más sencillo, sólo tienes que añadir la regla correcta.

En principio, implementar un cortafuegos para que dos equipos (dos direcciones IP) puedan acceder a un servicio es muy sencillo. Puedes configurar el cortafuegos directamente para tal servicio, al estilo: "los equipos con tales direcciones pueden usar tal protocolo para conectarse a tal servicio".

Los cortafuegos son relativamente sencillos de utilizar. openSUSE usa por defecto Ipchains en lugar de Iptables, pero puedes usar cualquiera de los dos y la sintaxis es similar.

De todas formas, para simplemente exportar una carpeta vía nfs puedes hacerlo como jcsl. Si quieres seguridad adicional, añade iptables. Si quieres más seguridad aun, usa acl y o bien Apparmor o bien SELinux.

Cita:

Iniciado por jcsl (Mensaje 152152)
(...)

Usando hosts.allow y hosts.deny no sé cómo se haría porque no lo he probado antes. Creo que con negar todo en hosts.deny (ALL:ALL) y admitir las IP que quieras en hosts.allow tendría que ser suficiente. Elimina el nombre del servicio en hosts.allow a ver si así funciona y luego vas añadiendo uno a uno, es lo único que se me ocurre.

Un saludo.

Hasta donde yo sé, es justamente lo mismo: el sistema de red toma una y otra información de forma indistinta.

En cuanto a la seguridad, el principio es "restringe todo y permite sólo lo que debas". "Y piensa muchas veces si realmente debes".

Salud!!

nota: puedes usar ACL para usar el sistema de permisos por usuarios y grupos; puedes usar SELinux para asegurarte de que a la carpeta exportada sólo se accede montándola por nfs, y puedes añadir iptables para que sólo se admitan conexiones de esas máquinas que usen tales protocolos, todo ello creado en ese orden.

nota2: YaST permite configurar esto y abrir el puerto del cortafuegos (el que se instala por defecto, ipchains) si el cortafuegos está activo, claro, pero en la instalación por defecto no se instala el servidor: yast2-nfs-server, creo que se llama.

nota3: juas, cuanto más leo más cosas faltan xddd fíjate en si tienes el cortafuegos activo; si lo está, con seguridad tengas el puerto 2049 cerrado (o donde configures el servidor). Ábrelo al menos para esas máquinas, o para todos.


La franja horaria es GMT +2. Ahora son las 16:22.

Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.


Esta página está bajo una licencia de Creative Commons, salvo que no se indique lo contrario.
Creative Commons License

Valid CSS!