Различия между версиями 1 и 20 (по 19 версиям)
Версия 1 от 2008-08-01 03:30:34
Размер: 5576
Редактор: eSyr
Комментарий:
Версия 20 от 2008-10-09 21:54:14
Размер: 10197
Редактор: MaximByshevskiKonopko
Комментарий: No more illustration needed.
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Сегодня всякая сеть. В-первых прдлжение про безпасность, причём практическая. Хотели попробовать stunnel, ssh. Установим пакет stunnel командой `apt-get install stunnel`. Для этого, возможно, придется подключить дополнительные репозитории: stunnel не входит в состав ALT Linux Lite, но есть среди пакетов School Branch. Рассмотрим соответствующую программу "поближе". Stunnel, как указано в документации (man stunnel), может служить как клиентом, так и сервером при организации защищенного с помощью SSL туннеля. Отметим, что различные примеры использования stunnel можно найти на [[http://www.stunnel.org/ | сайте ]].
Строка 5: Строка 5:
Вспомним про stunnel и попробуем его настроить, чтобы показать, каким образм, почему SSL --- протокол 6 уровня ISO/OSI, в любом случае, реализация его полностью оторвана от прикл. уровня, в тличие от TLS? реализация которого встраивается в протокол прикл.ю урвня. Первый способ использования stunnel --- это запуск с клиентской машины для организации доступа к серверу, который принимает защищённые с помощью SSL подключения (например, некоторый клиент не умеет соединяться по SSL, а по тем или иным причинам необходимо использовать именно его). stunnel создаёт SSL-соединение с заданным сервером и открывает на клиентской машине специальный порт, к которому можно подключаться без SSL. При этом любые данные, отправленные по локальному соединению с созданным stunnel портом будут прозрачно для пользователя проходить на сервер через защищённое соединение. Вся работа с SSL при такой схеме осуществляется самой программой stunnel.
Строка 7: Строка 7:
Для начала установим этт пакет. Он не входит в состав ПСПО (входит, взодит), но входит в бранч 4.0. stunnel это программа, котрая может служить и клиентом, и сервером для организации туннеля, защищённого с помощью ssl, между клиентской и серверной машиныю При этом в случае клиентской машины она орг. доступ до https/imaps/..., а со стороны клиента пзв. откр. порт, к кторому мжно подкл. без ssl. Исп. ... сстоит в том, чтобы подклю по ...., а после того, как это подкл. призошло, расшифр. траффик предст. в виде ещё одного сокета на локальной машине, к которому можно подкл, не зная про ssl. Второй способ использования stunnel состоит в организации защиты для не умеющего использовать SSL сервера. stunnel в таком случае работает подобно простым сервисам, которые можно описать средствами xinetd, то есть, пропускает через себя данные опекаемого им демона как фильтр командной строки.
# я что-то не уверен насчёт современного imapd
Строка 9: Строка 10:
В качестве примера рассм. https://webmail.cs.msu.su/, где можно видеть отпечатки пальцев. Кнечно, если есть злоумышленник между вами и сайтом доверенным, т он может сущ. и такую перация: не только подм. сертификаты, но и анализирвать и менять траффик, но вероятность пдбного сильно уменьшается, пскольку злумышленнику надо найти место на сайте, где клю публикован и подменять это место. Проиллюстрируем первый способ использования stunnel. Посмотрим на [[https://webmail.cs.msu.su/ | сайт]] --- web-интерфейс почтового сервера факультета ВМК МГУ. При подключении браузер обратит наше внимание на то, что соединение защищено с помощью SSL (в браузере Firefox, который входит в ПСПО, в адресной строке изменяется фон и появляется специальный значок):
Строка 11: Строка 12:
Почитаем ман по stunnel. Там внизу нарисован второй способ исп. stunnel --- в случае, если сервер не умеет орг. нрм. ssl, а вам хочется шифровать соединение, причём это серверы-фильтры, как в xinetd. И для орг. ssl они вместо xinetd исп. в stunnel. {{attachment:../https_site.png}}
Строка 13: Строка 14:
На stunnel.org есть примеры. Указанные на сайте "отпечатки пальцев" --- это значения двух различных хэш-функций от публичного ключа сервера. Если просмотреть свойства сайта, то среди административных сведений об используемом сертификате мы увидим такие же отпечатки:
Строка 15: Строка 16:
Два параметра: -d, чтобы он рабтал в качестве демна, -r --- к какому порту присоединяться, птом двоеточие, номер порта. Обратите внимание на т, что можно исп. как числовые номера, так и символьные, есть орг. IANA, которая среди прочего регистрирует номера портов, и они хранятся в файле /etc/services {{attachment:../https_site_properties.png}}
Строка 17: Строка 18:
Теперь мы можем зайти на localhost:8088 и увидеть то же самое. Зачем вобще такое нужн? Когда вы заходите на локалхост, считается, что подсмотреть трафик очень сложно, а те, кто могут, имеют рута на машине и тогда уже всё равно. Если такого нету, то есть, подсоединение по сети в защ. режиме может нанести ... . Это совпадение и должно убеждать нас в том, что сайт "подлинный", иными словами --- что "разговаривает" с нами именно webmail.cs.msu.su. Конечно, злоумышленник может встать на пути между нами и доверенным сайтом и выполнить более сложную операцию: подменить не только сертификат, но и значения "отпечатков пальцев" на странице. Вероятность подобного, однако, значительно меньше: необходимо заранее найти место на сайте, где опубликованы соответствующие значения, и в дальнейшем при перехвате соединения фильтровать содержимое http-трафика, подменяя опубликованные "отпечатки" своими.
Строка 19: Строка 20:
Лектор посмотрит, как скрипт генерирует сертификаты, у него есть разные опции, в том числе подписывание, и может быть можно будет запустить его со стороны сервера, чтобы он преобр. 80-й порт в какой ещё. Попробуем использовать stunnel в режиме клиента. Посмотрим для этого в документацию и обратим внимание на следующие параметры:
Строка 21: Строка 22:
На чём часть пр стуннель заканчивается... Лектор исп. stunnel, когда не было у imapd ssl, был с ssl только циррус, а н большой и страшный.  * -P --- каталог для хранения PID-файла;
 * -c --- работа в режиме клиента (первый из описанных нами способов использования);
 * -d --- работа в режиме демона и приём соединений на указанный порт;
 * -r --- адрес и порт сервера.

Пусть PID-файл хранится в нашем домашнем каталоге ~. Подключаться мы будем к машине webmail.cs.msu.su по порту https --- он имеет номер 443 (информация об этом хранится в файле `/etc/services`). В качестве локального порта укажем 8088: стандартный порт http (80) может быть занят обычным web-сервером, а порт 8080 в нашем случае используется web-интерфейсом конфигуратора Alterator.

{{{
$ /usr/sbin/stunnel -P ~ -c -d 8088 -r webmail.cs.msu.su:https
}}}

Поскольку мы указали программе stunnel работать в режиме демона, то она закроет стандартный поток ввода и перед нами снова окажется приглашение командной строки. Проверим, принимает ли теперь stunnel соединения. Воспользуемся для этого утилитой netstat. Нам понадобится список "слушающих" (ключ -l, listening) TCP-сокетов (ключ -t), причём удобнее использовать числовую форму (ключ -n, numeric) записи портов и Интернет-адресов. Главным для нас будет ключ -p, заставляющий netstat выводить PID и имя "слушающих" программ:

{{{
$ netstat -ltnp | grep stunnel
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 4667/stunnel
}}}

Программа grep отфильтровала стандартный вывод netstat, оставив в нем лишь строку, содержащую слово stunnel (первые две строки были выведены в стандартный поток ошибок и поэтому не были отброшены). Как видно, stunnel успешно запустилась и принимает соединения на порту 8088 локальной машины.

Если мы теперь попробуем выполнить с помощью браузера подключение по адресу localhost:8088, то увидим обычный, "незащищенный" по мнению браузера сайт:

{{attachment:../https_site_stunnel.png}}

Зачем может пригодиться такая схема? В результате наших действий незащищенное подключение устанавливается только к локальной машине (localhost). Считается, что подсмотреть трафик в этом случае очень сложно. Те, у кого такая возможность есть, обычно обладают "полноценными" правами суперпользователя на данной машине, а значит, имеют практически неограниченные возможности обхода любой защиты. Если же этот вариант исключить, то останется лишь "подсматривать" внутрь защищённого SSL подключения по сети, что в большинстве случаев совершенно бесполезно.
Строка 29: Строка 56:
|| 0  || 1 || 1 || 1 || || 1 || SergeyKorobkov, DmitryChistikov, MaximByshevskiKonopko || || || || 90 || 1 || 1 || 1 || || 1 || SergeyKorobkov, DmitryChistikov, MaximByshevskiKonopko || || ||

Практика использования stunnel

Установим пакет stunnel командой apt-get install stunnel. Для этого, возможно, придется подключить дополнительные репозитории: stunnel не входит в состав ALT Linux Lite, но есть среди пакетов School Branch. Рассмотрим соответствующую программу "поближе". Stunnel, как указано в документации (man stunnel), может служить как клиентом, так и сервером при организации защищенного с помощью SSL туннеля. Отметим, что различные примеры использования stunnel можно найти на сайте.

Первый способ использования stunnel --- это запуск с клиентской машины для организации доступа к серверу, который принимает защищённые с помощью SSL подключения (например, некоторый клиент не умеет соединяться по SSL, а по тем или иным причинам необходимо использовать именно его). stunnel создаёт SSL-соединение с заданным сервером и открывает на клиентской машине специальный порт, к которому можно подключаться без SSL. При этом любые данные, отправленные по локальному соединению с созданным stunnel портом будут прозрачно для пользователя проходить на сервер через защищённое соединение. Вся работа с SSL при такой схеме осуществляется самой программой stunnel.

Второй способ использования stunnel состоит в организации защиты для не умеющего использовать SSL сервера. stunnel в таком случае работает подобно простым сервисам, которые можно описать средствами xinetd, то есть, пропускает через себя данные опекаемого им демона как фильтр командной строки. # я что-то не уверен насчёт современного imapd

Проиллюстрируем первый способ использования stunnel. Посмотрим на сайт --- web-интерфейс почтового сервера факультета ВМК МГУ. При подключении браузер обратит наше внимание на то, что соединение защищено с помощью SSL (в браузере Firefox, который входит в ПСПО, в адресной строке изменяется фон и появляется специальный значок):

../https_site.png

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

../https_site_properties.png

Это совпадение и должно убеждать нас в том, что сайт "подлинный", иными словами --- что "разговаривает" с нами именно webmail.cs.msu.su. Конечно, злоумышленник может встать на пути между нами и доверенным сайтом и выполнить более сложную операцию: подменить не только сертификат, но и значения "отпечатков пальцев" на странице. Вероятность подобного, однако, значительно меньше: необходимо заранее найти место на сайте, где опубликованы соответствующие значения, и в дальнейшем при перехвате соединения фильтровать содержимое http-трафика, подменяя опубликованные "отпечатки" своими.

Попробуем использовать stunnel в режиме клиента. Посмотрим для этого в документацию и обратим внимание на следующие параметры:

  • -P --- каталог для хранения PID-файла;
  • -c --- работа в режиме клиента (первый из описанных нами способов использования);
  • -d --- работа в режиме демона и приём соединений на указанный порт;
  • -r --- адрес и порт сервера.

Пусть PID-файл хранится в нашем домашнем каталоге ~. Подключаться мы будем к машине webmail.cs.msu.su по порту https --- он имеет номер 443 (информация об этом хранится в файле /etc/services). В качестве локального порта укажем 8088: стандартный порт http (80) может быть занят обычным web-сервером, а порт 8080 в нашем случае используется web-интерфейсом конфигуратора Alterator.

$ /usr/sbin/stunnel -P ~ -c -d 8088 -r webmail.cs.msu.su:https

Поскольку мы указали программе stunnel работать в режиме демона, то она закроет стандартный поток ввода и перед нами снова окажется приглашение командной строки. Проверим, принимает ли теперь stunnel соединения. Воспользуемся для этого утилитой netstat. Нам понадобится список "слушающих" (ключ -l, listening) TCP-сокетов (ключ -t), причём удобнее использовать числовую форму (ключ -n, numeric) записи портов и Интернет-адресов. Главным для нас будет ключ -p, заставляющий netstat выводить PID и имя "слушающих" программ:

$ netstat -ltnp | grep stunnel
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp     0    0 0.0.0.0:8088     0.0.0.0:*         LISTEN       4667/stunnel

Программа grep отфильтровала стандартный вывод netstat, оставив в нем лишь строку, содержащую слово stunnel (первые две строки были выведены в стандартный поток ошибок и поэтому не были отброшены). Как видно, stunnel успешно запустилась и принимает соединения на порту 8088 локальной машины.

Если мы теперь попробуем выполнить с помощью браузера подключение по адресу localhost:8088, то увидим обычный, "незащищенный" по мнению браузера сайт:

../https_site_stunnel.png

Зачем может пригодиться такая схема? В результате наших действий незащищенное подключение устанавливается только к локальной машине (localhost). Считается, что подсмотреть трафик в этом случае очень сложно. Те, у кого такая возможность есть, обычно обладают "полноценными" правами суперпользователя на данной машине, а значит, имеют практически неограниченные возможности обхода любой защиты. Если же этот вариант исключить, то останется лишь "подсматривать" внутрь защищённого SSL подключения по сети, что в большинстве случаев совершенно бесполезно.


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

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

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

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

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

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

Level

Maintainer

Start date

End date

90

1

1

1

1

SergeyKorobkov, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080730/01Stunnel (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:54:14)