rpcbind - não há realmente nenhuma maneira de fazer as portas tcp se ligarem a uma interface específica / o nfs pode ser executado sem o rpcbind?

4

gostaríamos de nos afastar do sshfs para o nfs.

a última coisa que nos impede é o fato de que o rpcbind (que eu suponho ser necessário para o nfs funcionar) não permite que você especifique o ip tcp (não o udp) ao qual ele se liga.

existe o sinalizador -h, mas isto é apenas para as portas do udp que ele abre. isso não afeta as portas tcp, elas ainda abrem em 0.0.0.0: ...

alguém sabe como podemos proteger o rpcbind sem expor isso à nossa interface pública?

ou melhor ainda, existe uma maneira de usar o nfs sem o rpcbind?

obrigado!

    
por anonymous-one 12.09.2012 / 14:09

2 respostas

5

O rpcbind é necessário para mapear o serviço RPC para o endereço e porta da rede (ler TCP ou UDP). As versões 2 e 3 do NFS exigem um serviço adicional mountd para permitir que os clientes obtenham o identificador de arquivo inicial. Embora o nfs tenha um número de porta 2049 bem conhecido, o mountd não possui. IOW, se você quiser usar o NFSv3, precisará executar o rpcbind (bem, provavelmente há algumas opções de montagem para dizer onde o mound está sendo executado). Ao contrário da v3, o NFSv4 requer apenas uma única porta 2049 e não precisa de montagem nenhuma. Isso torna a configuração do NFS livre de rpcbind possível. Apenas esteja ciente de que alguns (antigos) clientes podem ainda tentar conversar com o rpcbind mesmo para a v4.

Agora, sobre o rpcbind. Por que você quer protegê-lo? Se não estiver disponível para os clientes, eles não podem montar? A única razão para proteger é limitar o número de clientes que podem fazer atualizações. Mas isso já está em vigor, pois o rpcbind usa o soquete de domínio unix e não permite que qualquer cliente remoto execute atualizações. Mesmo em um host local, você precisa ser root para isso. Se você quer proteger apenas de alguns clientes, então o iptables é seu amigo (ou o que o seu sistema operacional tem de firewall):

# 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
    
por 26.02.2013 / 16:18
0

A busca pela porta de serviço é incluída no protocolo RPC, então você teria que fazer algo bastante exótico para evitar o rpcbind ao executar o NFS.

Você pode bloquear conexões de endereços ou interfaces particulares usando o iptables; com tcpwrappers (/etc/hosts.allow, /etc/hosts.deny); ou - para os aventureiros - com o SELinux.

tcpwrappers está disponível nativamente se "ldd / sbin / rpcbind" mostrar um link para libwrap, caso contrário você precisaria suprimir a inicialização usual e, em vez disso, executá-la fora do inetd / xinetd através do tcpd. Eu não tentei isso sozinho.

    
por 12.09.2012 / 14:40