鍵は「ポストに置いておく」な――SSH公開鍵認証強制の極意
現場でインシデント対応をしていると、いまだに「パスワード認証を有効にしているサーバー」がいかにして食い物にされているかを嫌というほど思い知らされる。
公開鍵認証を強制し、パスワード認証を殺す。これはセキュリティの「ABC」であり、ここを疎かにしているシステムは、玄関の鍵をかけずに外出しているようなものだ。どれほど高価なWAFを入れようが、どれほど複雑なパスワードを設定しようが、ブルートフォース(総当たり攻撃)は止まらない。ログを確認すれば、毎秒数回のログイン試行が延々と続いているのが見えるはずだ。
今日は、なぜパスワード認証が危険なのか、そしてどう実装すれば「鉄壁」と言える状態になるのかを、泥臭い実務の視点から解説する。
—
なぜパスワード認証は「死」を招くのか
攻撃者は、ツールを使って世界中のIPアドレスに対して22番ポートを叩き続けている。彼らにとってパスワード認証が有効なサーバーは、「辞書攻撃を試す価値があるターゲット」に過ぎない。
一度でも弱いパスワードが突破されれば、そこからバックドアを設置され、ボットネットの一部に組み込まれ、あるいはランサムウェアの入り口にされる。もし君が「自分は大丈夫」だと思っているなら、今すぐ /var/log/auth.log (または secure)を見てほしい。無数のログイン失敗ログが、君のサーバーを喰おうとしている連中の足跡だ。
—
実装編:SSHの要塞化(sshd_config)
設定を変更する前に、必ず「別のターミナルで接続を維持したまま」作業すること。設定をミスると、二度とログインできなくなるからだ。
/etc/ssh/sshd_config を開き、以下の設定を適用する。
# 1. パスワード認証を完全に無効化する。これが一番重要
PasswordAuthentication no
# 2. 空パスワードのログインを禁止
PermitEmptyPasswords no
# 3. ルートユーザーの直接ログインを禁止(踏み台にされた時の被害を抑える)
PermitRootLogin no
# 4. 公開鍵認証を明示的に有効化
PubkeyAuthentication yes
# 5. 使用可能な鍵アルゴリズムを限定する(Ed25519を優先)
# 古いRSAやDSAは脆弱性リスクがあるため除外する
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519-cert-v01@openssh.com,ssh-ed25519
設定を書き換えたら、必ず sudo sshd -t で構文チェックを行い、sudo systemctl restart sshd で反映させる。
—
鍵の生成:Ed25519を選択せよ
RSA鍵を使っているエンジニアも多いが、今は Ed25519 一択だ。RSAよりも高速で、かつ現代の暗号学的な基準でより安全性が高い。
クライアントPC側で以下のコマンドを叩き、鍵ペアを生成してほしい。
# -t ed25519 でアルゴリズムを指定、-Cでコメントを残す
ssh-keygen -t ed25519 -C "your_email@example.com"
生成された公開鍵(~/.ssh/id_ed25519.pub)の中身を、サーバー側の ~/.ssh/authorized_keys に追記する。これをやっておかないと、パスワード認証を無効にした瞬間にサーバーから締め出されるので注意してくれ。
—
実践的Tips:もし「鍵を紛失したら」?
「公開鍵認証しか受け付けない設定にしたのに、秘密鍵を紛失した!」という泣きそうなエンジニアを過去に何人も見てきた。そんな時のために、クラウドインフラ(AWS/GCP/Azure)を使っているなら、シリアルコンソールやインスタンススナップショットからの救出手順を事前に確認しておくのがプロの仕事だ。
また、本番環境でどうしてもパスワード認証が必要な特殊なケース(レガシーなスクリプト等)があるなら、そこはSSHではなく、AWS Systems Manager (SSM) のような認証を抽象化できるマネージドサービスを導入するべきだ。
まとめ:セキュリティは「設定」ではなく「規律」
今回紹介した設定は、いわば「基本装備」だ。しかし、これだけでも攻撃者にとっては「面倒なターゲット」と認識され、スクリプトキディによる攻撃のほとんどは弾けるようになる。
技術とは、単にコードを書くことではない。「いかにしてリスクを物理的・論理的に排除するか」という設計思想の具現化だ。
今日から、パスワード認証という「脆弱性」を自らの手で排除し、胸を張ってサーバーを運用してほしい。現場からは以上だ。また何かあればいつでも聞け。
コメント