ポートスキャンという「偵察」を舐めてはいけない:サービス特定を防ぐための防衛術
君たちが普段何気なく行っている nmap -sV や nmap -O。これらは単なるネットワーク診断のツールではない。攻撃者が標的の「ドアの鍵のメーカー」や「部屋のレイアウト」を把握するための、最も効率的かつ致命的な偵察行為だ。
現場でインシデント対応をしていると、往々にして「ポートが少し開いているくらいなら大丈夫だろう」という慢心が見られる。だが、ポートスキャンで得られた正確なバージョン情報は、エクスプロイト(攻撃コード)を選択するための決定的なヒントになる。今日は、攻撃者が何を見ていて、どうやってそれを無力化すべきか、実務的なレベルで叩き込む。
—
1. 攻撃者が「フィンガープリント」から読み取るもの
攻撃者は、単にポートが開いているかを見ているわけではない。彼らが狙っているのは、サーバーが返す「無意識の自己紹介」だ。
- バナー情報:
SSH-2.0-OpenSSH_8.2p1のように、ソフトウェア名とバージョンを律儀に返してしまう設定。 - レスポンスの癖: HTTPヘッダーに含まれる
Server: nginx/1.18.0やX-Powered-By: PHP/7.4.3といった情報。 - TCPスタックの応答: OSの種類やパッチ適用状況によって微妙に異なるTCPパケットの応答特性(フィンガープリント)。
これらが揃うと、攻撃者は「このバージョンにはCVE-XXXX-XXXXがあるから、このスクリプトを投げればいい」と、最短ルートで侵入を試みる。我々がやるべきは、この「自己紹介」を徹底的に黙らせることだ。
—
2. 実務で即効性のある防御設定
Nginxでの情報隠蔽(セキュリティヘッダーの制御)
デフォルトのNginxは、エラーページやレスポンスヘッダーでバージョンを誇らしげに宣言する。これを即座に止める。
# /etc/nginx/nginx.conf
http {
# バージョン情報をレスポンスヘッダーから削除
server_tokens off;
# エラーページ等でサーバー情報を表示させない
fastcgi_hide_header X-Powered-By;
proxy_hide_header X-Powered-By;
}
PHPの自己主張を封じる
PHPもまた、X-Powered-By ヘッダーを吐き出すお節介な機能がある。これは php.ini で一発だ。
; /etc/php/8.x/fpm/php.ini
; ヘッダーにPHPのバージョンを含めない
expose_php = Off
—
3. ポートスキャンを検知・遮断する:Fail2Banの活用
単に隠すだけでは不十分だ。ポートスキャンは「悪意ある接続の予兆」である。執拗なスキャンを試みるIPを自動的にBANする Fail2Ban は、現代のインフラ運用における最低限の防波堤だ。
以下は、SSHへのブルートフォースやポートスキャン的な挙動を検知して遮断する設定例である。
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3 # 3回失敗したらアウト
bantime = 3600 # 1時間は締め出し
さらに高度に、iptables や nftables を組み合わせ、一定期間内に特定のポートへ短時間に複数回アクセスしたIPをドロップさせる設定を組み込むことで、 reconnaissance(偵察)段階で攻撃者を追い返すことができる。
—
4. クラウド時代のIAMとセキュリティグループの鉄則
クラウド(AWS/GCP/Azure)を使っているなら、「全開放」は死を意味する。
- 最小権限の原則: セキュリティグループで
0.0.0.0/0を許可して良いのは、Web公開用の80/443ポートだけだ。22(SSH)や3306(DB)は、踏み台サーバー経由、あるいはVPN越しにしかアクセスできないよう制限せよ。 - 隠蔽の極み: AWSの
Security Groupでは、不要なポートは存在しないものとして扱う。ポートスキャンを実行しても「Filtered(フィルタリングされている)」と表示されるように設定すれば、攻撃者はその先のOSやサービス構成を推測することすらできない。
—
最後に:セキュリティは「情報の非対称性」である
我々の仕事は、敵に情報を与えないことだ。敵は情報を欲しがり、我々はそれを隠す。この「非対称性」を維持し続けることこそが、インシデントを未然に防ぐ鍵となる。
「動けばいい」という考え方は今日で捨てろ。設定ファイルの一行、ヘッダーの一個にまで神経を尖らせるエンジニアだけが、この過酷なサイバー戦場を生き抜くことができる。君たちの手元のサーバーが、今日から「饒舌な素人」ではなく「沈黙するプロ」に変わることを期待している。
何か不明な点があれば、またいつでも聞いてくれ。現場からは以上だ。
コメント