rpcbind – realmente no hay manera de hacer que los puertos tcp se unen a una interfaz específica / nfs se puede ejecutar sin rpcbind?

nos gustaría alejarnos de sshfs a nfs.

la última cosa que nos retiene es el hecho de que rpcbind (que supongo que es necesario para que nfs funcione) no le permite especificar el ip tcp (no udp) al que se une.

hay la bandera -h, pero esto es sólo para los puertos udp que abre. esto no afecta a los puertos tcp, todavía se abren en 0.0.0.0: …

¿alguien sabe cómo podemos proteger rpcbind al no exponerlo a nuestra interfaz pública?

o incluso mejor, hay una manera de utilizar nfs sin rpcbind?

¡Gracias!

El rpcbind es necesario para asignar el service RPC a la dirección de networking (lectura TCP o UDP) y el puerto. Las versiones 2 y 3 de NFS requieren un service adicional mountd para permitir a los clientes get el identificador inicial del file. Mientras nfs tiene un número de puerto bien conocido 2049, mountd no. IOW, si desea utilizar NFSv3 tendrá que ejecutar rpcbind también (bueno, probablemente hay algunas opciones de assembly para saber dónde está montado el montón). En opuesto a v3, NFSv4 requiere solamente el solo puerto 2049 y no necesita mountd en absoluto. Esto hace que rpcbind libre NFS configuration posible. Sólo tenga en count, que algunos (antiguos) clientes todavía pueden tratar de hablar con rpcbind incluso para v4.

Ahora, sobre rpcbind. ¿Por qué quieres protegerlo? Si no está disponible para los clientes, entonces no pueden montar? La única razón para proteger es limitar el número de clientes que pueden hacer actualizaciones. Pero esto ya está en su lugar ya que rpcbind utiliza socket de dominio unix y no permite que ningún cliente remoto realice actualizaciones. Incluso en un host local que necesita para ser root para eso. Si desea proteger sólo de algunos clientes, entonces iptables es su amigo (o lo que sea que su sistema operativo tenga):

# iptables -A INPUT -s 10.1.2.0/24 -p tcp --dport 111 -j ACCEPT # iptables -A INPUT -s 10.1.3.0/24 -p udp --dport 111 -j ACCEPT # iptables -A INPUT -p tcp --dport 111 -j DROP # iptables -A INPUT -p udp --dport 111 -j DROP 

La búsqueda para el puerto de service se alimenta en el protocolo RPC, por lo que tendría que hacer algo bastante exótico para evitar rpcbind cuando se ejecuta NFS.

Puede bloquear conexiones desde direcciones o interfaces particulares mediante iptables; con tcpwrappers (/etc/hosts.allow, /etc/hosts.deny); o – para los aventureros – con SELinux.

tcpwrappers está disponible de forma nativa si "ldd / sbin / rpcbind" muestra un enlace a libwrap, de lo contrario tendría que suprimir el inicio habitual y en su lugar ejecutarlo desde inetd / xinetd a través de tcpd. No lo he intentado yo mismo.