Из практики: использование открытых (WiFi) и “чужих” сетей

Обсуждали тут, кто каким образом использует для соединения с Интернетом общедоступные точки доступа WiFi и прочие чужие сети, когда такое использование необходимо (отели, конференции, корпоративные сети, в гостях и так далее, думаю, варианты понятны). Да, немало пользователей вообще не задумываются, просто подключают своё “мобильное оборудование” и – вперёд. Они нормальные люди.

Я, впрочем, использую VPN. Это хорошее со всех сторон решение. Посудите сами, в случае с чужой сетью, можно выделить два разумных “канала утчеки” или “направления атак”, – называйте, как хотите. Первый канал: ваш сетевой трафик, связанный с типичным использованием сервисов Интернета (страницы сайтов, электронная почта и так далее). Второй канал, о котором обычно забывают: DNS – позволяет отправить ваш трафик куда угодно, буквально, куда угодно; чем и пользуются, обычно, правда, в “благих” целях, например, для того, чтобы предложить оплатить доступ. Да, есть HTTPS. Но это, на мой вкус, полумера, к тому же, она не распространяется на DNS.

Технически решение выглядит вполне ожидаемо: виртуальный сервер из Amazon EC2, пакет OpenVPN и BIND, в качестве рекурсивного резолвера на том же сервере. В ноутбуке (на клиентах вообще) – Ubuntu (или другой дистрибутив) и тот же OpenVPN.

Не стану описывать детали настройки, на сайте OpenVPN есть подробное описание и примеры конфигурационных файлов, никаких проблем с тем, чтобы поднять сервер и настроить клиент не возникает. Более того, схема работает даже для клиентских машин под Windows, есть специальная оболочка.

Самый простой вариант настройки VPN это решение типа “точка-точка” с общим секретом (файл с ключом и для сервера, и для клиента). Решение простое, но малоинтересное. Например, потому, что нельзя реализовать одновременное подключение нескольких клиентов к серверу. Поэтому следует использовать вариант с сертификатами SSL. Естественно, покупать какие-то сертификаты для этого не нужно: берём OpenSSL и либо руками, либо при помощи скриптов от OpenVPN, генерируем всё, что нужно. А нужно: сертификат общего удостоверяющего центра, сертификат сервера, сертификаты для всех клиентов.

Другие особенности. Для VPN-сервера нужно взять фиксированный IP-адрес, это позволяет устанавливать соединение, не используя DNS. Я, впрочем, держу А-запись, указывающую на сервер. Так, на всякий случай. В конфигурационных файлах на клиентах, конечно, указан IP-адрес. Кроме того, на клиенте нужно указать и адрес собственного резловера (resolv.conf). Я использую тот же IP – VPN-сервера, потому что всё крутится на нём. На сервере в настройках BIND требуется дополнительно разрешить обработку рекурсивных запросов, приходящих от клиентов OpenVPN. А для того, чтобы трафик ходил наружу, нужно настроить NAT, в моём случае это делается при помощи правил в iptables.

Что мы получаем? Вот что: в результате весь трафик ходит через защищённый канал, который автоматически создаётся при подключении ноутбука к любой внешней сети. Есть потенциальная проблема с фильтрацией пакетов в чужой сети. Поэтому в качестве транспорта для VPN я использую TCP, ходящий на 80-й порт. Такое направление редко где закрыто, потому что, как известно, это HTTP от Веба, а Веб нужен всем. Есть и другие варианты: TCP и 443 (HTTPS) или даже “стандарт” – UDP и 1194, обычно работает.

Да, очевидно, что весь этот безопасный VPN заканчивается у точки выхода, которая, строго говоря, находится где-то внутри инфраструктуры амазоновского хостинга. Менее строго, за точку выхода можно принять “внешний” IP-адрес, выделенный виртуальному серверу. Именно под этим адресом трафик, покидающий VPN, виден другим узлам. То есть, защита заканчивается на сервере. Но такой расклад, на мой взгляд, куда более приемлем, чем вариант с хождением того же трафика в открытом виде через произвольные сети, неизвестно кем администрируемые.

(И, кстати, весь популярный “геотаргетинг” по IP-адресу – ломается. Например, “Яндекс” предлагает мне посмотреть карту Дублина и почитать дублинские новости.)

