SSHのセキュリティを強化する設定方法:鍵認証・ポート変更・Fail2Ban

SSHのセキュリティを高めるための具体的な設定方法を解説。鍵認証の導入、ポート番号の変更、Fail2Banの設定など、実践的な対策を紹介。

SSHセキュリティ鍵認証ポート変更Fail2Ban設定2026/5/25

はじめに

SSH(Secure Shell)は、リモートサーバーを安全に管理するためのプロトコルです。しかし、デフォルト設定のまま使用すると、ブルートフォース攻撃や不正アクセスのリスクがあります。本記事では、SSHのセキュリティを強化するための具体的な設定方法を紹介します。鍵認証の導入、ポート番号の変更、Fail2Banの設定など、実践的な対策を順を追って解説します。

SSHの基本とリスク

SSHはデフォルトでポート22を使用し、パスワード認証が有効になっています。この状態では、攻撃者が総当たり攻撃(ブルートフォース)でパスワードを推測する可能性があります。また、パスワードが弱い場合、簡単に突破される危険性があります。そのため、以下の対策を実施することが推奨されます。

  • 鍵認証によるパスワード認証の無効化
  • ポート番号の変更
  • Fail2Banによる不正アクセスのブロック
  • rootログインの禁止
  • 1. 鍵認証の設定

    鍵認証は、公開鍵と秘密鍵のペアを使用して認証を行う方式です。パスワードよりも安全性が高く、自動化にも適しています。

    1.1 鍵ペアの生成

    クライアント側(自分のPC)で以下のコマンドを実行し、鍵ペアを生成します。

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    -t ed25519 はEd25519アルゴリズムを指定します。RSAよりも高速で安全とされています。鍵の保存場所はデフォルトの ~/.ssh/id_ed25519 で構いません。パスフレーズを設定することで、秘密鍵が漏洩した場合のリスクを軽減できます。

    1.2 公開鍵のサーバーへの転送

    生成された公開鍵(id_ed25519.pub)をサーバーに転送します。ssh-copy-id コマンドが便利です。

    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
    

    転送後、サーバー側の ~/.ssh/authorized_keys に公開鍵が追加されます。

    1.3 SSH設定ファイルの編集

    サーバーの /etc/ssh/sshd_config を編集し、鍵認証のみを許可します。

    sudo nano /etc/ssh/sshd_config
    

    以下の設定を変更または追加します。

    PasswordAuthentication no
    PubkeyAuthentication yes
    ChallengeResponseAuthentication no
    
  • PasswordAuthentication no:パスワード認証を無効化
  • PubkeyAuthentication yes:公開鍵認証を有効化
  • ChallengeResponseAuthentication no:チャレンジレスポンス認証を無効化(パスワード認証に関連)
  • 1.4 設定の反映

    編集後、SSHサービスを再起動します。

    sudo systemctl restart sshd
    

    別のターミナルで新しいセッションを開き、鍵認証でログインできることを確認してください。もしログインできない場合、設定を元に戻して原因を調査します。

    2. ポート番号の変更

    ポート番号をデフォルトの22から別の番号に変更することで、自動化されたスキャンツールからの攻撃を回避しやすくなります。

    2.1 設定ファイルの編集

    /etc/ssh/sshd_config を開き、以下の行を探します。

    #Port 22
    

    コメントを解除し、任意のポート番号(例:2222)に変更します。

    Port 2222
    

    1024未満のポートを使用する場合はroot権限が必要ですが、1024以上であれば一般ユーザーでも問題ありません。ただし、他のサービスと競合しない番号を選びます。

    2.2 ファイアウォールの設定

    新しいポートを許可するようファイアウォールを設定します。

    UFWの場合

    sudo ufw allow 2222/tcp
    sudo ufw deny 22/tcp
    sudo ufw reload
    

    firewalldの場合

    sudo firewall-cmd --permanent --add-port=2222/tcp
    sudo firewall-cmd --permanent --remove-service=ssh
    sudo firewall-cmd --reload
    

    2.3 設定の反映

    SSHサービスを再起動します。

    sudo systemctl restart sshd
    

    新しいポートで接続する際は、-p オプションを指定します。

    ssh -p 2222 user@server_ip
    

    3. Fail2Banの設定

    Fail2Banは、ログファイルを監視し、不正アクセスを試みるIPアドレスを自動的にブロックするツールです。

    3.1 Fail2Banのインストール

    Debian/Ubuntu

    sudo apt update
    sudo apt install fail2ban -y
    

    CentOS/RHEL

    sudo yum install epel-release -y
    sudo yum install fail2ban -y
    

    3.2 SSH用の設定

    /etc/fail2ban/jail.local を作成し、SSHの設定を記述します。

    sudo nano /etc/fail2ban/jail.local
    

    以下の内容を追加します。

    [DEFAULT]
    bantime = 3600
    findtime = 600
    maxretry = 5
    

    [sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s

  • bantime:ブロック時間(秒)。ここでは1時間。
  • findtime:監視時間枠(秒)。ここでは10分。
  • maxretry:最大試行回数。ここでは5回。
  • ポート番号を変更した場合、port の値を実際のポート番号に変更します。

    [sshd]
    enabled = true
    port = 2222
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s
    

    3.3 Fail2Banの起動と自動起動設定

    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    

    3.4 動作確認

    ブロック状況を確認するには以下のコマンドを実行します。

    sudo fail2ban-client status sshd
    

    4. rootログインの禁止

    rootユーザーでの直接ログインを禁止し、一般ユーザーでログイン後、sudo で特権昇格する運用が推奨されます。

    /etc/ssh/sshd_config で以下の設定を確認します。

    PermitRootLogin no
    

    これにより、rootでのSSHログインが拒否されます。

    まとめ

    本記事では、SSHのセキュリティを強化するための3つの主要な設定を紹介しました。

  • 鍵認証の導入:パスワード認証を無効化し、公開鍵認証のみを許可することで、ブルートフォース攻撃を防止します。
  • ポート番号の変更:デフォルトポートを変更することで、自動スキャンによる攻撃を回避します。
  • Fail2Banの設定:不正アクセスを試みるIPを自動的にブロックし、セキュリティを向上させます。
  • これらの設定を実施することで、SSHサーバーの安全性を大幅に高めることができます。ただし、設定変更後は必ず別のセッションで接続確認を行い、ロックアウトされないように注意してください。

    また、定期的なログ監視やソフトウェアのアップデートも忘れずに行いましょう。


    *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    参考リンク

  • OpenSSH公式ドキュメント: https://www.openssh.com/manual.html
  • Fail2Ban公式サイト: https://www.fail2ban.org/wiki/index.php/Main_Page