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 Änderung ü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 (-> Kommentare zu diesem Beitrag!).
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.

Leave a Reply

Your email address will not be published. Required fields are marked *