SSHがIPアドレスのknown_hostエントリを追加するのはなぜですか?


18

nms.example.orgという名前のホストがあります。私/etc/ssh/ssh_known_hostsには、RSAキーを持つホストのエントリがあります。このエントリ、および他のすべてのエントリは、構成管理システムによって管理されます。

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...

また/etc/ssh/ssh_config、特定のホストのホストキーエイリアスを設定するためのエントリがあります。私がすべてを正しく理解していれば、これはnms.example.org重要なことだけを意味します。

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org

クライアントから接続するときに、sshがホストのIPを使用してユーザーごとのknown_hostsにキーを追加する必要があると考えるのはなぜですか?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...

SSHは私のホストが有効であることを知っています(参照:)。Host 'nms.example.org' is known and matches the RSA host keyなぜIPのキーをユーザープロファイルに追加するのですか?

マシンを再インストールすると、構成管理システムがホストキーの収集とすべてのシステムへの配布をうまく処理するため、これは非常にいらいらします。ただし、これらは、使用ごとに既知のホストファイルのIPに関連付けられた競合するキーが残り、スクリプトが接続できなくなる接続試行時に警告が発生します。

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?

sshが各ユーザーknown_hostsにこのIPごとの値をキャッシュしないようにするにはどうすればよいですか?それとも、この迷惑な振る舞いと一緒に生きなければならないセキュリティ上の理由がありますか?また、いくつかのサーバーがやや動的なIPアドレスを持っているため、これは私にとっても不満です。私の構成管理はDNS更新を処理します。しかし、これらのIPホストごとのキーが残り、ユーザーごとのknown_hostファイルがいっぱいになります。

回答:


22

CheckHostIP作品を作ることだと思います。

このフラグが「yes」に設定されている場合、ssh(1)はさらにknown_hostsファイル内のホストIPアドレスをチェックします。これにより、sshはDNSスプーフィングによりホストキーが変更されたかどうかを検出できます。オプションが「no」に設定されている場合、チェックは実行されません。デフォルトは「yes」です。

このオプションを使用すると、構成の誤りや攻撃が発生した場合にわずかに優れた診断結果が得られますが、実際に考えてもセキュリティが向上するわけではありません。

オフにCheckHostIPすると、名前で新しいホストに接続するときにSSH(OpenSSH 6.7p1の時点)はIPアドレスを記録しません。これをあなたのに追加してください.ssh/config

CheckHostIP no

Host特定のホスト(特に動的IPアドレスを持つホスト)に対してのみ無効にする場合は、セクションに追加できます。


うん、これは私が必要な設定です。
ゾレダチェ

私はあなたが@Gillesを言ったすべてに同意する一方で、技術的に私は(良い議論のために)と言うでしょうCheckHostIP yes 、ユーザがそれをやっている正確に何を知っている場合、システムはこのパラメータをどのように使用するか、...セキュリティを向上させ、暗黙の信頼の概念。だから、私は本当に毛を分割するだろう、私はしないだろう...私はセキュリティseのためにそれを保存します;)
0xSheepdog
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.