Различия между версиями 17 и 18
Версия 17 от 2008-08-04 16:02:46
Размер: 9557
Редактор: DmitryChistikov
Комментарий: Передаю дальше
Версия 18 от 2008-08-06 01:12:09
Размер: 10176
Редактор: MaximByshevskiKonopko
Комментарий: Mithgolization, fixes.
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Установим пакет stunnel командой `apt-get install stunnel`. Для этого, возможно, придется подключить дополнительные репозитории: stunnel не входит в состав ALT Linux Lite, но есть среди пакетов School Branch. Рассмотрим соответствующую программу "поближе". Stunnel, как указано в документации (man stunnel), может служить как клиентом, так и сервером при организации защищенного с помощью SSL туннеля. Отметим, что различные примеры использования stunnel можно найти на сайте [[http://www.stunnel.org/]]. Установим пакет stunnel командой `apt-get install stunnel`. Для этого, возможно, придется подключить дополнительные репозитории: stunnel не входит в состав ALT Linux Lite, но есть среди пакетов School Branch. Рассмотрим соответствующую программу "поближе". Stunnel, как указано в документации (man stunnel), может служить как клиентом, так и сервером при организации защищенного с помощью SSL туннеля. Отметим, что различные примеры использования stunnel можно найти на [[http://www.stunnel.org/ | сайте ]].
Строка 5: Строка 5:
Первый способ использования stunnel --- это запуск с клиентской машины для организации доступа к серверу, который принимает защищенные с помощью SSL подключения. Stunnel прокидывает к серверу туннель и открывает на клиентской машине специальный порт, к которому можно подключаться без SSL. Подключения будут автоматически защищаться SSL и пробрасываться на сервер. Вся работа с SSL при такой схеме осуществляется самой программой stunnel. Первый способ использования stunnel --- это запуск с клиентской машины для организации доступа к серверу, который принимает защищённые с помощью SSL подключения (например, некоторый клиент не умеет соединяться по SSL, а по тем или иным причинам необходимо использовать именно его). stunnel создаёт SSL-соединение с заданным сервером и открывает на клиентской машине специальный порт, к которому можно подключаться без SSL. При этом любые данные, отправленные по локальному соединению с созданным stunnel портом будут прозрачно для пользователя проходить на сервер через защищённое соединение. Вся работа с SSL при такой схеме осуществляется самой программой stunnel.
Строка 7: Строка 7:
Второй способ использования stunnel состоит в организации защиты для не умеющего использовать SSL сервера (примерами могут служить pppd и imapd). Схема работы в таком случае напоминает использование xinetd: stunnel создает SSL-прослойку и принимает входящие (защищенные) соединения, выступая, таким образом, в роли фильтра. Второй способ использования stunnel состоит в организации защиты для не умеющего использовать SSL сервера (примерами могут служить pppd и imapd). stunnel в таком случае работает подобно простым сервисам, которые можно описать средствами xinetd, то есть, пропускает через себя данные опекаемого им демона как фильтр командной строки.
Строка 9: Строка 9:
Проиллюстрируем первый способ использования Stunnel. Посмотрим на сайт [[https://webmail.cs.msu.su/]] --- web-интерфейс почтового сервера факультета ВМК МГУ. При подключении браузер обратит наше внимание на то, что соединение защищено с помощью SSL. Адресная строка при этом получит желтый фон: Проиллюстрируем первый способ использования stunnel. Посмотрим на сайт [[https://webmail.cs.msu.su/]] --- web-интерфейс почтового сервера факультета ВМК МГУ. При подключении браузер обратит наше внимание на то, что соединение защищено с помощью SSL (в браузере Firefox, который входит в ПСПО, в адресной строке изменяется фон и появляется специальный значок):
Строка 23: Строка 23:
 * -d --- работа в режиме демона и прием соединений на указанный порт;  * -d --- работа в режиме демона и приём соединений на указанный порт;
Строка 26: Строка 26:
Пусть PID-файл хранится в нашем домашнем каталоге ~. Подключаться мы будем к машине webmail.cs.msu.su по порту https --- он имеет номер 443 (информация об этом хранится в файле /etc/services). В качестве локального порта укажем 8088: стандартный порт http (80) может быть занят обычным web-сервером, а порт 8080 в нашем случае используется web-интерфейсом конфигуратора Alterator. Пусть PID-файл хранится в нашем домашнем каталоге ~. Подключаться мы будем к машине webmail.cs.msu.su по порту https --- он имеет номер 443 (информация об этом хранится в файле `/etc/services`). В качестве локального порта укажем 8088: стандартный порт http (80) может быть занят обычным web-сервером, а порт 8080 в нашем случае используется web-интерфейсом конфигуратора Alterator.
Строка 32: Строка 32:
Поскольку мы указали программе stunnel работать в режиме демона, то перед нами снова окажется приглашение командной строки. Проверим, принимает ли теперь stunnel соединения. Воспользуемся для этого утилитой netstat. Нам понадобится список "слушающих" (ключ -l, listening) TCP-сокетов (ключ -t), причем удобнее использовать числовую форму (ключ -n, numeric) записи портов и Интернет-адресов. Главным для нас будет ключ -p, заставляющий netstat выводить PID и имя "слушающих" программ: Поскольку мы указали программе stunnel работать в режиме демона, то она закроет стандартный поток ввода и перед нами снова окажется приглашение командной строки. Проверим, принимает ли теперь stunnel соединения. Воспользуемся для этого утилитой netstat. Нам понадобится список "слушающих" (ключ -l, listening) TCP-сокетов (ключ -t), причём удобнее использовать числовую форму (ключ -n, numeric) записи портов и Интернет-адресов. Главным для нас будет ключ -p, заставляющий netstat выводить PID и имя "слушающих" программ:
Строка 43: Строка 43:
Если мы теперь попробуем выполнить с помощью браузера подключение по адресу localhost:8088, то увидим обычный, "незащищенный" на первый взгляд сайт: Если мы теперь попробуем выполнить с помощью браузера подключение по адресу localhost:8088, то увидим обычный, "незащищенный" по мнению браузера сайт:
Строка 47: Строка 47:
Зачем может пригодиться такая схема? В результате наших действий незащищенное подключение устанавливается только к локальной машине (localhost). Считается, что подсмотреть трафик в этом случае очень сложно. Те, у кого такая возможность есть, обычно обладают "полноценными" правами суперпользователя на данной машине, а значит, имеют практически неограниченные возможности обхода любой защиты. Если же этот вариант исключить, то останется лишь "подсматривать" внутрь защищенного SSL подключения по сети, что в большинстве случаев совершенно бесполезно. Зачем может пригодиться такая схема? В результате наших действий незащищенное подключение устанавливается только к локальной машине (localhost). Считается, что подсмотреть трафик в этом случае очень сложно. Те, у кого такая возможность есть, обычно обладают "полноценными" правами суперпользователя на данной машине, а значит, имеют практически неограниченные возможности обхода любой защиты. Если же этот вариант исключить, то останется лишь "подсматривать" внутрь защищённого SSL подключения по сети, что в большинстве случаев совершенно бесполезно.
Строка 55: Строка 55:
|| 50 || 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)