В чем разница между `ssh -Y` (надежная пересылка X11) и` ssh -X` (ненадежная пересылка X11)?

В чем разница между ssh -Y (доверенная пересылка X11) и ssh -X (ненадежная пересылка X11)? Насколько я понял, это как-то связано с безопасностью, но я не понял разницу и когда использовать какой.

107
задан 16.04.2020, 03:01

3 ответа

Опция -X включает пересылку X11:

-X   Enables X11 forwarding.  This can also be specified on a per-host
     basis in a configuration file.

     X11 forwarding should be enabled with caution.  Users with the
     ability to bypass file permissions on the remote host (for the
     user's X authorization database) can access the local X11 display
     through the forwarded connection.  An attacker may then be able
     to perform activities such as keystroke monitoring.

     For this reason, X11 forwarding is subjected to X11 SECURITY
     extension restrictions by default.  Please refer to the ssh -Y
     option and the ForwardX11Trusted directive in ssh_config(5) for
     more information.

Опция -Y, соответствующая директиве ForwardX11Trusted в ssh_config (5), еще менее безопасна, поскольку удаляет элементы управления расширением X11 SECURITY. .

-Y      Enables trusted X11 forwarding.  Trusted X11 forwardings are not
        subjected to the X11 SECURITY extension controls.

Более безопасно использовать -x

-x   Disables X11 forwarding.
0
ответ дан 16.04.2020, 03:02

Не используйте и , когда вам не нужно удаленно запускать программы X11; используйте -X, когда вы делаете; и гипотетически используйте -Y, если программа X11, о которой вы заботитесь, работает лучше с -Y, чем с -X. Но в настоящее время (Ubuntu 15.10) -X идентичен -Y, если вы не отредактируете ssh_config, чтобы сказать ForwardX11Trusted no. Изначально -X предназначался для включения расширения X Security 1990-х годов, но оно старое и негибкое, приводит к сбою некоторых программ и поэтому игнорируется по умолчанию.

Как ssh -Y, так и -X позволяют запускать программу X11 на удаленной машине, а ее окна появляются на локальном мониторе X. Вопрос заключается в том, что программе разрешено делать с окнами других программ и с самим X-сервером.

local$ ssh -X remote
remote$ xlogo
# Runs xlogo on remote, but the logo pops up on the local screen.

Доверенная пересылка X11 включена с помощью -Y. Это историческое поведение. Программе, имеющей доступ к дисплею, доверяют доступ к целому дисплею . Он может делать снимки экрана, вести журнал и вводить данные во все окна других программ. И он может использовать все расширения X-сервера, включая такие, как ускоренная графика, которые представляют угрозу безопасности. Что хорошо для бесперебойной работы, но плохо для безопасности. Вы доверяете удаленным программам так же безопасно, как и вашим локальным программам.

Ненадежная пересылка X11 пытается ограничить удаленные программы доступом только к своим собственным окнам и использованием только тех частей X, которые относительно безопасны. Это звучит хорошо, но в настоящее время не работает на практике.

Значение -X в настоящее время зависит от вашей конфигурации ssh.

В Ubuntu 14.04 LTS, если вы не редактируете ssh_config, между -X и -Y нет никакой разницы. «[B] вызывает слишком много программ, которые в настоящее время аварийно завершают работу в [ненадежном] режиме».

ubuntu1404$ man ssh
...
 -X      Enables X11 forwarding.  This can also be specified on a per-host
         basis in a configuration file.
         ...
         (Debian-specific: X11 forwarding is not subjected to X11 SECURITY
         extension restrictions by default, because too many programs cur‐
         rently crash in this mode.  Set the ForwardX11Trusted option to
         “no” to restore the upstream behavior.  This may change in
         future depending on client-side improvements.)

ubuntu1404$ grep ForwardX11Trusted /etc/ssh/ssh_config
#   ForwardX11Trusted yes

Если ForwardX11Trusted no, то -X разрешает переадресацию . В противном случае -X обрабатывается так же, как -Y, полагая, что удаленные программы с доступом к дисплею дружественны.

0
ответ дан 16.04.2020, 03:03

Оба варианта имеют отношение к пересылке X11. Это означает, что если вы включите эту функцию, вы сможете использовать графический клиент через сеанс SSH (то есть использовать Firefox или что-то еще).

Если вы используете ssh -X remotemachine, удаленный компьютер будет считаться ненадежным клиентом. Таким образом, ваш локальный клиент отправляет команду на удаленный компьютер и получает графический вывод. Если ваша команда нарушает некоторые настройки безопасности, вы получите сообщение об ошибке.

Но если вы используете ssh -Y remotemachine, удаленный компьютер будет считаться доверенным клиентом. Этот последний вариант может открыть проблемы безопасности. Потому что другой графический (X11) клиент может прослушивать данные с удаленного компьютера (делать снимки экрана, делать кейлогинг и другие неприятные вещи), и даже можно изменить эти данные.

Если вы хотите узнать больше об этих вещах, я предлагаю прочитать справочную страницу Xsecurity или спецификацию расширения X Security . Кроме того, вы можете проверить опции ForwardX11 и ForwardX11Trusted в /etc/ssh/ssh_config.

0
ответ дан 16.04.2020, 03:03
  • 1
    Ответ на " Почему использование-Y вместо-X? " вопрос,-X отбрасывает передачу после тайм-аута в то время как-Y doesn' t. Можно переопределить ту конфигурацию с помощью ForwardX11Timeout для-X опции, все же. – David 16.04.2020, 03:03
  • 2
    Так, с -X для других клиентов действительно ли невозможно осуществить сниффинг или изменить данные? – diosney 16.04.2020, 03:04
  • 3
    Итак, почему можно было бы хотеть использовать -Y вместо -X в целом? – Jason Sebring 16.04.2020, 03:04
  • 4
    ssh страница справочника использует неудачную формулировку, предлагая (по крайней мере, мне), что-X небезопасен использовать, и-Y лучше. Так спасибо за этот ответ. – Jed Watson 16.04.2020, 03:04
  • 5
    Обе ссылки 404 теперь, к сожалению. Сайт, кажется, мертв с 2014. – diosney 16.04.2020, 03:05

Теги

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