1. TOPTOP
  2. インフラ

さくらのVPSで111番ポートが閉塞されているかどうか確認する方法 ~ Nmap(ポートスキャン)の活用

|

111_nmap_portscan_1

先日、さくらインターネットより、memcachedのアクセス制御に関する注意喚起(新しいタブで開く)というお知らせをEmailでいただきました。memcachedのポートを対象とした攻撃が増えているため意図せず開放しているポートは閉塞してくださいとのことです。あああ

111番ポートは開放されているのか?

# ss -ntl
State       Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN      0      128                           *:111                                       *:*                  
LISTEN      0      128                           *:●●●                                     *:*                  
LISTEN      0      100                           *:○○○                                     *:*                  
...

ssコマンドとオプション”-ntl”を使うと、現在サーバー(さくらのVPS)で開放されているポート番号の一覧が分かります。コマンドの実行結果である、●●●や○○○は何らかの用途があって意図的に開けているポートです。ただ111番ポートは自分で開放した覚えはありませんが、なぜか開放されているように見えます。

ちなみにこれは自分が使っているあるサーバーの「さくらのVPS」のポート開放状況を示しています。さくらのVPSの初期設定で開放されているポートは22番ポートだけです。111番ポートはSunRPC(NFS関連)ポートで、RPCリフレクション攻撃(新しいタブで開く)の標的となりやすいポートです。

firewall-cmdとremoveでは閉塞できない?

# firewall-cmd --permanent --remove-port=111/tcp
Warning: NOT_ENABLED: 111:tcp
success

firewall-cmdコマンドで111番ポートを閉塞すると、コマンド結果として”Warning”が出現するものの、”success”は表示されています。

# ss -ntl
State       Recv-Q Send-Q            Local Address:Port                           Peer Address:Port              
LISTEN      0      128                           *:111                                       *:*                  
LISTEN      0      128                           *:●●●                                     *:*                  
LISTEN      0      100                           *:○○○                                     *:*                  
...

ですが、再度ssコマンドで確認しても111番ポートはまだ開放されているように見えます。

Nmap(ポートスキャン)の活用

そこで活用するのがNmap(ポートスキャン)です。Nmap(ポートスキャン)とは、対象として指定したホストに対してポート番号を変えながらIPパケットを送信し、その反応を調べることでどのポートが外部からアクセス可能なのかを調査することを指します。

今回の記事ではクライアントPCとして使用しているMacから、当該サーバーにポートスキャンを実施します。なおWindowsを活用したポートスキャンは、さくらのナレッジの記事(新しいタブで開く)が参考になると思われます。

Homebrewのインストール

$ pwd
/home/yourusername
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nmapをインストールするためには、まずmacOS用のパッケージマネージャーである”Homebrew“をインストールする必要があります。Homebrewのページ(新しいタブで開く)に従って上記コマンドを実行してクライアントPCのターミナルにインストールしてください。

Nmapのインストール

$ brew install nmap

引き続きNmapをインストールします。上記のコマンドをクライアントPCのターミナル上で実行してください。

ポートスキャンの実施

$ nmap -p 111 153.126.168.216
PORT  STATE  SERVICE
111/tcp closed rpcbind

HomebrewとNmapのインストールが完了すると、IPアドレスを指定してポートスキャンを実施することができます。当エコテキブログのIPアドレスは”153.126.168.216″です。その111番ポートについては”closed”と表示されます。111番ポートには外部からのアクセスが不可能であることが分かります。

$ nmap -p 443 153.126.168.216
PORT    STATE SERVICE
443/tcp open  https

ちなみにオプションを”-p 443″とすると”https”接続に必要な443番ポートは、開放されていることが分かります。なお、ssコマンドで111番ポートが開放されているように見えるのは、サーバー内部の設定的な何かでそうなっているように推察しています。