Scribble at 2025-10-09 08:32:15 Last modified: 2025-10-09 08:42:10
Is there any advantage in changing the SSH port, I've seen people do that, but I can't seem to find the reason why.
或る案件で運用しているウェブ・サーバでは、クライアントからのセキュリティ要件として(上場企業や大手企業には、こういうことを機械的に言ってくる部署があるものだ)、ssh のポート番号を 2222 に変更せよなどと言ってくることがあり、いつものことだが「やれやれ」と思いながら対応している。
まず、情報セキュリティのマネジメントというだけではなくエンジニアとしての実務家という観点で言わせてもらえば、これもまた「セキュリティ劇場(security theatre)」の一例である。こんなことでウェブ・サーバの防御になるなどというのは、錯覚だ。きわめて多くのブログなどで、sshd サービスを初期設定する場合の「セキュリティ対策」として、ポート番号をディフォールトの22番から2222番に変更せよと書いているが、実際にはその理由がぜんぜん説明されていないことも多い。同様に、パスワード認証ではなく鍵認証を使えとも言われる場合があるけれど、これもまともな説明をする人は殆どいない。どうしてかというと、そういう記事を書いている人間はコタツ記事を書いているだけの学生だったり、あるいは IT ゼネコンの下っ端などで、要するに会社で教えられている手順を右から左にコピペしているだけであり、そうする理由を(それが妥当であろうとなかろうと)全く分かっていないからだ。
ポート番号を変更せよと促す最も多い理由は、22番が ssh で使われる標準のポートであるため、外部からのポート・スキャンを簡単に許してしまうからだという。つまり、ssh では22番のポートを使うのがスタンダードであるから、22番のポートが開放されているかどうかをコマンドなどで調べるだけでよいというわけである。
だから?
だから、ポート番号さえ分かれば、そのポートに対して sshd サービスへのログインを試みられる。つまりは、よくあるブルートフォースを実行できるというわけなのだろう。でも、ポート・スキャンなんて簡単だ。それこそ25000番台のポートまで、一つずつ開いているかどうかを確認する作業など、ツールを使えばすぐに終わる。22番から変更された ssh のポート番号がどれであるかはともかく、開放されているポート番号の一覧など、たちどころにスキャンされてしまうだろう。そして、たいていのウェブ・サーバでは変更できないポート番号というものがあるので、それらを除外していけば ssh のポート番号の候補はすぐに絞られる。たとえば、http の80番、https の443番などを勝手に変更するわけにはいかないので、これらは(ステージング用途などで、サーバへアクセスする全員がポート番号の変更を知っているわけでもなければ)だいたい変更できない。また MTA の送受信に使う番号も変更できない。せいぜい、データベースくらいしか現実にはポート番号の変更などしないだろう。
しかし、実は ssh のポート番号を変更すること自体にリスクがある。
https://www.adayinthelifeof.nl/2012/03/12/why-putting-ssh-on-another-port-than-22-is-bad-idea/
上のページで説明されているように、1024番より大きな数のポート番号は root 権限が不要でプロセスを扱えるため、内部犯行によって悪意のある人物が勝手に sshd サービスのようなレスポンスを返すスクリプトをサーバ内に仕込んで、root を始めとする他人のパスワードを盗む可能性がある。1024番よりも小さなポート番号で動くプロセスは「特権ポート」のプロセスであり、22番もそうだし80番や443番もそうだが、これらのポート番号でレスポンスするプロセス、つまりサービス(デーモン)は、root つまりは特権がないとポート番号を開放したりプロセスを制御したりという操作ができない。実際、httpd を再起動するだけでも sudo できる権限がないかぎりコマンドは受け付けられない。
そして、多くのセキュリティ・ツールやアプライアンスでは、ssh のポート番号が22番であることを前提にフィルタリングやファイアーウォールの設定が組み込まれていて、それらを全て例外的に変更する必要があるという問題もあろう。自分で全てを制御する権限があればともかく、制御する権限がない場合は交渉事になるだろう。そして、多くの大手企業では、社内から暗号を利用したプロトコルで外部へアクセスできるポートが限定されている場合がある。たった一つの案件だけのために例外的に一つのポートを開放するようなポリシーを持っている大手企業や上場企業は、まずない。