1. 外部との通信状況の確認
現在確立しているネットワーク接続を確認する。
# sockstat -46 -c
ポート 22(SSH):自分の作業用端末からの接続のみ。
ポート 443(HTTPS):自分のブラウザからのアクセスと、検索エンジン(Bing や Semrush など)のクローラーのみ。サーバー側から外部へ勝手に通信を張っているような不審なプロセスは見当たらなかった。
2. 待ち受けポートの確認と MySQL の設定強化
外部からの接続を待ち受けているサービスとポートを確認する。
# sockstat -46 -l
稼働していたのは httpd(80, 443)、sshd(22)、php-fpm(127.0.0.1:9000)、mysqld(127.0.0.1:3306, *:33060)、ntpd、syslogd、そしてポートスキャン検知用の portsentry のみだった。ほとんどが適切に制限されていたが、MySQL の X Protocol 用ポート(33060)だけが全インターフェース(*:33060)で待ち受けていたため、念のためローカル限定(127.0.0.1)に絞ることにした。/usr/local/etc/mysql/my.cnf の [mysqld] セクション(bind-address の下の行)に以下を追記する。
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
設定反映のため MySQL を再起動する(ちょうど 8.4.11 から 8.4.13 へのアップグレード後の初回起動と重なり、InnoDB の初期化完了まで40秒ほどかかった)。
# service mysql-server restart
# sockstat -46 -l | grep mysqld
mysql mysqld 96071 29 tcp4 127.0.0.1:33060 *:*
mysql mysqld 96071 34 tcp4 127.0.0.1:3306 *:*
これで 3306 と 33060 の両方が 127.0.0.1 限定になった。
3. プロセス負荷と Web ディレクトリの更新チェック
裏で怪しい高負荷プロセスが動いていないか top で確認したところ、CPU 使用率は httpd や mysqld も含めて 0.2% 以下と非常に穏やかだった。不正アクセスを自動遮断する blacklistd も正常に稼働しており、portsentry と合わせて二重の防衛ができている。また、直近 7 日以内に作成・変更されたファイルも検索した。
# find /usr/local/www/ -mtime -7 -ls
ヒットしたのは、本日 apache24-2.4.70 へアップグレードした際に配置された標準のエラーページやアイコン類のみで、不審なスクリプトの混入などは一切なし。