known_hosts ファイル
known_hosts ファイル とは何ですか?
known_hosts ファイルOpenSSH クライアントの ~/.ssh/known_hosts。サーバの公開鍵を固定し、ホスト鍵の変化を検知して中間者攻撃の兆候を捉えるためのファイル。
known_hosts ファイルは、SSH サーバの身元に対する Trust-On-First-Use(TOFU)モデルを実現します。あるホストへの初回接続時、ユーザは公開鍵のフィンガープリントを検証して受け入れ、OpenSSH はホスト名と鍵を known_hosts(システム全体用に /etc/ssh/ssh_known_hosts も存在)に記録します。次回以降の接続では提示された鍵と記録を比較し、異なる場合は中間者攻撃の可能性を警告して接続を拒否します。既定でホスト名のハッシュ化が有効(HashKnownHosts yes)なので、ファイルが漏洩しても訪問先一覧は分かりません。さらに強固な選択肢として、CA が署名したホスト証明書(TrustedUserCAKeys / @cert-authority)、DNSSEC で署名された DNS SSHFP レコード(RFC 4255)、本番アクセスでは StrictHostKeyChecking=yes による対話プロンプトの拒否があります。
● 例
- 01
known_hosts のホスト鍵と一致しなくなったとき、OpenSSH が 'REMOTE HOST IDENTIFICATION HAS CHANGED!' と警告する。
- 02
@cert-authority エントリを伴う SSH 証明書を利用し、数百台のサーバを known_hosts に個別登録せずに済ませる。
● よくある質問
known_hosts ファイル とは何ですか?
OpenSSH クライアントの ~/.ssh/known_hosts。サーバの公開鍵を固定し、ホスト鍵の変化を検知して中間者攻撃の兆候を捉えるためのファイル。 サイバーセキュリティの ネットワークセキュリティ カテゴリに属します。
known_hosts ファイル とはどういう意味ですか?
OpenSSH クライアントの ~/.ssh/known_hosts。サーバの公開鍵を固定し、ホスト鍵の変化を検知して中間者攻撃の兆候を捉えるためのファイル。
known_hosts ファイル はどのように機能しますか?
known_hosts ファイルは、SSH サーバの身元に対する Trust-On-First-Use(TOFU)モデルを実現します。あるホストへの初回接続時、ユーザは公開鍵のフィンガープリントを検証して受け入れ、OpenSSH はホスト名と鍵を known_hosts(システム全体用に /etc/ssh/ssh_known_hosts も存在)に記録します。次回以降の接続では提示された鍵と記録を比較し、異なる場合は中間者攻撃の可能性を警告して接続を拒否します。既定でホスト名のハッシュ化が有効(HashKnownHosts yes)なので、ファイルが漏洩しても訪問先一覧は分かりません。さらに強固な選択肢として、CA が署名したホスト証明書(TrustedUserCAKeys / @cert-authority)、DNSSEC で署名された DNS SSHFP レコード(RFC 4255)、本番アクセスでは StrictHostKeyChecking=yes による対話プロンプトの拒否があります。
known_hosts ファイル からどのように防御しますか?
known_hosts ファイル に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
known_hosts ファイル の別名は何ですか?
一般的な別名: ~/.ssh/known_hosts, SSH ホスト TOFU。
● 関連用語
- network-security№ 1089
SSH 鍵の種類
OpenSSH がユーザおよびホスト認証で受け付ける非対称鍵アルゴリズム。RSA、ECDSA(NIST 曲線)、現在の推奨デフォルトである Ed25519 が含まれる。
- network-security№ 1088
SSH エージェント転送
OpenSSH の機能で、-A や ForwardAgent yes で有効化すると、リモートホストに UNIX ソケットを公開し、そこからローカルの SSH エージェントを使って次のホストへ認証できる。
- network-security№ 345
DNSSEC
DNS レコードの真正性と完全性をリゾルバが検証できるようにするためにデジタル署名を用いる DNS の拡張仕様群。
- network-security№ 1087
SSH
RFC 4251 で規定されたポート 22 上の暗号化ネットワークプロトコルで、信頼できないネットワーク上でも認証・暗号化・完全性保護されたリモートログイン、コマンド実行、トンネリングを提供する。