SSH のセキュリティ保護にはさまざまな手法が考えられますが、すべての手法がすべての環境で同じように実用的であるとは限りません。この記事で推奨されている手法は、実装の容易さと堅牢な保護のバランスが取れた、広く認知された効果の高い手法です。これらの手法は、NIST、CERT、OpenSSH プロジェクトなどの組織によって設定された標準に基づいており、SSL.com がデジタル証明書のセキュリティ保護にも適用している、キーの保護、強力な暗号化の使用、特権アクセスの制限といった基本原則を反映しています。
これらの基本的なベスト プラクティスを設定したら、必要に応じて、証明書ベースの SSH、ポート ノッキング、VPN 経由の SSH などのより高度な戦術を検討できます。
1. パスワードの代わりにキーベースの認証を使用する
それは何ですか:
パスワード ログインを暗号化された公開/秘密キー ペアに置き換えます。公開キーはサーバー上に保存され、秘密キーはローカル マシン上に残ります。
より安全な理由:
- パスワードはブルートフォース攻撃の影響を受けやすい
- 攻撃者が侵入するには、物理的に秘密鍵を入手する必要があります。これはパスワードを推測するよりもはるかに困難です。
実装方法:
キーペアを生成する
Linux または macOS では、ターミナルを開いて次のコマンドを実行します。
ssh-keygen -t ed25519
追加のセキュリティのために(ed25519 が環境で使用できない場合)、以下を使用できます。
ssh-keygen -t RSA -b 4096
公開鍵をサーバーにコピーする
ssh-copy-id コマンド (Linux/macOS) を使用すると、公開鍵を簡単に転送できます。
ssh-copy-id ユーザー@サーバーアドレス
ssh-copy-id が利用できない場合は、id_ed25519.pub (または id_rsa.pub) ファイルの内容をサーバーの ~/.ssh/authorized_keys ファイルに手動で追加します。
パスワード認証を無効にする
/etc/ssh/sshd_config で、次のように設定します。
PasswordAuthenticationいいえ
SSH サービスを再起動します。
sudo systemctl 再起動 ssh
デジタル証明書を管理するのと同じように、SSH キーベースの認証により、正しい秘密キーを持つユーザーだけが接続を確立できるようになります。
2. ルートログインを無効にする
それは何ですか:
root ユーザーが SSH 経由で直接ログインできないようにします。
より安全な理由:
- ルートアカウントは無制限の権限を持ち、攻撃者にとって魅力的なターゲットとなる。
- 直接ルートアクセスを無効にすると、攻撃者はキーやパスワードだけでなく、有効なユーザー名も推測することになります。
実装方法:
/etc/ssh/sshd_config で、以下を見つけるか追加します。
PermitRootLoginいいえ
SSHを再起動します:
sudo systemctl 再起動 ssh
この手順により、最も強力なアカウントが簡単にアクセスできないようにすることで、攻撃対象領域が効果的に狭まります。
3. 強力な暗号化とMACアルゴリズムの適用
それは何ですか:
SSH を使用すると、データの暗号化とデータの整合性の検証に使用する暗号とメッセージ認証コード (MAC) を指定できます。
より安全な理由:
- 古いアルゴリズムや弱いアルゴリズム(DES、RC4など)は暗号攻撃に対して脆弱である可能性がある
- 最新の暗号(AES-256など)と強力なMAC(HMAC-SHA2など)を使用すると、セッションデータの機密性が保たれ、改ざんが防止されます。
実装方法:
/etc/ssh/sshd_config で、暗号/MAC リストを追加または更新します。
暗号 aes256-ctr、aes192-ctr、aes128-ctr
MAC hmac-sha2-256、hmac-sha2-512
SSHを再起動します:
sudo systemctl 再起動 ssh
SSHの暗号化を最新の状態に保つことは、安全なプロトコルと暗号が使用されていることを確認するのと同じくらい重要です。 TLS.
4. SSH(およびシステム)を最新の状態に保つ
それは何ですか:
OpenSSH がオペレーティング システムの他の部分と同様に定期的にセキュリティ パッチを受け取るようにします。
より安全な理由:
- 古いソフトウェアには既知の脆弱性が含まれていることが多い
- 攻撃者は、パッチが適用されていない脆弱性のある古いバージョンを標的にすることが多い
実装方法:
Debian または Ubuntu ベースのシステムの場合:
sudo apt-get アップデート && sudo apt-get upgrade
CentOS、Fedora、または RHEL ベースのシステムの場合:
sudo yumのアップデート
ネットワーク アプライアンスやその他のハードウェアで SSH を実行している場合は、ファームウェアの更新も必ず確認してください。
5. 2要素認証または多要素認証(XNUMXFA/MFA)を実装する
それは何ですか:
パスワードやキーに加えて何か(携帯電話のワンタイムコードなど)を要求することで、セキュリティをさらに強化します。
より安全な理由:
- 攻撃者がSSHキーを入手したとしても、ログインするには2番目の要素が必要です。
- 資格情報の盗難を防ぐのに役立ちます
実装方法:
MFAツールのインストールと設定
たとえば、 Linux サーバーにインストールして、PAM (Pluggable Authentication Modules) モジュールとして設定できます。ディストリビューション固有のインストール手順に従ってください。
/etc/pam.d/sshdと/etc/ssh/sshd_configを編集します。
- Google Authenticatorまたは別のMFAモジュールを有効にする
- ChallengeResponseAuthentication を yes に設定し、AuthenticationMethods を publickey、keyboard-interactive (または環境に適した組み合わせ) に設定します。
SSHを再起動します:
sudo systemctl 再起動 ssh
6. ログと監視を有効にする
それは何ですか:
SSH ログイン イベントをキャプチャし、疑わしいアクティビティを追跡し、何か問題が発生したときにアラートを受信します。
より安全な理由:
- 侵入の試みは、多くの場合、ログインの繰り返しの失敗や不正なアクションとしてログに表示されます。
- 早期検出により、被害が発生する前にIPをブロックしたり構成を変更したりして、迅速に対応できます。
実装方法:
ログの詳細度を上げる
/etc/ssh/sshd_config で、次のように設定します。
ログレベル VERBOSE
ログの集計
- のようなツール syslog, rsyslogまたは syslog-of ログの収集と一元管理を支援する
- A SIEM(セキュリティ情報およびイベント管理)ソリューション 高度な分析とアラート機能を提供できます
侵入防止ツールを使用する
fail2ban ログ ファイルをスキャンし、パスワードの失敗が多すぎるなど、悪意のある兆候を示す IP を禁止します。
7. アクセス制御と制限を実装する
それは何ですか:
SSH に接続できるユーザーと接続元を制限し、不正な要求や過剰な受信要求を防止します。
方法:
ファイアウォールの制限
既知または信頼できる IP アドレスからの SSH のみを許可します。たとえば、ufw を使用する Linux の場合:
sudo ufw 許可 192.168.1.0/24 から任意のポートへ 22
ポート構成
SSH を非標準ポート (例: 2222) で実行すると、自動スキャンの試行を減らすことができます。実際のセキュリティ対策に代わるものではありませんが、ノイズを減らすことができます。
ユーザー/グループの制限
/etc/ssh/sshd_config で以下を指定します。
AllowUsers アリス ボブ
or
AllowGroups sshadmins
8. SSHキーのパスフレーズと安全なキーストレージを使用する
それは何ですか:
パスフレーズを使用して秘密鍵を暗号化すると、マシンが侵害された場合でも、鍵自体はすぐには使用できなくなります。
より安全な理由:
- パスフレーズのない盗まれたキーファイルは即座にアクセスを許可できる
- パスフレーズはローカルキーの暗号化の追加レイヤーとして機能します
実装方法:
キー生成中にパスフレーズを設定する
ssh-keygen -t ed25519
(パスフレーズの入力を求められます。)
重要なファイルを保護する
.ssh フォルダーとキー ファイルへのアクセス許可を制限します。
chmod 700 ~ / .ssh
chmod 600 〜/ .ssh / id_ed25519
ハードウェアセキュリティモジュール(HSM)またはトークンを検討する
大規模な組織では、キーの保存に専用のハードウェアを使用すると、ソフトウェアベースの盗難やマルウェアのリスクを軽減できます。
まとめ
SSH セキュリティは、保護のレイヤーに集約されます。キーベースの認証を実装し、直接ルート アクセスを無効にし、強力な暗号化を使用し、最新の状態を維持し、多要素認証を要求し、ログを監視し、アクセスを制限し、パスフレーズでキーを保護することで、最も一般的な (そして最も深刻な) リスクをカバーできます。
これらの対策は、SSL.com がデジタル証明書に対して提唱している、より広範なセキュリティ哲学と一致しています。つまり、暗号化キーを保護し、強力な暗号化を使用し、特権アクセスを制限し、システムを注意深く監視することです。これらの基本的なベスト プラクティスを確立したら、SSH 証明機関、ポート ノッキング、VPN 経由の SSH の実行など、より高度なオプションを検討して、セキュリティ体制をさらに調整できます。