SSHの堅牢化と鍵ベース認証
パスワード認証を無効にし、鍵ペアを設定し、AllowUsersでアクセスを制限して、fail2banを使用します。
「SSHの堅牢化と鍵ベース認証」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
SSHセキュリティが重要な理由
SSHはLinuxサーバーのリモート管理に使われる主要なプロトコルです。設定を誤ったSSHサーバーは、攻撃者が侵入する最も一般的な経路の一つです。インターネットに公開され、常時ブルートフォース攻撃を行うボットの標的になります。
SSHキーペアの生成
鍵ベースの認証は、パスワード認証よりも強固です。キーペアを生成します。
ssh-keygen -t ed25519 -C "your_email"
# Creates ~/.ssh/id_ed25519 (private) and id_ed25519.pub (public)
# Never share the private key公開鍵のインストール
公開鍵をサーバーにコピーします。
ssh-copy-id user@server
# Or manually:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keysパスワード認証の無効化
鍵ベースの認証が機能することを確認したら、ブルートフォース攻撃のリスクをなくすためにパスワードログインを無効にします。
# In /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart sshdSSHのデフォルトポートの変更
SSHをポート22から変更すると、自動スキャンによるノイズを減らせます。これはsecurity through obscurity(隠すことによるセキュリティ)であり、実際の防御策ではありませんが、ログの大量発生を抑えられます。ファイアウォールのルールも必ず合わせて更新してください。
# /etc/ssh/sshd_config
Port 2222
# Then update firewall:
ufw allow 2222/tcp
ufw delete allow 22/tcpユーザーやIPによるSSHアクセスの制限
SSH接続を許可するユーザーと接続元を制限します。
# /etc/ssh/sshd_config
AllowUsers alice bob
AllowGroups sshusers
# Or restrict by source IP in /etc/hosts.allow:
sshd: 192.168.1.0/24SSHのタイムアウトとログイン回数の制限
セッションと試行回数に制限を設けて、攻撃にさらされる範囲を減らします。
# /etc/ssh/sshd_config
ClientAliveInterval 300 # disconnect idle sessions after 5 min
ClientAliveCountMax 2
MaxAuthTries 3 # max password attempts
LoginGraceTime 30 # seconds to authenticatefail2banの使用
fail2banはログファイルを監視し、悪意のあるパターン(SSHログインの失敗が多すぎる場合など)を示すIPを禁止します。ファイアウォールのルールを動的に更新して、攻撃者をブロックします。
apt install fail2ban
# /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 3
bantime = 3600SSHエージェントと鍵転送
SSHエージェントは、復号済みの秘密鍵をメモリに保存するため、ログインするたびにパスフレーズを再入力する必要がありません。エージェント転送(ssh -A)は、複数の接続先を経由して鍵を転送します。侵害された中継サーバーによってエージェントソケットから鍵を盗まれる可能性があるため、慎重に使用してください。
SSHの二要素認証
Google Authenticator PAMモジュールを使ってSSHにTOTPを追加すると、鍵ベースの認証を使用している場合でも保護を強化できます。ログインには、鍵と時間ベースのOTPの両方が必要になります。
SSH設定の監査
次のコマンドでSSH設定を確認します。
sshd -T | grep -E "passwordauth|permitroot|pubkeyauth|port"
# Check who is connected:
ss -tnp | grep :22
who確認問題: SSHの強化
SSHに対するパスワードのブルートフォース攻撃をなくすには、sshd_configのどの設定をnoにすべきですか?
レッスンのまとめ
SSHを強化するには、Ed25519鍵を使用し、パスワード認証とrootログインを無効にし、ポート22を変更し、AllowUsersで接続元を制限し、アイドルタイムアウトを設定し、fail2banをインストールします。秘密鍵は決して共有しないでください。sshd -Tで監査します。エージェント転送は便利ですが、信頼できないホストでは危険です。
よくある質問
「SSHの堅牢化と鍵ベース認証」レッスンは無料ですか?
はい。「SSHの堅牢化と鍵ベース認証」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「SSHの堅牢化と鍵ベース認証」で何を学びますか?
パスワード認証を無効にし、鍵ペアを設定し、AllowUsersでアクセスを制限して、fail2banを使用します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「SSHの堅牢化と鍵ベース認証」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ファイルの権限と所有権
- ユーザーとグループの管理
- SSHの堅牢化と鍵ベース認証
- iptablesとUFWのファイアウォールルール