Из практики: использование открытых (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/
Похожие записки:
- Метаинформация, мессенджеры и цепочки событий в трафике
- Представления о квантах и радиостанции
- VPN и DNS-сервисы с ECS: утечка сведений об адресах
- "Яндекс.Браузер" и российские сертификаты TLS в вебе
- Рандомизация регистра символов в DNS
- Домены верхнего уровня, реестры и администраторы
- Работа GPS и коррекция по данным многих устройств
- Вывод полей ECH на tls13.1d.pw
- Реестр параметров TLS IANA и именование индексов
- Статья: DNS в качестве инструмента публикации вспомогательной информации
- DNS как транспорт для сигналов и данных
Комментарии читателей блога: 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 // Александр Венедюхин:
Вообще, да. Сейчас напишу отдельную заметку.