Úvod:
Často používám souborový systém NFS mezi servery stejné vnitřní sítě. Ale protože mít rpcbind otevřený na internetu je považováno za nejisté, potřeboval jsem ho chránit. Mohl jsem to udělat s firewallem, ale jelikož je to jediná služba, kterou jsem chtěl chránit před přístupem k internetu, nechtěl jsem se pro tento úkol obtěžovat firewallem a rozhodl jsem se místo toho použít starý dobrý systém TCP Wrappers: hosts.allow a hosts.deny soubory.
Metoda:
– Odepřít přístup k rpcbind všem (provedeno v /etc/hosts.deny )
– Povolit 2 výjimky:hostitelé v mé místní síti (provedeno v /etc/hosts.allow )
Předpoklady:
Server NFS je připojen k internetu a k naší interní LAN (192.168.100.0/24) a má IP:12.34.56.78 (jen příklad) a 192.168.100.1.
Dva hostitelé, kterým chci povolit připojení k serveru NFS jsou 192.168.100.2 a 192.168.100.3
V této soukromé síti LAN mám ještě jeden server (192.168.100.4), kterému by nemělo být povoleno připojení k serveru NFS.
Kroky:
Upravte (nebo vytvořte, pokud neexistuje) soubor /etc/default/rpcbind a přidejte následující řádek:OPTIONS="-w -l -h 192.168.100.1"
Upravte soubor /etc/hosts.allow a přidejte následující řádek:rpcbind: 192.168.100.2 192.168.100.3
Upravte soubor /etc/hosts.deny a přidejte následující řádek:rpcbind: ALL
Ověření konfigurace:
Přihlaste se k libovolnému jinému serveru ve stejné místní síti LAN (žádný z výše uvedených povolených serverů) řekněme z 192.168.100.4 a zadejte následující příkaz:rpcinfo -p 192.168.100.1
Výstup: rpcinfo: can't contact portmapper: rpcinfo: RPC: Authentication error; why = Client credential too weak
Poté se přihlaste na libovolný internetový server (např. na 45.67.78.89) a vyzkoušejte příkaz:rpcinfo -p 12.34.56.78
Výstup: rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
Nyní se přihlaste na jednom ze 2 povolených serverů (např. 192.168.100.3) a zadejte příkaz:rpcinfo -p 192.168.100.1
Výstup: rpcinfo -p 192.168.100.1
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 49123 status
100024 1 tcp 55198 status
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
....... and so on
Good news:
Vidíme, že 192.168.100.4 a jakýkoli internetový server se nemohou připojit k rpcbind, ale 192.168.100.3 je povoleno.
Další informace:
Jen pro zábavu, podívejme se na protokoly:grep rpcbind /var/log/auth.log
Výstup: Oct 7 20:51:30 nfsserver rpcbind: connect from 192.168.100.4 to dump(): request from unauthorized host
Oct 7 20:51:56 nfsserver rpcbind: connect from 45.67.78.89 to dump(): request from unauthorized host
Oct 7 20:53:24 nfsserver rpcbind: connect from 192.168.100.3 to dump()
Nyní zkontrolujeme konfiguraci TCP Wrappers pro hostitele 192.168.100.2tcpdmatch rpcbind 192.168.100.2
Výstup: client: address 192.168.100.2
server: process rpcbind
access: granted
Výsledek:
rpcbind služba je nyní chráněna a přístupná pouze ze 2 serverů připojených k naší interní LAN.