私はそれが何をするかを知っていますが、whyはわかりません。どのような攻撃を防ぎますか?
あらゆる種類の認証方法に関連していますか? (ホストベース、パスワード、公開鍵、キーボードインタラクティブ...)
UseDNS
オプションはほとんど役に立ちません。クライアントマシンがインターネット上にある場合、リバースDNSがないか、リバースDNSがフォワード解決されないか、DNSが「これに属する」以外の情報を提供しない可能性が高いです。 IPアドレスがすでに教えているISP」。
一般的な構成では、DNSはログ記録にのみ使用されます。認証に使用できますが、IgnoreRhosts no
がsshd_config
で指定されている場合のみです。これは、rshを使用した古いインストールとの互換性のためです。「bob
と呼ばれるマシン上のdarkstar
と呼ばれるユーザーは、資格情報を表示せずにalice
としてログインできます」と言うことができます。 (darkstar bob
に~alice/.rhosts
を書き込むことにより)。 sshサーバーに接続している可能性のあるすべてのマシンを信頼している場合にのみ安全です。言い換えれば、これが安全に使用できることは非常にまれです。
DNSルックアップは、非常に特殊な状況を除いて、有用な情報を提供しないため、オフにする必要があります。私が知る限り、それがデフォルトでオンになっている唯一の理由は、ごく一部の状況にのみ適用されますが、技術的にはより安全であることです(認証ではなく可用性について心配している場合)。
この機能をオフにするもう1つの理由は、すべての余分な機能は不要であるということです セキュリティリスク 。
これについて、Ubuntuのバグレポート(古いが現在も最新)に追加しました。
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
私はデフォルトをNoに変更し、それに新しいドキュメントを追加することを提案しました:
# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS Host names but only IP addresses.
# Value of Yes supports Host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS Host name (or could not be reverse lookup resolved) then a warning is logged.
sshd_config(5)
のマンページから:
UseDNS Specifies whether sshd(8) should look up the remote Host name and
check that the resolved Host name for the remote IP address maps
back to the very same IP address. The default is “yes”.
これを有効にすると、適切な(フォワードおよびリバース)DNSがない場所からのアクセスがログに警告を生成します。
したがって、警告をログに記録しないようにするために、クライアントの修飾されたリモートアドレスが必要になる場合を除いて、攻撃を防ぐことはできません。このような警告は、そのPTRレコードが意味をなす場合にのみ、攻撃者を追跡するのに役立ちます。
編集: Andrey Voitenkov のコメントに従って更新。
これは、authorized_keysファイルでFROMオプションを使用していて、IPだけでなく名前でフィルタリングしたい場合に必要です。
Authorized_keysファイルの行のFROMオプションを使用すると、特定のキーを使用できるホストを制限できます。
これにより、通常は意図せずにマシンのクローンがそのオリジンになりすますことなく、相互にアクセスできる複数のサーバーを管理できるようになります(残ったcrontab、人為的エラー)。
CentOS 7(7.1.1503)、したがってRed Hat Enterprise Linux 7に追加したいのですが、yes
のUseDNS
のデフォルト設定でログインするのはnableでした。コメントを外してno
に設定したところ、ログインできました。このため、DNSが正しく機能していない場合は、実際にサービスが拒否される可能性があります。 CentOS 6では、デフォルトはno
であるため、DNSが機能していなくてもssh
を使用できます。
私の実験はLXCコンテナーで行われたものであり、物理マシンではなかったことを付け加えておきます。