
Quiero compartir una carpeta con todos los clientes de la red excepto solo uno. Este es mi /etc/exports
archivo actual:
/opt/resources *(rw,async)
¿Qué debo agregar para evitar que el cliente 192.168.1.24
tenga la necesidad de mencionar las direcciones de todos los demás clientes autorizados?
Respuesta1
No conozco ningún servidor NFS que acepte patrones negativos en el exports
archivo.
Puede usar máscaras de red para cubrir varios clientes a la vez si enumera direcciones IP (no puede usar patrones comodín para direcciones IP). Por ejemplo, la siguiente línea coincide con 192.168.1.* excepto 192.168.1.24. Sí, es tedioso.
/opt/resources 192.168.1.0/28(rw,async) 192.168.1.16/29(rw,async) 192.168.1.25(rw,async) 192.168.1.26/31(rw,async) 192.168.1.28/30(rw,async) 192.168.1.32/27(rw,async) 192.168.1.64/26(rw,async) 192.168.1.128/25(rw,async)
Puede evitar saturar el exports
archivo y posiblemente duplicarlo utilizando ungrupo de red NIS. Sin embargo, en el archivo netgroup deberá enumerar todos los hosts en todas las listas.
Si no puede encontrar una manera satisfactoria de describir las listas de acceso para cada árbol exportado, es posible que desee generar automáticamente el archivo hosts
o netgroup
.
Respuesta2
AFAIK, NFS
no tiene ninguna opción para negar a un cliente específico (porque si el cliente no figura en la exports
entrada, no puede acceder al recurso compartido).
En su caso, creo que puede utilizar host.deny
para negarle a un cliente el acceso a NFS
compartir. Añade una línea a /etc/host.deny
:
portmap:192.168.1.24
Esto, por supuesto, no es una solución perfecta, porque el cliente que figura en la lista /etc/host.deny
no puede acceder a ningún otro recurso compartido en NFS
el servidor.
Respuesta3
Otra forma sería utilizaripsetcon iptables. ipset está disponible en la mayoría de los repositorios básicos de Linux.
Puede crear un ipset de direcciones IP utilizando, por ejemplo,
ipset create serverblacklist hash:net
ipset -A serverblacklist 192.168.1.24
...y agregue dicha regla para bloquear las direcciones IP 'serverblacklist' de la tabla ipset.
iptables -A INPUT -p tcp -m set --match-set serverblacklist src -j DROP
De manera similar, también puede crear una lista blanca de IP para permitir y una entrada de IPtables para permitirlas explícitamente, dependiendo de lo que sea más conveniente.