Различия между версиями 6 и 9 (по 3 версиям)
Версия 6 от 2008-08-02 05:18:33
Размер: 8132
Редактор: ArtemSerebriyskiy
Комментарий:
Версия 9 от 2008-08-09 22:15:45
Размер: 7757
Редактор: MaximByshevskiKonopko
Комментарий: Mithgolization, fixes.
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Протокол  X11 не считается надежным сетевым протоколом. Алгоритм шифрования там следующий: вырабатывается некий ключик для сеанса, этим ключиком сервер и терминал обмениваются и для обеспечения связи используется именно этот ключик. Гарантии,
что этот ключ нельзя вычислить\перехватить нет. 
Протокол X11 не считается надежным сетевым протоколом. Алгоритм шифрования там следующий: вырабатывается ключ для сеанса, этим ключом сервер и терминал обмениваются и для обеспечения связи используется именно этот ключ. Гарантии, что этот ключ нельзя вычислить или перехватить, нет.
Строка 6: Строка 5:

Соответственно, мы знаем, что в переменной DISPLAY хранится адрес сервера, и вы можете запустить приложение на удаленной машине - грубо говоря на на сервере приложений, а X-сервер на вашей локальной машине будет отрисовывать. Вы всегда можете это сделать, за исключением ПСПО, где X-сервер запускается с ключом --no-listen-tcp(за исключением АлтЛинукс Терминал).  Кроме того, совершенно необязательно   проводить подключение на порты протокола x11, а можно воспользоваться ssh, тем более что между вами и удаленной машинойvможет находиться фаерволл, который не допускает таких подключений А так, если к машине вы можете подключиться по ssh, то вы можете запустить удаленное приложение, с тем чтобы вывести результаты на ван X-сервер. Делается это с помощью ключа команды ssh '-Y'. Есть также похожий по действию ключ '-X' но он не позволяет  делать многие вещи, которые считаются не безопасными.
Соответственно, мы знаем, что в переменной DISPLAY хранится адрес сервера, и вы можете запустить приложение на удаленной машине - грубо говоря, на сервере приложений, а X-сервер на вашей локальной машине будет отрисовывать. Вы всегда можете это настроить, но по умолчанию в ПСПО X-сервер запускается с ключом --no-listen-tcp (за исключением Линукс Терминал), и соединения с удалённого компьютера невозможны. Однако совершенно необязательно проводить подключение по протоколу x11, а можно воспользоваться более надежным протоколом ssh. Если к удалённой машине можно подключиться по ssh, то можно также запустить удалённое графическое приложение так, что результаты будут выводиться на локальный X-сервер. Делается это с помощью ключа команды ssh '-Y'. Есть также похожий по действию ключ '-X' но он не позволяет делать многие вещи, которые считаются небезопасными.
Строка 13: Строка 11:
Как это устроено: посмотрим содержимое $DISPLAY на локальной машине. Посмотрим содержимое $DISPLAY на локальной машине.
Строка 16: Строка 14:
:0.0  :0.0
Строка 18: Строка 16:
Эта надписи буквально означает следующие: часть до двоеточия означает адрес машины. Если там ничего не указанно то используется значение по умолчанию --- unix domain socket, часть до точки --- номер X-сервера, после точки --- номер экрана, например, в случае многоголовой видеокарты. Если вписать адрес хоста и на этом хосте не запрещены подобные соединения(как в большинстве АльтЛинуксов), то можно попробовать получить доступ к этому хосту, хотя на нем предварительно пользователю надо дополнительно разрешить такие манипуляции. Совершим ssh -Y на другую машину и посмотрим содержимое переменной : Это значение означает следующее: часть до двоеточия означает адрес машины. Если там ничего не указанно то используется значение по умолчанию --- unix domain socket на локальном компьютере. Часть до точки --- номер X-сервера, после точки --- номер экрана. Если вписать адрес удаленного компьютера и на нем не запрещены соединения по X11, то можно попробовать получить доступ к этому хосту. Совершим ssh -Y на другую машину и посмотрим содержимое переменной:
Строка 23: Строка 21:
Обратите внимание, что в графе адрес стоит адрес - т.е. соединение   будет происходить  через сеть, однако адрес - localhost , то есть слушается он локально. Далее указан 10 сервер и экран 0.  10 сервер  всего лишь ретранслятор, все программы запущенные на этой удаленной машине которые присоединяются к этому X-серверу  по протоколу X11 , на самом деле обрабатываются ssh-демоном, который все эти запросы по защищенному протоколу оттаскивает на ту машину, с которой вы зашли - локальную и отдаёт их , как если бы эта программа была запущенна с этой локальной машины машины. Обратите внимание, что в графе адрес стоит адрес, т.е. соединение будет происходить через сеть, однако этот адрес --- localhost, то есть слушается он локально. Далее указан 10 сервер и экран 0. 10 сервер --- это ретранслятор, все программы, которые присоединяются к этому X-серверу по протоколу X11, на самом деле обрабатываются ssh-демоном, который все эти запросы по защищённому протоколу передает на ту машину, с которой было инициировано соединение по ssh, и на ней выводятся результаты программы.
Строка 27: Строка 25:
Раз уж можно прокидывать иксы, то можно прокидывать любой порт. Фактически, для проброса X11 организовали на удаленной машине демон так, что пакеты которые приходили на порт 6010 (6000+номер X-сервера) передавались на локальную машину и обратно. Точно также мы можем прокинуть подключение к локальному порту на удаленную машину или наоборот - подключение к порту на удаленной машине - к локальной.
Строка 29: Строка 26:
По протоколу ssh можно осуществлять не только соединение для X-сессии, но и вообще пробрасывать любой порт. Фактически, для проброса X11 организовали на удалённой машине демон так, что пакеты которые приходили на порт 6010 (6000+номер X-сервера), передавались на локальную машину и обратно. Точно так же мы можем прокинуть подключение к локальному порту на удаленную машину или наоборот.
Строка 30: Строка 28:
Пара ssh/sshd позволяет  проделать обе эти операции. Сейчас мы попробуем отдать наш  локальный 80 порт на удаленную машину на  порт 8089.
Пара ssh/sshd позволяет проделать эти операции. Сейчас мы попробуем отдать наш локальный 80 порт на удалённую машину на порт 8089.
Строка 37: Строка 34:
Теперь если в браузере на удаленной машине 10.30.4.197 посмотреть localhost:8089 то мы увидим что нас пробрасывает на локальную машину на порт 80, где находится вебсервер.  Теперь если в браузере на удаленной машине 10.30.4.197 посмотреть localhost:8089 то мы увидим что нас пробрасывает на локальную машину на порт 80, где находится вебсервер.
Строка 39: Строка 37:
Однако из-за настроек sshd на удаленной машине она позволяет зайти  на 8089 порт только самой себе. Отвечающая за это опция
Однако из-за настроек sshd на удаленной машине она позволяет зайти на 8089 порт только самой себе. Отвечающая за это опция в файле ssh_config по умолчанию выключена:
Строка 41: Строка 40:
GatewayPorts no //(значение по умолчанию) GatewayPorts no
Строка 45: Строка 44:
Запрещён по ssh по паролю. Было бы очень неправильно давать человеку сначала логиниться обычным пользователем, а затем говорить например su, поскольку опять будет передаваться пароль по сети. Поэтому о считается нормальной практикой давать логин руту по сети по ключу, беспарольно и с хорошей пассфразой. Поскольку в этом случае в логах откладывается чей ключ был использован. Это безопаснее, чем другие схемы.
По умолчанию запрещено входить суперпользователю по ssh по паролю. Было бы очень неправильно давать человеку сначала логиниться обычным пользователем, а затем использовать su, поскольку при пароль суперпользователя будет передан по сети. Поэтому считается нормальной практикой давать возможность логина суперпользователя по сети только по ключу, без пароля и с криптостойкой пассфразой. В этом случае в логах остается запись о том, чей ключ был использован. Это безопаснее, чем другие схемы.
Строка 47: Строка 47:
Строка 54: Строка 53:
|| 20 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || || || 65 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || ||

