NIS / NFS versus iptables
Wer schon einmal versucht hat, NIS oder NFS hinter einem restriktiv konfigurierten Paketfilter zu betreiben, kennt das Problem: Die relevanten Dienste verwenden teils keine festen Portnummern, da sie über RPC (portmap) genutzt werden.
Man kann feste Portnummern konfigurieren, auch wenn dies nur über Umwege möglich ist. Im Folgenden beziehe ich mich auf Debian Etch (4.0).
NIS
In /etc/default/nis
sind YPSERVARGS
, YPBINDARGS
, YPPASSWDDARGS
und YPXFRDARGS
um -p XYZ
zu erweitern, wobei XYZ
die neue Portnummer ist. Ich habe folgende Zuteilung vorgenommen:
- Port 666: ypserv
- Port 667: fypxfrd
- Port 668: yppasswdd
- Port 669: ypbind
Bei mir sehen die entsprechenden Einträge nach der Änderung so aus:
YPSERVARGS="-p 666"
YPBINDARGS="-no-dbus -p 669"
YPPASSWDDARGS="--port 668"
YPXFRDARGS="-p 667"
Bei einem /etc/init.d/nis restart
werden die Änderungen übernommen.
NFS
Ähnliches gilt für NFS, nur dass hier drei Dateien zu ändern sind:
# /etc/default/nfs-common
STATDOPTS="--port 4000"
# /etc/default/nfs-kernel-server
RPCMOUNTDOPTS="--port 4002"
# /etc/modprobe.d/nfs (neu anlegen!)
options lockd nlm_udpport=4001 nlm_tcpport=4001
Es wurden also folgende Ports verwendet:
- Port 4000: rpc.statd (status)
- Port 4001: lockd (nlockmgr)
- Port 4002: rpc.mountd
Um diese Änderungen zu übernehmen, müssen grundsätzlich nur /etc/init.d/nfs-common restart
und /etc/init.d/nfs-kernel-server restart
ausgeführt und das Kernelmodul lockd
neugestartet werden.
Letzteres wollte mir nicht gelingen, da nfsd
von lockd
abhängt und immer “in use” war, obwohl ich alle NFS-Dienste gestoppt hatte. Ein rmmod -f nfsd
führte zu anhaltenden Kernelfehlermeldungen; davon ist also dringend abzuraten, wenn man den Rechner nicht hart neustarten möchte! Wenn jemand eine Lösung ohne Systemneustart kennt, möge er mich benachrichtigen.
Ein Leser hat sich dazu gemeldet: Wenn man die NFS-Dienste beendet hat, kann man lockd
durchaus entfernen, wenn man zunächst /proc/fs/nfsd
unmountet. Vielen Dank!
Zusätzlich in iptables freizuschaltende Ports:
- 111: portmap
- 2049: nfs
Wenn alle Änderungen übernommen wurden, sollte rpcinfo -p
für die betreffenden Dienste nur noch die Portnummern ausgeben, die gerade eingestellt wurden.