NFS: compartilhe com todos os clientes, exceto um

4

Eu quero compartilhar uma pasta com todos os clientes da rede, exceto apenas um. Este é o meu arquivo /etc/exports atual:

/opt/resources     *(rw,async)

O que devo adicionar para evitar o cliente 192.168.1.24 sem a necessidade de mencionar todos os endereços de outros clientes autorizados?

    
por clash 14.06.2014 / 20:15

3 respostas

1

Eu não conheço nenhum servidor NFS que aceite padrões negativos no arquivo exports .

Você pode usar máscaras de rede para abranger vários clientes de uma vez, se estiver listando endereços IP (não é possível usar padrões curinga para endereços IP). Por exemplo, a linha a seguir corresponde a 192.168.1. *, Exceto 192.168.1.24. Sim, é tedioso.

/opt/resources 192.168.1.0/28(rw,async) 192.168.1.16/29(rw,async) 192.168.1.25(rw,async) 192.168.1.26/31(rw,async) 192.168.1.28/30(rw,async) 192.168.1.32/27(rw,async)  192.168.1.64/26(rw,async) 192.168.1.128/25(rw,async)

Você pode evitar sobrecarregar o arquivo exports e possivelmente a duplicação usando um grupo de rede NIS . No entanto, no arquivo netgroup, você precisará listar todos os hosts em todas as listas.

Se você não encontrar uma maneira satisfatória de descrever as listas de acesso para cada árvore exportada, convém gerar automaticamente o arquivo hosts ou netgroup .

    
por 15.06.2014 / 21:35
2

AFAIK, NFS não tem nenhuma opção para negar um cliente especificado (porque se o cliente não estiver listado em exports entry, ele não poderá acessar o recurso compartilhado).

No seu caso, acho que você pode usar host.deny para impedir que um cliente acesse NFS share. Adicione uma linha a /etc/host.deny :

portmap:192.168.1.24

Isso, obviamente, não é uma solução perfeita, porque o cliente listado em /etc/host.deny não pode acessar nenhum compartilhamento de recursos em NFS server.

    
por 14.06.2014 / 20:52
1

Outra maneira seria usar o ipset com o iptables. ipset está disponível na maioria dos repositórios de base do Linux.

Você pode fazer um ipset de endereços IP usando, por exemplo,

ipset create serverblacklist hash:net
ipset -A serverblacklist 192.168.1.24

... e adicione essa regra para bloquear os IPs da tabela 'serverblacklist' da tabela ipset -

iptables -A INPUT -p tcp -m set --match-set serverblacklist src -j DROP

Da mesma forma, você também pode permitir que uma lista de permissões de IPs e uma entrada de IPtables sejam permitidas explicitamente, dependendo do que for mais conveniente.

    
por 06.12.2016 / 21:10