SSHのハードニングと監査のベストプラクティス
sshd_configのハードニング、鍵のローテーション、監査ログを適用して、SSH環境を堅牢化します。
「SSHのハードニングと監査のベストプラクティス」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
パスワード認証の無効化
SSHのセキュリティ強化で最も効果の大きい手順は、/etc/ssh/sshd_configでPasswordAuthentication noを設定することです。これにより、すべてのユーザーは公開鍵で認証することになり、脆弱なパスワードや使い回しのパスワード、ブルートフォース攻撃によるリスクを排除できます。パスワード認証を無効にする前に、少なくとも1つの認証済み公開鍵がインストールされていることを確認し、締め出されないようにしてください。
許可するユーザーとグループの制限
AllowUsersおよびAllowGroupsディレクティブは、指定したユーザーまたはグループのメンバーにSSHアクセスを制限します。たとえば、AllowGroups sshusersを指定すると、sshusersグループのメンバーだけがアクセスできます。これは多層防御として機能します。攻撃者がユーザー名を知り、認証情報を入手した場合でも、アカウントが明示的に許可されていなければSSHアクセスは拒否されます。
デフォルトポートの変更
SSHのポートを22から番号の大きいポートに変更することは、セキュリティではなく隠蔽による対策です。ただし、ポート22を標的とする自動スキャナーによるログのノイズを大幅に減らせます。その結果、ログから本当の脅威を分析しやすくなります。ファイアウォールのルールを常に主要なアクセス制御として維持し、ポートの隠蔽は補助的な対策に限定してください。
rootログインの無効化
PermitRootLogin noを設定すると、SSH経由でのrootの直接認証を防止できます。rootを標的にする攻撃者は、有効なユーザー名を確実に知っており、成功すれば無制限の権限を得られます。推奨される設定はPermitRootLogin prohibit-passwordです。これにより、rootログインを公開鍵認証に限定し、パスワードによるrootへのブルートフォース攻撃を阻止しながら、緊急時のアクセスを維持できます。
認証試行回数の制限
MaxAuthTries 3は、1回の接続で許可する認証試行回数を3回に制限します。3回失敗すると、サーバーは接続を終了します。これにより、ブルートフォース攻撃の速度を低下させられます。繰り返し失敗した後にIPアドレスを一時的に禁止するfail2banまたはSSHGuardの指数バックオフと組み合わせると、ブルートフォース攻撃は計算量的に現実的でなくなります。
ログイン時間の制御
LoginGraceTimeは、認証に成功するまでサーバーが待機してから切断するまでの時間を指定します。デフォルトは120秒です。これを20秒に短縮すると、時間をかけたブルートフォース攻撃を防ぎ、認証されていない接続によるリソースの占有を減らせます。ClientAliveIntervalとClientAliveCountMaxは、接続のヘルスチェックを制御し、アイドル状態または切断されたセッションを終了できるようにします。
許可する暗号アルゴリズムの制限
最新のSSH設定では、強力で現代的なアルゴリズムだけを許可する必要があります。sshd_configで、Ciphersにはchacha20-poly1305@openssh.com,aes256-gcm@openssh.comを設定し、MACsにはhmac-sha2-256-etm@openssh.comを、KexAlgorithmsにはcurve25519-sha256を設定してください。これにより、後方互換性のために利用可能となっているarcfour、DES、MD5ベースのMACなどのレガシーアルゴリズムを排除できます。
fail2banによるブルートフォース攻撃のブロック
fail2banは認証ログを監視し、ログイン失敗回数がしきい値を超えたIPアドレスを禁止します。設定可能な時間枠内で指定回数の失敗が発生すると、fail2banはiptablesルールを追加し、そのIPアドレスからの以降のパケットを破棄します。この自動対応により、手動で介入しなくてもブルートフォース攻撃を現実的に実行できなくなります。
ssh-auditによる監査
ssh-auditツールはSSHサーバーに接続し、その設定を評価します。具体的には、提供される鍵交換アルゴリズム、ホスト鍵の種類、暗号、MACを確認し、非推奨または脆弱なオプションを検出します。セキュリティ強化の前後にサーバーに対してssh-auditを実行すると、強化前後の状態を客観的に評価し、設定上の不足を特定できます。
ログ記録とアクセス監査
SSHの認証イベントはsyslog経由で記録されます。Linuxでは、/var/log/auth.log(Debian)または/var/log/secure(RHEL)に、タイムスタンプ、ユーザー名、送信元IP、使用された鍵のフィンガープリントとともに、成功したログインと失敗したログインがすべて記録されます。これらのログを一元化されたSIEMに送信すると、予期しない国からのログインや通常とは異なる時間帯のログインなど、通常とは異なるアクセスパターンを検出できます。
セキュリティ強化済み設定の完全な例
セキュリティ強化済みのsshd_configでは、PasswordAuthentication no、PermitRootLogin prohibit-password、MaxAuthTries 3、LoginGraceTime 20、AllowGroups sshusers、制限されたCiphersとMACs、X11Forwarding no、そして(トンネリングが必要な場合を除き)AllowTcpForwarding noを組み合わせます。各ディレクティブが特定の攻撃経路を排除し、全体として多層防御のSSHセキュリティ体制を構築します。
SSHのセキュリティ強化設定
SSHに対するパスワードのブルートフォース攻撃を排除するうえで、最も効果的なsshd_config設定はどれですか?
SSHセキュリティ強化の復習
SSHのセキュリティ強化チェックリストです。パスワード認証を無効にする、AllowGroupsまたはAllowUsersでアクセスを制限する、rootログインを無効にするか鍵認証のみに制限する、MaxAuthTries 3を設定する、LoginGraceTimeを短縮する、アルゴリズムを最新の暗号だけに制限する、fail2banまたはSSHGuardを導入する、客観的な評価のためにssh-auditを実行する、異常検出のためにログを一元化する、といった対策を行います。
AI チューターと学ぶ Cryptology Academy — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 67
- レッスン
- 261
よくある質問
「SSHのハードニングと監査のベストプラクティス」レッスンは無料ですか?
はい。「SSHのハードニングと監査のベストプラクティス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「SSHのハードニングと監査のベストプラクティス」で何を学びますか?
sshd_configのハードニング、鍵のローテーション、監査ログを適用して、SSH環境を堅牢化します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「SSHのハードニングと監査のベストプラクティス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- SSHハンドシェイクとホスト鍵認証
- 公開鍵認証とエージェントフォワーディング
- SSHトンネリングとポートフォワーディングの手法
- SSHのハードニングと監査のベストプラクティス