SSH: forwarding трафика

Протокол X11 не считается надежным сетевым протоколом. Алгоритм шифрования там следующий: вырабатывается ключ для сеанса, этим ключом сервер и терминал обмениваются и для обеспечения связи используется именно этот ключ. Гарантии, что этот ключ нельзя вычислить или перехватить, нет.

Соответственно, мы знаем, что в переменной DISPLAY хранится адрес сервера, и вы можете запустить приложение на удаленной машине - грубо говоря, на сервере приложений, а X-сервер на вашей локальной машине будет отрисовывать. Вы всегда можете это настроить, но по умолчанию в ПСПО X-сервер запускается с ключом --no-listen-tcp (за исключением Линукс Терминал), и соединения с удалённого компьютера невозможны. Однако совершенно необязательно проводить подключение по протоколу x11, а можно воспользоваться более надежным протоколом ssh. Если к удалённой машине можно подключиться по ssh, то можно также запустить удалённое графическое приложение так, что результаты будут выводиться на локальный X-сервер. Делается это с помощью ключа команды ssh '-Y'. Есть также похожий по действию ключ '-X' но он не позволяет делать многие вещи, которые считаются небезопасными.

$ ssh -Y 10.30.5.197

Посмотрим содержимое $DISPLAY на локальной машине.

