O portmapper básico em combinação com o nfsd tem um problema de desenho que torna possível obter-se arquivos em servidores NFS sem a necessidade de quaisquer privilégios. Felizmente o portmapper do Linux é relativamente seguro contra este tipo de ataque, o que pode ser evitado através da configuração de uma lista de acessos em dois arquivos.
Inicialmente editaremos o /etc/hosts.deny. Ele deverá conter a seguinte linha:
portmap: ALL
através da qual o acesso será bloqueado para todos os clientes. Isto talvez seja um pouco drástico, então podemos tornar as definições um pouco mais maleáveis através da edição do arquivo /etc/hosts.allow. Inicialmente é necessário definir o que será colocado nele. Ele contém basicamente uma lista de todas as máquinas que podem acessar o portmapper local. Em um sistema Linux há normalmente poucas máquinas que necessitem este tipo de acesso, qualquer que seja a razão. O portmapper administra os programas nfsd, mountd, ypbind/ypserv, pcnfsd e serviços 'r' como ruptime e rusers. Todas as máquinas que necessitam acessar os serviços da máquina local devem ter permissão para tanto. Digamos que o endereço da máquina local seja 129.240.223.254 e que ela está conectada à sub-rede 129.240.223.0, a qual deve ter acesso à máquina local (em caso de dúvida verifique o Como Fazer - Redes para refrescar a memória sobre estes conceitos). Para tanto basta digitar:
portmap: 129.240.223.0/255.255.255.0
no arquivo hosts.allow. Este é o mesmo endereço de rede fornecido para o comando route e a máscara de subrede informada no ifcongif. No dispositivo eth0 desta máquina ifconfig mostraria:
... eth0 Link encap:10Mbps Ethernet HWaddr 00:60:8C:96:D5:56 inet addr:129.240.223.254 Bcast:129.240.223.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:360315 errors:0 dropped:0 overruns:0 TX packets:179274 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x320 ...
e netstat -rn apresentaria
Tabela de Roteamento do Kernel Destinação Cam.Padrão Máscara Indics Métrica Ref Uso Iface ... 129.240.223.0 0.0.0.0 255.255.255.0 U 0 0 174412 eth0 ...
o endereço de rede na primeira coluna.
Os arquivos hosts.deny e hosts.allow são descritos nas página de manual de mesmo nome.
IMPORTANTE: não coloque nada exceto ENDEREÇOS IP nas linhas do portmap nestes arquivos. Pesquisas por nomes podem indiretamente causar atividade do portmap o qual acionará a pesquisa de nomes de máquinas a qual indiretamente irá causa atividade no portmap, o qual....
As sugestões acima certamente deixarão o servidor mais seguro. As questões restantes residem em alguém que tenha descoberto a senha do superusuário (ou inicializando um MS-DOS) em uma máquina confiável e usando este privilégio para enviar requisições a partir de uma porta segura como qualquer outro usuário real.