こんにちは。セキュリティの最前線で泥臭いインシデント対応を続けているエンジニアです。
今日は、サーバーの「入り口」であるSSHについて、少しだけ深く、でもわかりやすくお話ししますね。特に「SSHポートフォワーディング」という、一見便利そうな機能が、実は泥棒にとっての「秘密の裏口」になり得るというお話です。
—
泥棒が「合鍵」を使って裏口を開けるとき
皆さんは、自宅の玄関に立派な鍵をかけていると思います。でも、もし家の中に「外からは直接入れないはずの部屋」があって、その部屋にたまたま窓が開いていたらどうでしょうか?
SSHポートフォワーディングは、まさにこの「窓」のようなものです。
本来、SSHはサーバーを遠隔操作するための安全なトンネルですが、この機能を使うと、「自分のPCからサーバーを経由して、サーバーの奥にある別のネットワーク機器へ直接通信を繋ぐ」ことができてしまいます。
攻撃者は、あなたが「自分専用の管理ツール」だと思って使っているそのSSHのトンネルを、そのまま「攻撃用の踏み台」として利用します。サーバーのセキュリティがどれだけ堅牢でも、この「トンネル」を通ってしまえば、攻撃者はまるでサーバーの内部ネットワークにいるかのように振る舞えてしまうのです。
—
対策はシンプル。「秘密の裏口」を塞ぐだけ
SSHのトンネル機能(ポートフォワーディング)を無効にするのは、実はとても簡単です。SSHサーバーの設定ファイルである /etc/ssh/sshd_config を少し触るだけです。
設定手順を一緒に見ていきましょう。
1. 設定ファイルを開く
まずはサーバーにログインし、設定ファイルを編集します。
# 設定ファイルを編集します
sudo nano /etc/ssh/sshd_config
2. ポートフォワーディングを禁止する
ファイルの中で、以下の項目を探してみてください。もしなければ、新しく追記しましょう。
# AllowTcpForwarding を no にすることで、SSHトンネルを禁止します
AllowTcpForwarding no
3. 設定を反映させる
書き換えたら、SSHサービスを再起動して設定を適用させます。
# 設定を反映させるためにSSHサービスを再起動
sudo systemctl restart sshd
たったこれだけです。AllowTcpForwarding no と設定することで、SSHのトンネル機能という「裏口」を物理的に塞ぐことができます。
—
注意点:なぜ「全部塞ぐ」のが良いのか?
「いやいや、開発でたまに使うかもしれないし…」と思う方もいるかもしれません。でも、考えてみてください。その「たまに使う機能」が、攻撃者にとっては「いつでも侵入できるルート」になってしまうのです。
もし業務でどうしてもポートフォワーディングが必要な場合は、全ユーザーに対して許可するのではなく、「特定の信頼できるIPアドレスからのみアクセスを許可する」や、「VPN経由でのみアクセスさせる」といった別の強固なガードを組み合わせるのが、プロの現場での鉄則です。
—
最後に:セキュリティは「疑う」ことから始まる
「便利な機能ほど、悪用された時は凶器になる」というのが、セキュリティの世界の残酷な真実です。
今回設定した AllowTcpForwarding no は、サーバーの要塞化(ハーデニング)における最初の第一歩です。これだけで全てが防げるわけではありませんが、攻撃者があなたのサーバーを「攻略対象」として見たときに、「お、ここは簡単には裏口を使わせてくれないな」と思わせる。この「あきらめさせる」という心理的・技術的ハードルを積み重ねることこそが、最強の防壁になるのです。
ぜひ、今すぐ皆さんのサーバーの /etc/ssh/sshd_config を確認してみてください。「開けっ放しの窓」がないか、一緒にチェックしていきましょうね。
また次の記事で、現場の知恵をお話しできるのを楽しみにしています!
コメント