$ echo $DISPLAY
:0.0

Это значение означает следующее: часть до двоеточия означает адрес машины. Если там ничего не указанно то используется значение по умолчанию --- unix domain socket на локальном компьютере. Часть до точки --- номер X-сервера, после точки --- номер экрана. Если вписать адрес удаленного компьютера и на нем не запрещены соединения по X11, то можно попробовать получить доступ к этому хосту. Совершим ssh -Y на другую машину и посмотрим содержимое переменной:

[saj@localhost ~]$ echo $DISPLAY
localhost:10.0

Обратите внимание, что в графе адрес стоит адрес, т.е. соединение будет происходить через сеть, однако этот адрес --- localhost, то есть слушается он локально. Далее указан 10 сервер и экран 0. 10 сервер --- это ретранслятор, все программы, которые присоединяются к этому X-серверу по протоколу X11, на самом деле обрабатываются ssh-демоном, который все эти запросы по защищённому протоколу передает на ту машину, с которой было инициировано соединение по ssh, и на ней выводятся результаты программы.

Проброс портов

По протоколу ssh можно осуществлять не только соединение для X-сессии, но и вообще пробрасывать любой порт. Фактически, для проброса X11 организовали на удалённой машине демон так, что пакеты которые приходили на порт 6010 (6000+номер X-сервера), передавались на локальную машину и обратно. Точно так же мы можем прокинуть подключение к локальному порту на удаленную машину или наоборот.

Пара ssh/sshd позволяет проделать эти операции. Сейчас мы попробуем отдать наш локальный 80 порт на удалённую машину на порт 8089.

[saj@class305 ~]$ ssh -R 8089:localhost:80 10.30.5.197

Теперь если в браузере на удаленной машине 10.30.4.197 посмотреть localhost:8089 то мы увидим что нас пробрасывает на локальную машину на порт 80, где находится вебсервер.

../ssh_port_forwarding_succeeded.png

Однако из-за настроек sshd на удаленной машине она позволяет зайти на 8089 порт только самой себе. Отвечающая за это опция в файле ssh_config по умолчанию выключена:

GatewayPorts no

Логин суперпользователем

По умолчанию запрещено входить суперпользователю по ssh по паролю. Было бы очень неправильно давать человеку сначала логиниться обычным пользователем, а затем использовать su, поскольку при пароль суперпользователя будет передан по сети. Поэтому считается нормальной практикой давать возможность логина суперпользователя по сети только по ключу, без пароля и с криптостойкой пассфразой. В этом случае в логах остается запись о том, чей ключ был использован. Это безопаснее, чем другие схемы.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

65

1

1

1

1

ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080730/04SshForwarding (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 22:10:45)