UseDNSОпция в основном бесполезна. Если клиентские машины находятся в Интернете, существует высокая вероятность того, что у них нет обратного DNS, их обратный DNS не разрешается вперед или их DNS не предоставляет никакой информации, кроме «принадлежит этому». Интернет-провайдер », о котором вам уже говорит IP-адрес.
В типичных конфигурациях DNS используется только для регистрации. Может использоваться для аутентификации, но только если IgnoreRhosts noуказано в sshd_config. Это для совместимости со старыми установками, которые использовали rsh, где вы можете сказать, что «пользователь, вызванный bobна вызываемой машине, darkstarможет войти в систему как aliceбез показа учетных данных» (написав darkstar bobв ~alice/.rhosts). Это безопасно, только если вы доверяете всем машинам, которые могут подключаться к серверу ssh. Другими словами, это очень редко используется безопасным способом.
Учитывая, что поиск DNS не предоставляет никакой полезной информации, за исключением очень специфических обстоятельств, ее следует отключить. Насколько я могу судить, единственная причина, по которой он включен по умолчанию, заключается в том, что он технически более безопасен (если вас интересует аутентификация, а не доступность), даже если это применимо только к крошечному набору обстоятельств.
Другим аргументом для отключения этой функции является то, что каждая лишняя функция представляет собой ненужную угрозу безопасности .
Итак, UseDNS имеет отношение только к аутентификации на основе хоста? Если я не использую аутентификацию на основе хоста и мне все равно, будут ли имя хоста или IP отображаться в журналах, UseDNS не имеет значения?
user368507
5
@ user368507 Да, все. UseDNSбесполезно, даже если вы используете аутентификацию хоста на основе ключей , только если вы используете аутентификацию хоста на основе имени хоста (т.е. очень слабая аутентификация).
Жиль "ТАК - перестать быть злым"
3
@ Жиль, конечно, если вы используете аутентификацию на основе ключей и имен хостов, UseDNSэто очень полезно и критично. Вы аутентифицируете пользователя на основе ключа и сервера на основе имени хоста, назначенного MAC-адресу.
Кара Дениз
38
Я добавил в отчет об ошибке (старой, но все еще актуальной) в Ubuntu об этом.
Я предложил изменить значение по умолчанию на Нет и добавить более новую документацию по нему:
# 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.
Up Up UpVote ... это более полезно, потому что он содержит часть информации, которую я искал.
0xC0000022L
1
Аналогично, если UseDNS - нет, имена хостов не могут быть сопоставлены в правилах pam_access, и вместо них должны использоваться IP-адреса.
ColinM
1
Я проголосовал за этот ответ пару лет назад, но только сегодня я заметил, что значение по умолчанию было изменено на «UseDNS no» в OpenSSH 6.8p1, который есть в Ubuntu 15.10 и более поздних версиях .
Энтони Дж. - справедливость для Моники
RedHat (в RHEL7) недавно также изменил значение по умолчанию на «Нет», что нарушает контроль доступа на основе имени хоста (который полезен в основном в качестве консультативного контроля в интрасети, очевидно, не в качестве единственного механизма контроля доступа).
dannysauer
8
Из справочной страницы 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 имеет какой-либо смысл.
редактировать: обновлено в соответствии с комментариями Андрея Войтенкова .
Таким образом, это фильтр того, кому разрешено подключаться на основе того, что есть на DNS-сервере?
user368507
2
Почему это сделает доступ невозможным? sshd просто выдает предупреждение, если записи DNS A / PTR не совпадают. Последовательность входа будет медленной в случае решения проблем.
Андрей Войтенков
Это предотвращает доступ, если авторизованный ключ был скомпрометирован, если злоумышленник не может подделать значения в from=поле перед соответствующим авторизованным ключом (если он используется).
Алек
7
Это необходимо, когда вы используете опцию FROM в файле author_keys и хотите фильтровать по именам, а не только по IP-адресам.
Опция FROM в строке файла author_keys позволяет ограничить хосты, которые могут использовать определенный ключ.
Это увеличивает возможность управления несколькими серверами, которые имеют доступ друг к другу, не позволяя клонам машины выдавать себя за свое происхождение, как правило, непреднамеренно (оставшиеся crontabs, человеческая ошибка).
Я хотел бы добавить, что в CentOS 7 (7.1.1503) и, следовательно, в Red Hat Enterprise Linux 7 я не смог войти в систему с настройкой по умолчанию для yesfor UseDNS. После раскомментирования и установки его noя смог войти в систему. Таким образом, кажется, что действительно может быть отказано в обслуживании, если DNS не работает правильно! В CentOS 6, кажется, по умолчанию, noи, следовательно, я могу sshбез функционирующего DNS!
Я хотел бы добавить, что мои эксперименты были на контейнерах LXC, а не на физической машине, на случай, если что-то изменится!
Ответы:
UseDNS
Опция в основном бесполезна. Если клиентские машины находятся в Интернете, существует высокая вероятность того, что у них нет обратного DNS, их обратный DNS не разрешается вперед или их DNS не предоставляет никакой информации, кроме «принадлежит этому». Интернет-провайдер », о котором вам уже говорит IP-адрес.В типичных конфигурациях DNS используется только для регистрации. Может использоваться для аутентификации, но только если
IgnoreRhosts no
указано вsshd_config
. Это для совместимости со старыми установками, которые использовали rsh, где вы можете сказать, что «пользователь, вызванныйbob
на вызываемой машине,darkstar
может войти в систему какalice
без показа учетных данных» (написавdarkstar bob
в~alice/.rhosts
). Это безопасно, только если вы доверяете всем машинам, которые могут подключаться к серверу ssh. Другими словами, это очень редко используется безопасным способом.Учитывая, что поиск DNS не предоставляет никакой полезной информации, за исключением очень специфических обстоятельств, ее следует отключить. Насколько я могу судить, единственная причина, по которой он включен по умолчанию, заключается в том, что он технически более безопасен (если вас интересует аутентификация, а не доступность), даже если это применимо только к крошечному набору обстоятельств.
Другим аргументом для отключения этой функции является то, что каждая лишняя функция представляет собой ненужную угрозу безопасности .
источник
UseDNS
бесполезно, даже если вы используете аутентификацию хоста на основе ключей , только если вы используете аутентификацию хоста на основе имени хоста (т.е. очень слабая аутентификация).UseDNS
это очень полезно и критично. Вы аутентифицируете пользователя на основе ключа и сервера на основе имени хоста, назначенного MAC-адресу.Я добавил в отчет об ошибке (старой, но все еще актуальной) в Ubuntu об этом.
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
Я предложил изменить значение по умолчанию на Нет и добавить более новую документацию по нему:
источник
Из справочной страницы
sshd_config(5)
:Включение этого делает доступ из местоположения без надлежащего (прямого и обратного) DNS генерирует предупреждение в журналах.
Таким образом, это не предотвращает любую атаку, за исключением того, что для регистрации какого-либо предупреждения ему понадобится определенный удаленный адрес клиента. Такое предупреждение может помочь вам отследить злоумышленника, только если эта запись PTR имеет какой-либо смысл.
редактировать: обновлено в соответствии с комментариями Андрея Войтенкова .
источник
from=
поле перед соответствующим авторизованным ключом (если он используется).Это необходимо, когда вы используете опцию FROM в файле author_keys и хотите фильтровать по именам, а не только по IP-адресам.
Опция FROM в строке файла author_keys позволяет ограничить хосты, которые могут использовать определенный ключ.
Это увеличивает возможность управления несколькими серверами, которые имеют доступ друг к другу, не позволяя клонам машины выдавать себя за свое происхождение, как правило, непреднамеренно (оставшиеся crontabs, человеческая ошибка).
источник
Я хотел бы добавить, что в CentOS 7 (7.1.1503) и, следовательно, в Red Hat Enterprise Linux 7 я не смог войти в систему с настройкой по умолчанию для
yes
forUseDNS
. После раскомментирования и установки егоno
я смог войти в систему. Таким образом, кажется, что действительно может быть отказано в обслуживании, если DNS не работает правильно! В CentOS 6, кажется, по умолчанию,no
и, следовательно, я могуssh
без функционирующего DNS!Я хотел бы добавить, что мои эксперименты были на контейнерах LXC, а не на физической машине, на случай, если что-то изменится!
источник