Адрес записки: https://dxdt.ru/2012/02/22/4571/

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 19

  • 1. 23rd February 2012, 13:15 // Читатель jno написал:

    А почему именно ЕС2?
    Да и static IP – так ли нужен?
    Не хватит ли “белого” адреса с каким-нибудь DynDNS?
    Если совсем доверия нет к среде подключения, то можно ведь срезолвить тот адрес и сторонним сервисом…

  • 2. 23rd February 2012, 13:30 // Читатель AlexeyV написал:

    А зачем скрывать случайному пользователю (вам) какую-то информацию, DNS-запросы, страницы незашифрованные от случайного же провайдера Wi-Fi?
    И чем этот случайный отличается от вашего домашнего, который имеет несоизмеримо больше информации о ваших посещениях всяких интернетов?

  • 3. 23rd February 2012, 20:38 // Александр Венедюхин:

    > А зачем скрывать случайному пользователю (вам)

    Ну, скажем, так спокойнее. Если я “случайный” в “случайной” сети – так вообще ещё лучше.

    > И чем этот случайный отличается от вашего домашнего,

    Ой, кучей особенностей отличается. Своего домашнего – я знаю более или менее. Кроме того, обычно, все подряд прослушивают трафик в общедоступных открытых WiFi-сетях. И так далее. А кроме того, хм, никто не запрещает использовать VPN и в домашней сети, да. И свой DNS.

  • 4. 23rd February 2012, 20:41 // Александр Венедюхин:

    > А почему именно ЕС2?

    Я всё равно использую их сервера, по характеристикам подходит – поэтому и “внешний” VPN пустил туда.

    > Да и static IP – так ли нужен?

    На EC2, да, нужен. Это упрощает настройки очень сильно. Я вообще не уверен, что получится с динамическим адресом. И совершенно точно – для динамического нужно писать хитрые доп. скрипты, отлаживать.

  • 5. 23rd February 2012, 21:12 // Читатель зашел в гости написал:

    “А кроме того, хм, никто не запрещает использовать VPN и в домашней сети, да.”

    чтобы соседи за стеной не подслушивали, если у вас домашний WiFi?

  • 6. 23rd February 2012, 21:30 // Александр Венедюхин:

    Не, для этого WPA есть.

  • 7. 23rd February 2012, 21:40 // Читатель зашел в гости написал:

    а для чего тогда VPN в домашней сети? если я правильно вас понял, то вы им защитите участок между амазоновским сервером и вашим компьютером. верно? если да, то что на этом участке может вам угрожать?

  • 8. 23rd February 2012, 22:24 // Александр Венедюхин:

    Ну так речь шла о сети домашнего провайдера. Там, в принципе, могут быть свои утечки.

  • 9. 23rd February 2012, 22:29 // Читатель зашел в гости написал:

    теперь понятно

  • 10. 24th February 2012, 01:25 // Читатель jno написал:

    А расскажите про EC2, плиз!
    Ну, ощущения/соображения…

    И, кстати, VPN – не единственный вариант.
    Я, к примеру, пользую временами ssh-туннель с SOCKS5 (ssh -D) – для браузера (ну, и кое-чего ещё) этого достаточно “чуть более, чем полностью”.
    При всей своей ограниченности, оно проще и, местами, надёжнее (не надеется на SSL-инфраструктуру – вместо неё там ssh).

  • 11. 24th February 2012, 12:50 // Читатель jno написал:

    Зашёл тут снова на AWS – думал, что-то поменялось :)

    Гляжу – и правда: “сигнуп фор фри…”
    А там всё то же: скажи адрес, телефон, кредитную карту :)
    В катманду.
    Уж дали бы хоть посмотреть сначала.

  • 12. 24th February 2012, 14:27 // Александр Венедюхин:

    > А расскажите про EC2, плиз!
    > Ну, ощущения/соображения…

    Ощущения положительные, работает. Но чего-то особенного, в качестве оценки, в голову не приходит. Я там держу NS-ы, какие-то веб-серверы. Ну, использую ещё их серверы для сбора всякого нужного из Интернета вообще, и из DNS – в частности. Тут, кстати, проявляется основное, на мой вкус, удобство: создаём базовую конфигурацию сервера со всеми скриптами и пакетами, потом просто автоматом размножаем её на нужное количество экземпляров, они сами поднимаются, и – быстро получаем параллельное решение. Как-то так.

    > А там всё то же: скажи адрес, телефон, кредитную карту :)

    Ага, и они телефон проверяют, с помощью робота: звонят, просят назвать код, который тут же показывают на странице регистрации. Идентификация, да.

  • 13. 24th February 2012, 17:29 // Читатель jno написал:

    [off]особо радует ТРЕБОВАНИЕ предъявить *кредитную* карту (коих у большинства россиянцев попросту нет) для доступа к фришной “демке”[/off]

    если не секрет, во что эта радость обходится?
    а то там как-то мутно сказано про какие-то сильно дробные доли баксов в час…

  • 14. 24th February 2012, 21:53 // Александр Венедюхин:

    Да, тарифы мутные, факт. По опыту, мелкий сервер примерно от $20 в месяц. Но там в тарифах всякие хитрости, типа оплаты за не используемый для адресации IP, трафик между дата-центрами и т.п., так что иногда сложно разобраться бывает.

  • 15. 25th February 2012, 00:41 // Читатель jno написал:

    ммда…
    я остановился на VDS/VPS.
    и вчетверо дешевле.

  • 16. 26th February 2012, 12:40 // Александр Венедюхин:

    Но это, всё ж, совсем другая услуга. Преимущество AWS/EC2 в том, что там можно целую инфраструктуру из десятков серверов поднять, очень быстро, действуя самостоятельно.

  • 17. 6th March 2012, 23:26 // Читатель Alatar написал:

    А зачем в этой схеме настраивать на VPN сервере собственный ДНС? То есть я понимаю, что у Вас лично особый интерес к ДНС, но в общем случае зачем? Ведь он всё равно будет обращаться к каким-то доверенным источникам для получения информации. Так почему бы не обращаться к ним прямо с клиента (через всё тот же защищённый ВПН)?

  • 18. 7th March 2012, 11:56 // Читатель jno написал:

    > можно целую инфраструктуру из десятков серверов поднять

    ну, фиг его знает…
    надо подумать.
    на том же VDS/VPS тоже, в общем-то, можно много серверов поднять – это ж просто образы-VM

    > А зачем в этой схеме настраивать на VPN сервере собственный ДНС?

    а как быть уверенным в том, что “доверенный источник” – доверенный?
    так уж – работаем со своим DNSом (который обновляется со всеми плясками секурности). Иначе можно компрометировать и VPN.

  • 19. 7th March 2012, 15:00 // Александр Венедюхин:

    Вообще, да. Сейчас напишу отдельную заметку.