Какой смысл sshd опции “UseDNS”?

С GNU ls (т.е. на Linux, Cygwin или других системах, которые имеют GNU ls конкретно установленный):

ls -v

В zsh:

echo *(n)

В других оболочках:

echo log?.gz log??.gz log???.gz

Замена echo printf '%s\n' если Вы хотите каждое имя файла на отдельной строке.

Если Вы хотите метаданные файла также (ls -l) и у Вас нет GNU ls, необходимо будет звонить ls отдельно для каждого имени файла или группы имен файлов, которые Вы хотите видеть в лексикографическом порядке.

ls -ld log?.gz; ls -ld log??.gz; ls -ld log???.gz

Для предотвращения этих трудностей использование, достаточно продвижения обнуляет в именах файлов так, чтобы лексикографический вид был человечески-благоприятен (log001.gz, и т.д.).

80
03.10.2016, 05:13
5 ответов

UseDNS опция главным образом бесполезна. Если клиентские машины находятся там в Интернете, существует высокий шанс, что у них нет обратного DNS, их обратный DNS не решает вперед, или их DNS не предоставляет информации кроме, “принадлежит этому ISP”, который IP-адрес уже говорит Вам.

В типичных конфигурациях DNS только используется для входа. Это может использоваться для аутентификации, но только если IgnoreRhosts no указан в sshd_config. Это для совместимости со старыми установками, которые использовали rsh, где можно сказать “позвонившего пользователя bob на названной машине darkstar может войти в систему как alice не показывая учетных данных” (путем записи darkstar bob в ~alice/.rhosts). Это только безопасно при доверии всем машинам, которые могут возможно соединяться с ssh сервером. Другими словами, это очень очень редко применимо безопасным способом.

Учитывая, что поиск DNS не предоставляет полезной информации кроме очень специфических обстоятельств, это должно быть выключено. Насколько я могу сказать, единственная причина, она идет по умолчанию, состоит в том, что это технически более безопасно (если Вы обеспокоены аутентификацией, не доступностью), даже при том, что это только относится к крошечному стечению обстоятельств.

Другой аргумент в пользу того, чтобы выключить эту функцию - то, что каждой лишней функцией является ненужная угроза безопасности.

68
27.01.2020, 19:31
  • 1
    Так, UseDNS важен только для hostbased аутентификации? Если я не использую hostbased автора, и я не забочусь, обнаруживаются ли имя хоста или IP в журналах, UseDNS не имеет никакого значения? –  user368507 28.11.2012, 21:24
  • 2
    @user368507 Да, вот именно. UseDNS даже не полезно, если Вы используете основанную на ключе аутентификацию хоста, только если Вы используете основанную на имени хоста аутентификацию хоста (т.е. чрезвычайно слабую аутентификацию). –  Gilles 'SO- stop being evil' 28.11.2012, 21:33
  • 3
    @Gilles, конечно, если Вы используете основанную на ключе и основанную на имени хоста аутентификацию, UseDNS очень полезно, и очень важен. Вы аутентифицируете пользователя на основе ключа и сервер на основе имени хоста, присвоенного MAC-адресу. –  kara deniz 12.05.2016, 22:46

Из страницы справочника 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.

9
27.01.2020, 19:31
  • 1
    Таким образом, это - фильтр на том, кому разрешают соединиться, на основе чего существует в сервере DNS? –  user368507 28.11.2012, 00:31
  • 2
    Почему это сделало бы доступ невозможным? sshd просто генерирует предупреждение, если DNS записи A/PTR не соответствует. Последовательность входа в систему будет медленной в случае разрешения проблем. –  Andrey Voitenkov 28.11.2012, 00:32
  • 3
    Это действительно предотвращает доступ, если авторизованный ключ был поставлен под угрозу, пока взломщик не может имитировать значения в from= поле перед авторизованным рассматриваемым ключом (если используется). –  Alecz 15.11.2017, 17:55

Необходимо, когда Вы используете опцию FROM в authorized_keys файле, и Вы хотите отфильтровать именами и не просто дюйм/с.

Опция FROM в строке authorized_keys файла позволяет Вам ограничивать хосты, которые могут использовать определенный ключ.
Это увеличивает способность управления несколькими серверами, которые имеют доступ друг к другу, не позволяя клонам машины явиться олицетворением, это - источник, обычно неумышленно (остаток crontabs, человеческая ошибка).

7
27.01.2020, 19:31
[1122972]Я добавил об этом в баг-отчёт (старый, но всё ещё актуальный) в Ubuntu. [12135]https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371[12136]Я предложил изменить значение по умолчанию на No и добавить более новую документацию:[12137]
40
27.01.2020, 19:31

Я хотел бы добавить, что на CentOS 7 (7.1.1503) и, следовательно, на Red Hat Enterprise Linux 7 я не мог для входа в систему с настройкой по умолчанию да для UseDNS . Раскомментировав и установив для него значение нет , я смог войти в систему. Таким образом, похоже, что в обслуживании действительно может быть отказано, если DNS работает некорректно! В CentOS 6, похоже, по умолчанию нет , и, следовательно, я могу использовать ssh без работающего DNS!

Я хотел бы добавить, что мои эксперименты проводились с контейнерами LXC, а не на физической машине, на случай, если это имеет значение!

3
27.01.2020, 19:31

Теги

Похожие вопросы