listenしてるポート111を閉じる方法

ポート111を閉じる

まとめ
ポート111はrpc bindというサービスが起動しているとあがっている

未使用ならsystemctl stop rpcbindで停止する!

ポート111が開いてる?何に使われているの?

ふとnetstat で空いているポートをチェックすると見知らぬ111番のポートが開いていたことはないでしょうか?

インターネット(外部)からサーバへの入り口であるポートはセキュリティのためにも閉じておくのがセキュリティ上好ましいです。

ポートとは?

サーバが家の中だとしたら玄関や窓がポート。換気を終えたら窓を締めておかないと泥棒が侵入するかもしれない

使用していないポートが開いていないか?はnmapというツールを使用しても調べることができます。

bash
# nmap 127.0.0.1
Starting Nmap 7.70 ( https://nmap.org ) at 2020 10 10 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00018s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
111/tcp open rpcbind

nmapの情報からもわかりますがポート111はrpcbindというサービスが使っています。

bash
# systemctl status rpcbind
● rpcbind.service - RPC bind portmap service
Loaded: loaded (/lib/systemd/system/rpcbind.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2021-12-18 19:37:24 JST; 31min ago
Docs: man:rpcbind(8)
Main PID: 18489 (rpcbind)
Tasks: 1 (limit: 2062)
CGroup: /system.slice/rpcbind.service
└─18489 /sbin/rpcbind -f -w
# netstat -ltnp | grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init
tcp6 0 0 :::111 :::* LISTEN 1/init
 # ss -ltnp | grep 111
LISTEN 0 128 0.0.0.0:111 0.0.0.0:* users:(("rpcbind",pid=18489,fd=4),("systemd",pid=1,fd=107))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=18489,fd=6),("systemd",pid=1,fd=109))

rpcbind はnfsを利用するのに必要なサービスです。逆に言えばnfsを使っていなければrpcbindは不要です。

rpc(remote procedure call) bindは古いOSでは代わりにportmapというサービスをつかっていました。portmapという名前のほうがどんなことをしているのかわかりやすい気がします。

webサーバはポート80, 443、メールサーバはポート25など待ち受けるポート番号が固定されています。一方nfsはこのように固定されていません。

nfsクライアントはどのポートでnfsサーバが待ち受けているかわからないので、rpcbindと通信して問い合わせます。rpcbindはもともとportmapという名前だっただけあるので、nfsサーバが使用するポートが登録されています。

rpcbindはnfsサーバが使用するポートを知っているのでリダイレクトしてnfsクライアントがnfsサーバに通信できるようになります。

nfsクライアント -> rpcbind( port 111) — nfs server use port 1908 <–> nfs サーバ

rpcbindを無効化してポート111を閉じよう!

rpcbindを無効化しましょう。systemctl stop rpcbind rpcbind.socketを実行します。

bash
# systemctl stop rpcbind rpcbind.socket
# systemctl status rpcbind | grep -i active
● rpcbind.service - RPC bind portmap service
   Loaded: loaded (/lib/systemd/system/rpcbind.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:rpcbind(8)
# netstat -ltnp
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態        PID/Program name
tcp        0      0 0.0.0.0:22            0.0.0.0:*               LISTEN      519/sshd
tcp6       0      0 :::22                 :::*                    LISTEN      519/sshd
//自動起動を無効化するため disableする
# systemctl disable rpcbind

これでポート111は閉じられました。sshしかしないのでこのサーバはsshdの22ポートしかlistenしていません。

コメントを残す

メールアドレスが公開されることはありません。