先日、さくらインターネットより、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番ポートが開放されているように見えるのは、サーバー内部の設定的な何かでそうなっているように推察しています。