おしらせ 活用TIPS

起動サービスのポート使用状況調査についてのお願い

先日よりお知らせしておりますとおり、グローバルネットワークに公開されたサーバ上で起動されるmemcachedのポートを対象とした攻撃が頻発しています。

強固な認証やアクセス制御などのセキュリティ機能を持たず、グローバルネットワーク側への開放を想定していないサーバソフトウェアが外部より無制限にアクセス可能な状態となると、今回のような攻撃に晒され、お客様サーバ内に保存されたデータの流出のみならず、ネットワークトラフィックの増大や外部ホストへの攻撃により他のお客様へのご迷惑となる場合があります。

つきましては、インターネットからユーザが直接アクセスするサービス(HTTPの80番ポートやSMTPの25番ポートなど)の他に、主にローカルネットワークでの通信を想定したサービス(MySQLの3306番ポートやNFSの2049番ポートなど)のポートが開放されていないかをご確認いただき、サービスの制限機構やファイアウォールなどによる適切なアクセス制御設定の実施や、意図せず開放されていた場合サービスを停止するなどのご対応をお願いいたします。

参考1: CentOS7系環境での開放ポート確認方法

CentOS7系では、標準でインストールされているssコマンドを使用して確認が可能です。オプションを付与しないとUNIXドメインなど全てのソケットが表示されるので、TCP/UDPでListenしているポートのみを表示させる”-tul state listening”オプションを付与して実行します。

[root@test ~]# ss -tul state listening
Netid Recv-Q Send-Q    Local Address:Port        Peer Address:Port   
tcp   0      50                    *:mysql                  *:*       
tcp   0      128                   *:ssh                    *:*       
tcp   0      100           127.0.0.1:smtp                   *:*       
tcp   0      128                  :::http                  :::*       
tcp   0      128                  :::ssh                   :::*       
tcp   0      100                 ::1:smtp                  :::*       
tcp   0      128                  :::https                 :::*

※実際の表示とは一部異なります。

意図せずポートが開放されていた場合、追加で”-p”オプションを付与することでそのポートを占有しているプロセス名とプロセスIDが表示されます。

[root@test ~]# ss -tulp state listening
Netid  Recv-Q Send-Q    Local Address:Port        Peer Address:Port   
tcp    0      50                    *:mysql                  *:*        users:(("mysqld",934,14))
tcp    0      128                   *:ssh                    *:*        users:(("sshd",712,3))
tcp    0      100           127.0.0.1:smtp                   *:*        users:(("master",993,13))
tcp    0      128                  :::http                  :::*        users:(("httpd",27054,4),("httpd",17112,4),("httpd",17110,4))
tcp    0      128                  :::ssh                   :::*        users:(("sshd",712,4))
tcp    0      100                 ::1:smtp                  :::*        users:(("master",993,14))
tcp    0      128                  :::https                 :::*        users:(("httpd",27054,6),("httpd",17112,6),("httpd",17110,6))

表示されたプロセスIDをもとに不要なポートをListenしているプロセスを特定し、プロセスの停止やアクセス制限設定の再確認・追加などにより不正なアクセスが行われないよう対応を行ってください。また、不必要なサービスはsystemctlコマンドなどを使用し、サーバ起動時に自動的に起動しないような設定を行ってください。

※起動中のHTTPサービス(Apache)を停止し、ブート時に同時起動しないようにする設定例

# systemctl stop httpd
# systemctl disable httpd

参考2: firewalld, iptables を用いたファイアウォール設定方法

CentOS7 の場合は firewalld, CentOS6 の場合は iptables を用いてファイアウォールを設定し、公開する予定の無いポートは予め遮断しておく、通信先が限定されているポートにはアクセス可能なIPを指定するなどアクセス制限を行ってください。
以下「さくらのナレッジ」での firewalld, iptables 設定方法を解説していますのでご参照ください。

ファイアウォール”firewalld”について理解しよう

ファイアウォールiptablesを簡単解説

参考3: 意図せず開放されていることの多いポート

何らかのプログラムをインストールし、デフォルトの設定のままで起動した場合によく開放されるポートの一覧です。ssコマンドなどによる調査でこれらのポートが意図せず開放されていた場合はグローバルネットワーク側に対するポート閉塞対応を推奨します。

ポート番号
主な用途・プログラム
8080 HTTPでアクセス可能なGUIインタフェース、80番ポートの代替など。
8081 HTTPでアクセス可能なGUIインタフェース、80番ポートの代替など。
8888 プログラムの管理インタフェースへの接続用、SSHの代替など。
111 SunRPC(NFS関連)ポート。RPCリフレクション攻撃対象ポート。
5353 53番(DNS)ポートの代替。mDNSリフレクション攻撃対象ポート。
27017 MongoDBデフォルトポート。MySQL、memcached同様グローバル非公開推奨。
137 NetBIOS。Sambaをインストールしたサーバ、WindowsOSで要注意。グローバル非公開推奨。
445 Microsoft SMB。WindowsOSで要注意。グローバル非公開推奨。
23 Telnet。プログラムの管理インタフェースへの接続用、SSHの代替など。