Различия между версиями 1 и 18 (по 17 версиям)
Версия 1 от 2008-08-01 03:30:34
Размер: 5576
Редактор: eSyr
Комментарий:
Версия 18 от 2008-08-06 01:12:09
Размер: 10176
Редактор: MaximByshevskiKonopko
Комментарий: Mithgolization, fixes.
Удаления помечены так. Добавления помечены так.
Строка 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 сервера (примерами могут служить pppd и imapd). stunnel в таком случае работает подобно простым сервисам, которые можно описать средствами xinetd, то есть, пропускает через себя данные опекаемого им демона как фильтр командной строки.
Строка 9: Строка 9:
В качестве примера рассм. https://webmail.cs.msu.su/, где можно видеть отпечатки пальцев. Кнечно, если есть злоумышленник между вами и сайтом доверенным, т он может сущ. и такую перация: не только подм. сертификаты, но и анализирвать и менять траффик, но вероятность пдбного сильно уменьшается, пскольку злумышленнику надо найти место на сайте, где клю публикован и подменять это место. Проиллюстрируем первый способ использования stunnel. Посмотрим на сайт [[https://webmail.cs.msu.su/]] --- web-интерфейс почтового сервера факультета ВМК МГУ. При подключении браузер обратит наше внимание на то, что соединение защищено с помощью SSL (в браузере Firefox, который входит в ПСПО, в адресной строке изменяется фон и появляется специальный значок):
Строка 11: Строка 11:
Почитаем ман по stunnel. Там внизу нарисован второй способ исп. stunnel --- в случае, если сервер не умеет орг. нрм. ssl, а вам хочется шифровать соединение, причём это серверы-фильтры, как в xinetd. И для орг. ssl они вместо xinetd исп. в stunnel. {{attachment:../https_site.png}}
Строка 13: Строка 13:
На stunnel.org есть примеры. Указанные на сайте "отпечатки пальцев" --- это значения двух различных хэш-функций от публичного ключа сервера. Если просмотреть свойства сайта, то среди административных сведений об используемом сертификате мы увидим такие же отпечатки:
Строка 15: Строка 15:
Два параметра: -d, чтобы он рабтал в качестве демна, -r --- к какому порту присоединяться, птом двоеточие, номер порта. Обратите внимание на т, что можно исп. как числовые номера, так и символьные, есть орг. IANA, которая среди прочего регистрирует номера портов, и они хранятся в файле /etc/services {{attachment:../https_site_properties.png}}
Строка 17: Строка 17:
Теперь мы можем зайти на localhost:8088 и увидеть то же самое. Зачем вобще такое нужн? Когда вы заходите на локалхост, считается, что подсмотреть трафик очень сложно, а те, кто могут, имеют рута на машине и тогда уже всё равно. Если такого нету, то есть, подсоединение по сети в защ. режиме может нанести ... . Это совпадение и должно убеждать нас в том, что сайт "подлинный", иными словами --- что "разговаривает" с нами именно webmail.cs.msu.su. Конечно, злоумышленник может встать на пути между нами и доверенным сайтом и выполнить более сложную операцию: подменить не только сертификат, но и значения "отпечатков пальцев" на странице. Вероятность подобного, однако, значительно меньше: необходимо заранее найти место на сайте, где опубликованы соответствующие значения, и в дальнейшем при перехвате соединения фильтровать содержимое http-трафика, подменяя опубликованные "отпечатки" своими.
Строка 19: Строка 19:
Лектор посмотрит, как скрипт генерирует сертификаты, у него есть разные опции, в том числе подписывание, и может быть можно будет запустить его со стороны сервера, чтобы он преобр. 80-й порт в какой ещё. Попробуем использовать stunnel в режиме клиента. Посмотрим для этого в документацию и обратим внимание на следующие параметры:
Строка 21: Строка 21:
На чём часть пр стуннель заканчивается... Лектор исп. 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: Строка 55:
|| 0 || 1 || 1 || 1 || || 1 || SergeyKorobkov, DmitryChistikov, MaximByshevskiKonopko || || || || 69 || 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 сервера (примерами могут служить pppd и imapd). stunnel в таком случае работает подобно простым сервисам, которые можно описать средствами xinetd, то есть, пропускает через себя данные опекаемого им демона как фильтр командной строки.

Проиллюстрируем первый способ использования stunnel. Посмотрим на сайт https://webmail.cs.msu.su/ --- 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

69

1

1

1

1

SergeyKorobkov, DmitryChistikov, MaximByshevskiKonopko


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

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