Servidor NFS no OpenBSD

Publicado por Andre Luiz Facina em 03/07/2008

[ Hits: 7.854 ]

 


Servidor NFS no OpenBSD



NFS, Network File System, é usado para compartilhar o sistema de arquivos através da rede.

Essa dica seguirá os passos para uma configuração simples do NFS. O exemplo detalha um servidor na rede LAN, com os clientes acessando o NFS.

Não falarei sobre a segurança no NFS presumindo que você já tenha instalado o packet filter ou outra proteção de firewall, prevenindo assim acessos de fora da rede.

Se você precisar liberar o NFS para fora da rede, sugiro que utilize algum método de acesso via VPN. De outra maneira, pessoas poderão capturar o seu tráfego NFS. Poderiam também forjar o endereço IP que está autorizado a acessar o servidor NFS.

Configurando um servidor NFS

Esses serviços devem estar ativados e rodando no servidor:
  • portmap
  • mountd
  • nfsd

Por padrão cada um deles está desativado no OpenBSD. Adicione as seguintes linhas em /etc/rc.conf.local para habilitá-los.

portmap=YES
nfs_server=YES

O próximo passo é colocar a lista de arquivos que serão disponibilizados para a montagem pelos clientes.

Nesse exemplo, temos um servidor NFS com o endereço IP 10.0.0.1, que compartilha apenas para os clientes que estão na mesma subrede. Tudo isso é configurado no arquivo /etc/exports.

Nesse arquivo você coloca as pastas que deseja tornar acessíveis via NFS e define quem pode acessá-las. Há muitas opções que podem ser usadas em /etc/exports. Para o nosso exemplo de servidor, o arquivo de configuração do /etc/exports se parecesse com esse:

## NFS exports Database
# See exports(5) for more information. Be very careful, misconfiguration
# of this file can result in your filesystems being readable by the world.
/work -alldirs -ro -network=10.0.0 -mask=255.255.255.0

Isso significa que a pasta /work foi disponibilizada via NFS. A opção "-alldirs", especifica que os clientes serão capazes de montar em qualquer ponto dentro de /work, bem como o próprio /work. Por exemplo:

1) se dentro de /work tiver um diretório chamado "/work/monday", os clientes poderiam montar /work e ter acesso a todos os arquivos e subdiretórios;

2) ou eles poderiam montar /work/monday e ter acesso apenas aos arquivos e diretórios contidos nele.

A opção "-ro" especifica que será concedido aos clientes apenas acesso de leitura.

Os dois últimos argumentos especificam que apenas os clientes que estão na rede 10.0.0.0 e usando a máscara 255.255.255.0 serão autorizados a montar pasta. Isso é importante para servidores que são acessados por diferentes redes.

Agora você pode iniciar o serviço ou reiniciar (após habilitá-los com as opões acima) ou executá-los manualmente.

# /usr/sbin/portmap
# echo -n >/var/db/mountdtab
# /sbin/mountd
# /sbin/nfsd -tun 4


Argumentos passados para o nfsd para habilitá-lo com conexões TCP ( -t ) e UDP ( -u ) e habilitá-lo com 4 instancias ( -n ). Você deve setar apropriadamente o número de instâncias do NFS, para lidar com o número máximo de clientes.

Agora está pronto para montar o sistema de arquivos a partir dos clientes.

Lembre-se: se você fizer alterações em /etc/exportfs enquanto o NFS estiver rodando, será preciso reiniciar o serviço. Para isso basta um sinal de HUP e as alterações entrarão em vigor:

# kill -HUP `cat /var/run/mountd.pid`

Montando o sistema de arquivos NFS

O sistema de arquivos NFS pode ser montando nos clientes, sem a necessidade de qualquer serviço ou daemon, e também como qualquer outro sistema de arquivos.

O NFS deve ser montando com o comando mount, ou mais especificamente com o comando "mount_nfs".

Para montar o sistema de arquivos /work no computador 10.0.0.1 e na pasta /mnt, siga o exemplo abaixo. Note que você não precisa utilizar o endereço ip, se estiver utilizando um servidor de DNS (named ou bind) por exemplo:

# mount -t nfs 10.0.0.1:/work /mnt

Para que o NFS seja montando no boot, adicione a seguinte linha no /etc/fstab:

10.0.0.1:/work   /mnt   nfs   rw   0 0

É importantíssimo que você use "0 0" no final dessa linha, para que o sistema não tente usar o fsck na inicialização.

Outra opção de segurança, tal como o "noexec, nodev,nosuid" também devem ser usadas se for preciso:

10.0.0.1:/work   /mnt   nfs   rw,nodev,nosuid   0 0

Dessa forma, nenhum dispositivo ou programa com setuid bit no servidor NFS possa subverter as medidas de seguranças nos clientes NFS.

Se você não for executar programas nos clientes NFS, pode-se adicionar a opção noexec.

Quando acessar um ponto de montagem NFS com o usuário root, o servidor automaticamente mapeará o root para o usuário e grupo "nobody" . Isso é importante quando se leva em conta as permissões de arquivos. Por exemplo, ter um arquivo com essas permissões:

-rw----- 1 root wheel 0 Dec 31 03:00 _daily.B20143

Se esse arquivo foi compartilhado com o NFS e o usuário root tentar acessar esse arquivo a partir de um cliente NFS, o acesso será negado.

Isso ocorre por que o servidor usa as credenciais do usuário "nobody" quando o usuário "root" tenta acessar o arquivo. Uma vez que "nobody" não tem permissão de acessar o arquivo, o acesso é negado.

Checando o status do NFS

Afim de verificar se o NFS está funcionando corretamente e que todos os daemons estejam registrados em RCP, use o rpcinfo:

# rpcinfo -p 10.0.0.1
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 633 mountd
100005 3 udp 633 mountd
100005 1 tcp 916 mountd
100005 3 tcp 916 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs

Em condições normais de uso, existem outros utilitários que permitem ver o que está acontecendo com o NFS. Um deles é o "showmount", que permite visualizar o que está montando atualmente e quem está montando o NFS.

Há também o "nfsstat", que mostra mais detalhes e estatísticas.

Para utilizar o showmount tente /usr/bin/showmount -a host. Por exemplo:

# /usr/bin/showmount -a 10.0.0.1
All mount points on 10.0.0.1:
10.0.0.37:/work

A saída mostra que o cliente 10.0.0.37 tem montando o /work que foi exportado a partir do servidor 10.0.0.1.

André Luiz Facina

Outras dicas deste autor

Hardening no OpenBSD

Pfstat no OpenBSD 4.x

Ajustando o delay de repetição do teclado

AIX - Identificando processos zumbis

Adicionando e apagando usuários no OpenBSD

Leitura recomendada

resize2fs: Permission denied to resize filesystem [RESOLVIDO]

Clonando partições/HDs com o dd

Servidor para instalação remota com PXE

Visualização da partição Win no Linux

Falta de espaço imprevista

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts