先日よりお知らせしておりますとおり、グローバルネットワークに公開されたサーバ上で起動される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 設定方法を解説していますのでご参照ください。
参考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の代替など。 |