はじめに:
同じ内部ネットワークのサーバー間でNFSファイルシステムを使用することがよくあります。しかし、rpcbindをインターネットに公開することは安全ではないと考えられているため、保護する必要がありました。ファイアウォールでこれを行うこともできましたが、インターネットアクセスから保護したい唯一のサービスであるため、このタスクにファイアウォールを使用する必要はなく、代わりに古き良きシステムのTCPWrappersを使用することにしました。 hosts.allow およびhosts.deny ファイル。
方法:
–すべてのユーザーへのrpcbindへのアクセスを拒否します( /etc/hosts.deny で実行) )
– 2つの例外を許可する:ローカルネットワーク上のホスト( /etc/hosts.allow で実行) )
前提条件:
NFSサーバーはインターネットと内部LAN(192.168.100.0/24)に接続されており、IPは12.34.56.78(ほんの一例)と192.168.100.1です。
許可したい2つのホストNFSサーバーへの接続は192.168.100.2と192.168.100.3です。
このプライベートLANにもう1台のサーバー(192.168.100.4)があり、NFSサーバーへの接続を許可しないでください。
手順:
ファイルを編集(または存在しない場合は作成) / etc / default / rpcbind 次の行を追加します:
OPTIONS="-w -l -h 192.168.100.1"
ファイルを編集します/etc/hosts.allow 次の行を追加します:
rpcbind: 192.168.100.2 192.168.100.3
ファイルを編集します/etc/hosts.deny 次の行を追加します:
rpcbind: ALL
構成の確認:
同じローカルLANネットワーク上の他のサーバー(上記の許可されたサーバーのいずれでもない)にログインして、192.168.100.4から、次のコマンドを発行します。
rpcinfo -p 192.168.100.1
出力:
rpcinfo: can't contact portmapper: rpcinfo: RPC: Authentication error; why = Client credential too weak
次に、任意のインターネットサーバー(例:45.67.78.89)にログインし、次のコマンドを試してください:
rpcinfo -p 12.34.56.78
出力:
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
次に、許可されている2つのサーバー(例:192.168.100.3)のいずれかにログインし、次のコマンドを発行します。
rpcinfo -p 192.168.100.1
出力:
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:
192.168.100.4とインターネットサーバーはrpcbindに接続できませんが、192.168.100.3は許可されていることがわかります。
追加情報:
楽しみのために、ログを確認しましょう:
grep rpcbind /var/log/auth.log
出力:
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()
それでは、ホスト192.168.100.2のTCPWrappers構成を確認しましょうtcpdmatch rpcbind 192.168.100.2
出力:
client: address 192.168.100.2
server: process rpcbind
access: granted
結果:
rpcbind サービスは保護され、内部LANに接続された2台のサーバーからのみアクセスできるようになりました。