
Quero compartilhar uma pasta com todos os clientes da rede, exceto um. Este é o meu /etc/exports
arquivo atual:
/opt/resources *(rw,async)
O que devo acrescentar para evitar que o cliente 192.168.1.24
sem a necessidade de mencionar os endereços de todos os outros clientes autorizados?
Responder1
Não conheço nenhum servidor NFS que aceite padrões negativos no exports
arquivo.
Você pode usar máscaras de rede para cobrir vários clientes ao mesmo tempo 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 a confusão do exports
arquivo e possivelmente a duplicação usando umGrupo de rede NIS. Entretanto, no arquivo netgroup você precisará listar todos os hosts em todas as listas.
Se você não conseguir encontrar uma maneira satisfatória de descrever as listas de acesso para cada árvore exportada, poderá gerar automaticamente o arquivo hosts
ou netgroup
.
Responder2
AFAIK, NFS
não tem nenhuma opção para negar um cliente especificado (porque se o cliente não estiver listado na exports
entrada, ele não poderá acessar o recurso compartilhado).
No seu caso, acho que você pode usar host.deny
para negar o acesso de um cliente ao NFS
compartilhamento. Adicione uma linha a /etc/host.deny
:
portmap:192.168.1.24
Isso, claro, não é uma solução perfeita, pois o cliente listado /etc/host.deny
não pode acessar nenhum outro recurso compartilhado no NFS
servidor.
Responder3
Outra forma seria usaripsetcom iptables. ipset está disponível na maioria dos repositórios básicos 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 IPs da tabela ipset 'serverblacklist'-
iptables -A INPUT -p tcp -m set --match-set serverblacklist src -j DROP
Da mesma forma, você também pode criar uma lista de permissões de IPs para permitir e uma entrada IPtables para permiti-los explicitamente, dependendo do que for mais conveniente.