web-dev-qa-db-ja.com

rpcbind-tcpポートを特定のインターフェイスにバインドする方法は実際にはありません/ rpcbindなしでnfsを実行できますか?

sshfsからnfsに移動します。

rpcbindnfsが機能するために必要であると想定)がTCPを指定できない(UDP)バインド先のIP。

-hフラグがありますが、これは、UDPポートが開く場合のみです。これはTCP=ポートには影響しませんが、0.0.0.0:...で開いたままです

パブリックインターフェイスに公開しないことでrpcbindを保護する方法を誰かが知っていますか?

またはさらに良いことに、nfsなしでrpcbindを使用する方法はありますか?

ありがとう!

5
anonymous-one

RPCサービスをネットワーク(読み取りTCPまたはUDP))のアドレスとポートにマップするには、rpcbindが必要です。NFSバージョン2および3では、クライアントが初期ファイルハンドルを取得できるように、追加のサービスmountdが必要です。一方、nfsポート番号2049はよく知られていますが、mountdはそうではありません。IOW、NFSv3を使用する場合は、rpcbindも実行する必要があります(マウンドが実行されている場所を示すためのマウントオプションがおそらくあるでしょう)。v3の反対、NFSv4ではポート2049が1つだけ必要で、mountdはまったく必要ありません。これにより、rpcbindを使用しないNFSセットアップが可能になります。一部の(古い)クライアントは、v4でもrpcbindと通信しようとする場合があることに注意してください。

次に、rpcbindについて説明します。なぜそれを保護したいのですか?クライアントが利用できない場合、マウントできませんか?保護する唯一の理由は、更新を実行できるクライアントの数を制限することです。しかし、rpcbindはUNIXドメインソケットを使用し、リモートクライアントによる更新の実行を許可しないため、これはすでに導入されています。ローカルホストであっても、そのルートになる必要があります。一部のクライアントのみから保護したい場合は、iptablesが友だちです(または、OSにファイアウォールがある場合)。

# iptables -A INPUT -s 10.1.2.0/24 -p tcp --dport 111 -j ACCEPT
# iptables -A INPUT -s 10.1.3.0/24 -p udp --dport 111 -j ACCEPT
# iptables -A INPUT -p tcp --dport 111 -j DROP
# iptables -A INPUT -p udp --dport 111 -j DROP
6
kofemann

2019で答えを探している人のために。rpcbindは-h [IP]オプションを取ります。/etc/sysconfig /(Red Hat、Fedora)または/ etc/defaults(Debian、Ubuntu)に追加すると、ソートされます。

0
Gregory

ファイアウォールルールを設定する必要はもうありません。 /etc/hosts.deny/allowが利用可能な最近のLinuxディストリビューションでは、次のことを簡単に実行できます。

echo "portmap: 10.0.0.0/16" >> /etc/hosts.allow
echo "rpcbind: 10.0.0.0/16" >> /etc/hosts.allow
echo "portmap: ALL" >> /etc/hosts.deny
echo "rpcbind: ALL" >> /etc/hosts.deny

(10.0.0.0/16がプライベートネットワークであると想定しています)。

NFSの最近のバージョンではrpcbindを使用していますが、古いバージョンではポートマップを使用しているため、OSによって異なります。

0
Cyril N.

サービスポートの検索はRPCプロトコルに組み込まれているため、NFSの実行時にrpcbindを回避するために、非常にエキゾチックな何かを行う必要があります。

Iptablesを使用して、特定のアドレスまたはインターフェースからの接続をブロックできます。 tcpwrappers(/etc/hosts.allow、/etc/hosts.deny);または-冒険好き-SELinuxを使用。

「ldd/sbin/rpcbind」がlibwrapへのリンクを表示する場合、tcpwrappersはネイティブで使用できます。それ以外の場合は、通常の起動を抑制し、代わりにtcpdを介してinetd/xinetdから実行する必要があります。私はそれを自分で試したことはありません。

0