Различия между версиями 1 и 10 (по 9 версиям)
Версия 1 от 2008-08-01 03:36:28
Размер: 6655
Редактор: eSyr
Комментарий:
Версия 10 от 2008-08-09 22:26:31
Размер: 7839
Редактор: MaximByshevskiKonopko
Комментарий: saj@class305 -> user@demo
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Протокол X11 в смысле секьюрности считается не очень. Соответственно, не факт, что mit magic cookie не будет перехвачен. Соответственно, мы знаем, что в переменнй display хранится адрес сервера, и вы можете запустить прилож. на сервере приложений, а х-сервер локлаьный что-то нарисовал. Вы всегда мжете это сделать, за искл. ПСПО, где х-сервер запускается с no-listen-tcp, чтобы если даже человек по дури ткроет, к нему нельзя было подкл. Кроме того, совершенно необяз. исп. протоколx11, можно восп. секьюр шеллом, тем более что фаерволл может допускать соединение внурь по какому-либо то ни было порту. А так вы мджете запустить уд. приложение, чтобы он вывел его сюда. Делается это с помощью ключа -X, точнее, -Y, поск. -X не пзв. делать некоторые несекьюрные вещи. Протокол X11 не считается надежным сетевым протоколом. Алгоритм шифрования там следующий: вырабатывается ключ для сеанса, этим ключом сервер и терминал обмениваются и для обеспечения связи используется именно этот ключ. Гарантии, что этот ключ нельзя вычислить или перехватить, нет.
Строка 5: Строка 5:
ssh -X 10.30.5.197 Соответственно, мы знаем, что в переменной DISPLAY хранится адрес сервера, и вы можете запустить приложение на удаленной машине --- грубо говоря, на сервере приложений, а X-сервер на вашей локальной машине будет отрисовывать. Вы всегда можете это настроить, но по умолчанию в ПСПО X-сервер запускается с ключом `--no-listen-tcp` (за исключением Линукс Терминал), и соединения с удалённого компьютера невозможны. Однако совершенно необязательно проводить подключение по протоколу X11, а можно воспользоваться более надёжным протоколом ssh. Если к удалённой машине можно подключиться по ssh, то можно также запустить удалённое графическое приложение так, что результаты будут выводиться на локальный X-сервер. Делается это с помощью ключа команды `ssh -Y`. Есть также похожий по действию ключ `-X`, но он не позволяет делать многие вещи, которые считаются небезопасными (подробнее о них можно узнать из документации sshd, опция ForwardX11Trusted).
Строка 7: Строка 7:
Как это устроен: посм. сдержимое $DISPLAY на лок. машине. :0.0 озн. следующие: часть до двоеточия озн. адр. машине. Её отсутствие --- по умолч., по умлч --- unix domain socket, часть до точки --- номер сервера, после точки --- нмер экрана, напримере, в случае многоголовой видеокарты. В этой штуке можно написать вмест ничего адрес хоста, то можно попр. получить доступ к лок. машине, хотя на той стороне его надо разрешить. Совершим ssh -Y и пм. display. бр. внимание, чт в графе адрес стоит адрес (соед. будет происх. через tcp), однако там локалхст, то есть слушается н локально. Далее указан 10 сервер, н он всего лишь ретранслятор, на самом деле это ssh-демон, который все эти запрсы по защищ. протоколу оттаскивает на лок. машину и отдаёт их , как если бы она запущена с лок. машины. Посмотрим содержимое $DISPLAY на локальной машине.
{{{
[user@demo ~]$ echo $DISPLAY
:0.0
}}}
Это значение означает следующее: часть до двоеточия --- адрес машины. Если там ничего не указанно то используется значение по умолчанию --- unix domain socket на локальном компьютере. Часть до точки --- номер X-сервера, после точки --- номер экрана. Если вписать адрес удалённого компьютера и на нем не запрещены соединения по X11, то можно попробовать получить доступ к этому хосту. Совершим `ssh -Y` на другую машину и посмотрим содержимое переменной:
{{{
[user@localhost ~]$ echo $DISPLAY
localhost:10.0
}}}
Обратите внимание, что в графе адрес стоит адрес, т.е. соединение будет происходить через сеть, однако этот адрес --- localhost, то есть слушается он локально. Далее указан 10 сервер и экран 0. 10 сервер --- это ретранслятор, все программы, которые присоединяются к этому X-серверу по протоколу X11, на самом деле обрабатываются ssh-демоном, который все эти запросы по защищённому протоколу передает на ту машину, с которой было инициировано соединение по ssh, и на ней выводятся результаты программы.
##2:14:25
Строка 9: Строка 20:
Собсмтвенно, ничего особенного тут и нету. === Проброс портов ===
Строка 11: Строка 22:
Прокидывание портов сквозь ssh. Это такая штука: раз уж можно пркидывать иксы, то можено прокидывать любй прт. Фактически, мы прокинули ... орг. на уд. машине демон 6010-порт, и сделали так, чтобы лок. подклю с лок. машины к 6010 порту приводили к ому, чтобы в рез-те прходил прбрн на лок. машину и чтобы там было подкл. к юних домен сокет. По протоколу ssh можно осуществлять не только соединение для X-сессии, но и вообще пробрасывать любой порт. Фактически, для проброса X11 организовали на удалённой машине демон так, что пакеты, которые приходили на порт 6010 (6000+номер X-сервера), передавались на локальную машину и обратно. Точно так же мы можем прокинуть подключение к локальному порту на удалённую машину или наоборот.
Строка 13: Строка 24:
Вот у нас есть ... . Пара ssh/sshd пзв. прделать бе операции: сделать так, чтбы подклю к уд. хосту привдил к подкл. к лок, и наборот. ... Понятно, что нельзя этго делать. Зато есть такая штука, как smtp_auth, которая позв. это сделать. Во-первых, ндао настр. smtp-auth, кроме тго, ндао делать действия на сервере, в-третьих известно, что некторые спамботы умеют его исп. Поэтому smtp есть, н не афиширванный и врде им никто не польз. Есть способ лучше, он недоступен спамботу, и вы его можете орг, если у польз есть ссх. Вы пробрасываете порт, сервер будет думать, что он разг. с лок. машинй, при этм аутентификация п ссх, и так далее. Сейчас мы попр. отдать лок. порт на уд. машину с пртом 8089. Пара ssh/sshd позволяет проделать эти операции. Сейчас мы попробуем отдать наш локальный 80 порт на удалённую машину на порт 8089.
Строка 15: Строка 26:
(неткат и фуррифокс) {{{
[user@demo ~]$ ssh -R 8089:localhost:80 10.30.5.197
}}}
Строка 17: Строка 30:
Чего нам не удалось сделать --- чтобы уд. машина давала куому-то, кроме как локалхсту. Эт настраивается в конфиге sshd. GatewayPorts no (значение по умолчанию). Теперь если в браузере на удаленной машине 10.30.4.197 посмотреть localhost:8089 то мы увидим что нас пробрасывает на локальную машину на порт 80, где находится вебсервер.
Строка 19: Строка 32:
Логин рутом. Запрещён по ссх по паролю. Было бы очень неправильно давать говорить польз. логиниться, а потом говорить su (пск. пять пляски с парлем), поэтому считается нормальной практикой давать логин руту по ключам, и в логе оно откладывается, и ситуации, что неизвестно кто заходил под рутом, мы избегаем, поск. знаем, какой ключ исп. Это безпаснее, чем другие схемы. {{attachment:../ssh_port_forwarding_succeeded.png}}
Строка 21: Строка 34:
Однако из-за настроек sshd на удаленной машине она позволяет зайти на 8089 порт только самой себе. Отвечающая за это опция в файле ssh_config по умолчанию выключена:
{{{
GatewayPorts no
}}}

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

По умолчанию запрещено входить суперпользователю по ssh по паролю. Было бы очень неправильно давать человеку сначала логиниться обычным пользователем, а затем использовать su, поскольку при пароль суперпользователя будет передан по сети. Поэтому считается нормальной практикой давать возможность логина суперпользователя по сети только по ключу, без пароля и с криптостойкой пассфразой. В этом случае в логах остается запись о том, чей ключ был использован. Это безопаснее, чем другие схемы.
##2:39:57
Строка 27: Строка 49:
|| 0 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || || || 69 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || ||

SSH: forwarding трафика

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

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

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

[user@demo ~]$ echo $DISPLAY
:0.0

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

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

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

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

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

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

[user@demo ~]$ 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

69

1

1

1

1

ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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