はじめに

サーバーのリモート管理に不可欠なSSHですが、インストールしたままのデフォルト設定で運用していませんか?実は、デフォルト設定のままでは、悪意のある第三者によるブルートフォース攻撃などの標的になりやすく、非常に危険です。

この記事では、Linuxサーバーを管理する初中級者の方を対象に、SSHサーバーの設定ファイル sshd_config を編集して、セキュリティを強化するための基本的かつ効果的な手法を具体的に解説します。少しの設定変更で、サーバーの安全性を大きく向上させることができます。

パスワード認証を無効にし、公開鍵認証を必須にする

最も重要な設定の一つが、パスワードによるログインを禁止し、より安全な公開鍵認証に切り替えることです。パスワード認証は、単純なパスワードを設定している場合や、総当たり攻撃によって突破されるリスクがあります。一方、公開鍵認証は、手元の秘密鍵とサーバーに登録した公開鍵のペアを使って認証するため、パスワード漏えいのリスクを大きく下げられます。

設定は /etc/ssh/sshd_config で行います。変更前に、必ず公開鍵でログインできることを確認してください。確認せずにパスワード認証を無効にすると、自分自身がログインできなくなる可能性があります。

# /etc/ssh/sshd_config

# パスワードでのログインを許可しない
PasswordAuthentication no

# 公開鍵認証を許可する
PubkeyAuthentication yes

# チャレンジレスポンス認証も無効にする
ChallengeResponseAuthentication no

設定変更後は sudo systemctl restart sshd などでSSHサービスを再起動します。これだけでも、パスワードを狙った機械的な攻撃をかなり抑えられます。

rootユーザーでの直接ログインを禁止する

root はシステムの全権限を持つユーザーです。もし root アカウントでのSSHログインが突破されると、攻撃者はサーバーを完全に掌握できます。また、ユーザー名としての root は誰でも知っているため、真っ先に攻撃対象になります。

セキュリティの基本は、一般ユーザーでログインし、必要なときだけ sudo を使うことです。これにより、万が一アカウントが侵害されても被害範囲を絞りやすくなります。

# /etc/ssh/sshd_config

# rootユーザーのログインを禁止する
PermitRootLogin no

PermitRootLogin には複数の値がありますが、特別な事情がない限りは no を推奨します。変更後は忘れずにSSHサービスを再起動してください。

SSHポート番号を変更する

SSHのデフォルトポートは 22 番です。この番号は広く知られているため、インターネットに公開されたサーバーでは、22番ポートに対して大量の自動スキャンやログイン試行が飛んできます。ポート番号を変更するだけで、こうした機械的な攻撃の多くを避けられます。

これは本質的な認証強化ではありませんが、攻撃ノイズを減らし、ログの可読性を上げる効果があります。1024番以降の利用していないポートを選ぶのが一般的です。

# /etc/ssh/sshd_config

# ポート番号を22から変更する例
Port 2222

変更後は、サーバー側ファイアウォールやクラウドのセキュリティグループでも新しいポートを許可してください。クライアントからは ssh user@hostname -p 2222 のように接続します。ここを忘れると、自分も接続できなくなります。

まとめ

SSHのセキュリティ強化では、まずパスワード認証の無効化、rootログインの禁止、ポート番号の変更の3点を押さえるのが基本です。どれも設定変更自体は難しくありませんが、効果は大きく、サーバーを攻撃対象として放置しないための最低ラインになります。

さらに安全性を高めたい場合は、AllowUsers で接続可能ユーザーを制限したり、fail2ban で不正試行を自動遮断したり、踏み台経由にしたりといった追加策も有効です。まずは今回の基本設定を確実に入れ、定期的にログを確認する運用から始めるのが現実的です。