Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2008-08-01 03:36:28
Size: 6655
Editor: eSyr
Comment:
Revision 5 as of 2008-08-02 05:17:38
Size: 8132
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Протокол X11 в смысле секьюрности считается не очень. Соответственно, не факт, что mit magic cookie не будет перехвачен. Соответственно, мы знаем, что в переменнй display хранится адрес сервера, и вы можете запустить прилож. на сервере приложений, а х-сервер локлаьный что-то нарисовал. Вы всегда мжете это сделать, за искл. ПСПО, где х-сервер запускается с no-listen-tcp, чтобы если даже человек по дури ткроет, к нему нельзя было подкл. Кроме того, совершенно необяз. исп. протоколx11, можно восп. секьюр шеллом, тем более что фаерволл может допускать соединение внурь по какому-либо то ни было порту. А так вы мджете запустить уд. приложение, чтобы он вывел его сюда. Делается это с помощью ключа -X, точнее, -Y, поск. -X не пзв. делать некоторые несекьюрные вещи. Протокол X11 не считается надежным сетевым протоколом. Алгоритм шифрования там следующий: вырабатывается некий ключик для сеанса, этим ключиком сервер и терминал обмениваются и для обеспечения связи используется именно этот ключик. Гарантии,
что этот ключ нельзя вычислить\перехватить нет.
Line 5: Line 6:
ssh -X 10.30.5.197
Line 7: Line 7:
Как это устроен: посм. сдержимое $DISPLAY на лок. машине. :0.0 озн. следующие: часть до двоеточия озн. адр. машине. Её отсутствие --- по умолч., по умлч --- unix domain socket, часть до точки --- номер сервера, после точки --- нмер экрана, напримере, в случае многоголовой видеокарты. В этой штуке можно написать вмест ничего адрес хоста, то можно попр. получить доступ к лок. машине, хотя на той стороне его надо разрешить. Совершим ssh -Y и пм. display. бр. внимание, чт в графе адрес стоит адрес (соед. будет происх. через tcp), однако там локалхст, то есть слушается н локально. Далее указан 10 сервер, н он всего лишь ретранслятор, на самом деле это ssh-демон, который все эти запрсы по защищ. протоколу оттаскивает на лок. машину и отдаёт их , как если бы она запущена с лок. машины. Соответственно, мы знаем, что в переменной DISPLAY хранится адрес сервера, и вы можете запустить приложение на удаленной машине - грубо говоря на на сервере приложений, а X-сервер на вашей локальной машине будет отрисовывать. Вы всегда можете это сделать, за исключением ПСПО, где X-сервер запускается с ключом --no-listen-tcp(за исключением АлтЛинукс Терминал). Кроме того, совершенно необязательно проводить подключение на порты протокола x11, а можно воспользоваться ssh, тем более что между вами и удаленной машинойvможет находиться фаерволл, который не допускает таких подключений А так, если к машине вы можете подключиться по ssh, то вы можете запустить удаленное приложение, с тем чтобы вывести результаты на ван X-сервер. Делается это с помощью ключа команды ssh '-Y'. Есть также похожий по действию ключ '-X' но он не позволяет делать многие вещи, которые считаются не безопасными.
Line 9: Line 9:
Собсмтвенно, ничего особенного тут и нету. {{{
$ ssh -Y 10.30.5.197
}}}
##2:10:21
Как это устроено: посмотрим содержимое $DISPLAY на локальной машине.
{{{
$ echo $DISPLAY
:0.0
}}}
Эта надписи буквально означает следующие: часть до двоеточия означает адрес машины. Если там ничего не указанно то используется значение по умолчанию --- unix domain socket, часть до точки --- номер X-сервера, после точки --- номер экрана, например, в случае многоголовой видеокарты. Если вписать адрес хоста и на этом хосте не запрещены подобные соединения(как в большинстве АльтЛинуксов), то можно попробовать получить доступ к этому хосту, хотя на нем предварительно пользователю надо дополнительно разрешить такие манипуляции. Совершим ssh -Y на другую машину и посмотрим содержимое переменной :
{{{
[saj@localhost ~]$ echo $DISPLAY
localhost:10.0
}}}
Обратите внимание, что в графе адрес стоит адрес - т.е. соединение будет происходить через сеть, однако адрес - localhost , то есть слушается он локально. Далее указан 10 сервер и экран 0. 10 сервер всего лишь ретранслятор, все программы запущенные на этой удаленной машине которые присоединяются к этому X-серверу по протоколу X11 , на самом деле обрабатываются ssh-демоном, который все эти запросы по защищенному протоколу оттаскивает на ту машину, с которой вы зашли - локальную и отдаёт их , как если бы эта программа была запущенна с этой локальной машины машины.
##2:14:25
Line 11: Line 26:
Прокидывание портов сквозь ssh. Это такая штука: раз уж можно пркидывать иксы, то можено прокидывать любй прт. Фактически, мы прокинули ... орг. на уд. машине демон 6010-порт, и сделали так, чтобы лок. подклю с лок. машины к 6010 порту приводили к ому, чтобы в рез-те прходил прбрн на лок. машину и чтобы там было подкл. к юних домен сокет. === Проброс портов ===
Раз уж можно прокидывать иксы, то можно прокидывать любой порт. Фактически, для проброса X11 организовали на удаленной машине демон так, что пакеты которые приходили на порт 6010 (6000+номер X-сервера) передавались на локальную машину и обратно. Точно также мы можем прокинуть подключение к локальному порту на удаленную машину или наоборот - подключение к порту на удаленной машине - к локальной.
Line 13: Line 29:
Вот у нас есть ... . Пара ssh/sshd пзв. прделать бе операции: сделать так, чтбы подклю к уд. хосту привдил к подкл. к лок, и наборот. ... Понятно, что нельзя этго делать. Зато есть такая штука, как smtp_auth, которая позв. это сделать. Во-первых, ндао настр. smtp-auth, кроме тго, ндао делать действия на сервере, в-третьих известно, что некторые спамботы умеют его исп. Поэтому smtp есть, н не афиширванный и врде им никто не польз. Есть способ лучше, он недоступен спамботу, и вы его можете орг, если у польз есть ссх. Вы пробрасываете порт, сервер будет думать, что он разг. с лок. машинй, при этм аутентификация п ссх, и так далее. Сейчас мы попр. отдать лок. порт на уд. машину с пртом 8089.
Line 15: Line 30:
(неткат и фуррифокс) Пара ssh/sshd позволяет проделать обе эти операции. Сейчас мы попробуем отдать наш локальный 80 порт на удаленную машину на порт 8089.
Line 17: Line 32:
Чего нам не удалось сделать --- чтобы уд. машина давала куому-то, кроме как локалхсту. Эт настраивается в конфиге sshd. GatewayPorts no (значение по умолчанию).
Line 19: Line 33:
Логин рутом. Запрещён по ссх по паролю. Было бы очень неправильно давать говорить польз. логиниться, а потом говорить su (пск. пять пляски с парлем), поэтому считается нормальной практикой давать логин руту по ключам, и в логе оно откладывается, и ситуации, что неизвестно кто заходил под рутом, мы избегаем, поск. знаем, какой ключ исп. Это безпаснее, чем другие схемы.
{{attachment:../ssh_port_forwarding_succeeded.png}}
Теперь если в браузере на удаленной машине 10.30.4.197 посмотреть localhost:8089 то мы увидим что нас пробрасывает на локальную машину на порт 80, где находится вебсервер.
{{{
[saj@class305 ~]$ ssh -R 8089:localhost:80 10.30.5.197
}}}
Однако из-за настроек sshd на удаленной машине она позволяет зайти на 8089 порт только самой себе. Отвечающая за это опция
{{{
GatewayPorts no //(значение по умолчанию)
}}}

=== Логин суперпользователем ===
Запрещён по ssh по паролю. Было бы очень неправильно давать человеку сначала логиниться обычным пользователем, а затем говорить например su, поскольку опять будет передаваться пароль по сети. Поэтому о считается нормальной практикой давать логин руту по сети по ключу, беспарольно и с хорошей пассфразой. Поскольку в этом случае в логах откладывается чей ключ был использован. Это безопаснее, чем другие схемы.
##2:39:57
Line 27: Line 54:
|| 0 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || || || 20 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko || || ||

SSH: forwarding трафика

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

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

$ ssh -Y 10.30.5.197

Как это устроено: посмотрим содержимое $DISPLAY на локальной машине.

$ echo $DISPLAY
:0.0 

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

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

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

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

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

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

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

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

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

GatewayPorts no //(значение по умолчанию)

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

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


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

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

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

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

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

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

Level

Maintainer

Start date

End date

20

1

1

1

1

ArtemSerebriyskiy, VladimirLysikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080730/04SshForwarding (last edited 2008-10-09 22:10:45 by MaximByshevskiKonopko)