Regras de iptables para permitir o acesso de clientes ao NFS Server

Eu sei. Estamos no mundo da nuvem. Mas … ainda temos muitas estrutura dentro de empresas e inclusive, em datacenters terceirizados. Portanto, ainda podemos ter estruturas que estejam usando o antigo ( e ainda muito bem implementado ), NFS .

E é aquela, os protocols ainda por cima são bem complexos e com isto, nem lendo a RFC fica fácil criar regras para acessar os daemons NFS remotamente ou até, limitar o acesso a sua rede ao daemon propriamente dito ( sim, porque o daemon já tem uma limitação no ponto de montagem ).

E tem aquela, o portmapper aleatoriamente entrega ao daemon do NFS uma série de portas dinamicamente quando ele inicializa.

Como no Linux temos como filtro de pacotes o iptables batemos numa limitação do mesmo, que é não permitir a criação dos filtros com ele. E pesquisando, acabei achando a solução ( completa ) para o problema.

O primeiro passo é configurar o NFS para usar portas fixas. O arquivo para que isto seja feito é o /etc/sysaconfig/nfs .

A litas das diretivas que tem que ser modificadas estão aqui :

Porta TCP que o rpc.lockd vai subir ouvindo. LOCKD_TCPPORT=lockd-port-number

Porta UDP que o rpc.lockd vai subir ouvindo. LOCKD_UDPPORT=lockd-port-number

Porta que o rpc.mountd vai ouvir. MOUNTD_PORT=mountd-port-number

Porta que o rquotad vai ouvir. RQUOTAD_PORT=rquotad-port-number

Porta que o rpc.statd vai ouvir. STATD_PORT=statd-port-number

Porta de saída que o statd vai usar. A porta padrão é randômica. STATD_OUTGOING_PORT=statd-outgoing-port-number

E como exemplo no Cybercity.biz ele configurou deste modo :

Feito isto é reiniciar os serviços relacionados :

Centos 6

service portmap restart
service nfs restart
service rpcsvcgssd restart

Centos 8

systemctl restart nfs
systemctl restart portmap
systemctl restart rpcsvcgssd

E aqui as regras de iptables :

Modifique o range 192.168.1.0/24 para o range de sua rede, ou, então, caso queira limitar o acesso para um dos seus dispositivos da rede 192.168.1.10/32 .

Feito isto, só reiniciar o iptables.

CentOS 6

$ service iptables restart

CentOS 7/8

$ systemct restart iptables