Как запретить трафик в обход VPN (при обрыве)
Подскажите, пожалуйста, как в Windows 7 запретить утечку трафика для определенных программ или вообще всего трафика, которая происходит во время дисконнекта openVPN клиента?
То есть, если клиент внезапно стал disconnected весь трафик тут же блочился бы. Знаю, что есть программа IP Filter & Monitor, но может быть можно что-то полегче придумать. Спасибо за советы
Ссылки
[link1] http://openvpn.ru/nastroyka-i-pomosch/nastroyka-ogranicheniya-trafika-v-obchod-vpn-soedineniya.html
[link2] http://www.windowsfaq.ru/content/view/88/37/
[link3] http://kerio-rus.ru/forum/showthread.php?t=3527
[link4] http://www.phildev.net/ipf/IPFlinux.html
[link5] http://linuxmd.net/instruction/252-firewall-polnaya-nastrojka
[link6] http://www.mintlinux.ru/blogs/linux-mint-shagi-k-komfortu/sozdaem-zaschitnuyu-stenu-nastroika-firewall-v-linux.html
[link7] https://en.wikipedia.org/wiki/Multiprotocol_Label_Switching
Воткнуть между Windows 7 и интернетом рутер с UNIX'ом на борту, который будет блочить траф, идущий в обход VPN.
Это еще сложнее, чем IP Filter & Monitor настроить) где-то на форумах видел фразу "для определенной группы программ можно разрешить доступ только через виртуальный MAC адрес ВПН соединения". кто-нибудь знает как такое можно сделать?
Первое что приходит на ум – лазать из виртуальной машины и рубить фаерволлом в супервизоре.
Или наоборот – из супервизора лазать через VM и рубить там.
Для этого требуется тонкая настройка фаервола.
Не знаю, правильно или нет, но я эту проблему у себя решил следующим образом.
Есть ноутбук с WinXP (не Win7).
Скачиваем и устанавливаем OpenVPN. Ставим ПОЛНУЮ, а не портабле-версию.
http://openvpn.net/index.php/download.html
После установки openvpn в "Сетевых подключениях" появится новый VPN-интерфейс.
Скачиваем и устанавливаем виндовый порт BSD-фаервола WIPFW.
http://wipfw.sourceforge.net/index-ru.html
В рабочей папке wipfw (например c:\\wipfw) запускаем файл install-deny.cmd,
настраивая фаервол "закрытым по умолчанию".
Виндовый брэндмауэр отключаем (через "Службы") – вместо него будет работать wipfw.
В конфигурационный файл wipfw – c:\\wipfw\wipfw.conf – прописываем следующие
правила:
#-- начало файла --
-f flush
add allow all from any to any via lo*
add deny log all from any to 127.0.0.0/8 in
add deny log all from 127.0.0.0/8 to any in
add allow ip from any to any via eth6
add check-state
add deny log tcp from any to any established
add allow tcp from me to any 53 out keep-state setup
add allow udp from me to any 53 out keep-state
add allow tcp from me to any 443 out keep-state setup
add allow udp from me to any 1194 out keep-state
add deny log all from any to any
zero 65535
#-- конец файла --
Здесь "eth6" – имя вашего vpn-интерфейса, которое можно узнать через
консоль cmd.exe, командой
Перегружаем фаервол (применяем правила в конфиге) командой
Пытаемся установить внешнее соединение (через броузер, ping или др.).
Соединение устанавливаться НЕ ДОЛЖНО (что и требуется).
После этого запускаете VPN-GUI (openvpn-gui-1.0.3.exe) и
выбираем "connect", ждете когда установится vpn-соединение с
vpn-сервером (когда значок "позеленеет"), после чего снова
пытаетесь соединиться с внешними адресами.
На этот раз соединения должны устанавливаться без проблем.
Разумеется, что у вас уже должны иметься все необходимые ключи и
правильно настроенный vpn конфиг. Ключи и конфиг обычно выдает
владелец vpn-сервиса или вы создаете их самостоятельно.
Настройку и использование OpenVPN и WIPFW я уж описывать не буду –
можно поискать в интернете.
так вроде понятно. но требуется уточнение, что имеется ввиду.. короче поконкретнее )
В операционке FreeBSD есть штатный консольный файервол ipfw. Но так же существует и его виндовая версия – wipfw. Просто я пользуюсь им по привычке, т.к. долгое время использовал FreeBSD на работе. Консольный файервол позволяет задавать гибкие правила фильтрации разной степени извращенности. Просто не знаю, существуют ли файерволы для винды, которые позволяют задавать такую же гибкость в настройках.
Кроме настройки файервола можно попробовать еще один способ, который я вычитал в интернете. Для недопущение проскакивания траффика "мимо" vpn-соединения (при его обрыве), нужно в vpn-конфиг добавить строчки:
route delete 0.0.0.0 mask 0.0.0.0
script-security 3
Сам так делать, правда, не пробовал, так что не знаю, работает этот вариант или нет.
кто пробовал на Win7x64. на сайте только для 32
может опишите все-таки?
а другие варианты существуют? кроме wipfw
Могу ошибаться, но несколько лет назад, один
попсовыйпопулярный ВПН сервис предлагал утилиту,к ак дополнение к своим услугам, которая блокировала трафик, если связь с ВПН серверами рвалась. По-моему, она где-то на хардах с софтом у меня есть. Скачал, помню, а зачем? Все равно не пользовался.Названия не помню, да и давно её убрали с сайта ВПН-прова.
с сайта может убрали, но в инете наверняка где то лежит.
может удастся вспомнить название?
спасибо за наводку ))
здесь утилита[link1]
на системе х64 не устанавливается драйвер (отсутствует подпись).
читайте мануал команды route, она есть как в никсах так и в винде.
как мне воспользоваться знаниями?[link2]
Вот вам описание[link3] тяжелого случая на примере kerio.
вот наткнулся:
Маршрутизация всего клиентского трафика (включая веб-трафик) через VPN
Обзор:
По умолчанию, когда клиент OpenVPN активен, только сетевой трафик к и от сайта OpenVPN-сервера идет через VPN. Например, обычный просмотр веб-страниц будет осуществляться через прямое подключение (к Интернету — прим. перев.) в обход VPN.
В некоторых случаях такое поведение может быть нежелательным — у вас может возникнуть необходимость чтобы VPN-клиент туннелировал весь сетевой трафик через VPN, включая просмотр веб-страниц Интернета. Хотя этот тип VPN конфигурации приведет к потере производительности на клиенте, он дает администратору VPN более полный контроль над политиками безопасности когда клиент одновременно подключен и к Интернету и к VPN.
Реализация:
Добавьте следующие директивы в файл конфигурации сервера:
Если ваш VPN работает через беспроводную сеть, где сервер и все клиенты находятся в одной и той же беспроводной подсети, добавьте флаг local:
Передача клиенту опции redirect-gateway заставит весь IP-трафик, порождаемый на клиентской машине, пройти через сервер OpenVPN. Сервер должен быть настроен обработку этого трафика каким-нибудь образом, например, путем отправки в Интернет через NAT, или маршрутизацию через HTTP-прокси сайта сервера.
В Linux вы можете использовать команду вроде этой, чтобы направить трафик клиента в Интернет через NAT:
Эта команда предполагает, что VPN-подсеть имеет адрес 10.8.0.0/24 (взято из директивы server конфигурации сервера OpenVPN) и что локальный интерфейс Ethernet является eth0.
Когда используется redirect-gateway, OpenVPN-клиенты будут направлять DNS-запросы через VPN и VPN-сервер должны уметь обрабатывать их. Это может быть достигнуто путем передачи подключающимся клиентам адреса DNS-сервера, который заменит их обычные настройки для DNS-сервера пока VPN будет активным. Например:
настроит Windows-клиентов (или не-Windows-клиентов при дополнительной работе над скриптами на стороне сервера) на использование 10.8.0.1 в качестве DNS-сервера. Любой адрес, доступный для клиентов, может быть использован в качестве адреса DNS-сервера.
Предостережения:
Перенаправление всего сетевого трафика через VPN не является совсем беспроблемным делом. Вот несколько типичных подводных камней, чтобы вы были в курсе:
Имеются проблемы в отношении передачи DNS-адресов Windows-клиентам.
Скорость просмотра веб-страниц на клиенте будет заметно медленнее.
специалисты в этом вопросе могут прокомментировать?
очень интересно мнение.
Я плохо разбираюсь в OpenVPN, настраивал только OpenVPN-клиенты, да и те, не закручивая полностью гайки. Могу сказать общее замечание: все команды push подразумевают, что вы тянете и принимаете параметры конфигурации сети с OpenVPN-сервера. Если вы не доверяете на 100% OpenVPN-серверу, это проблема, поскольку вы позволяете потенциально злоумышленному пользователю менять ваш gateway, IP, маски сети, DNS-сервер и т.д. В OpenVPN предусмотрены опции ручного выставления этих настроек. Можно запустить OpenVPN-клиент на автоматике с push; поглядеть, что предлагает вам сервер; проверить эти настройки на предмет бредовости и только после всего этого статично прописать их в конфиге OpenVPN. В этом случае даже если позже OpenVPN-сервер вам подсунет что-то левое, оно не сработает.
Я сам вышеописанную программу действий не выполнял, но в планах она была. Если делать по уму, надо делать как-то так.
P.S. Наконец, гарантию заворачивания всего трафика в VPN-тунель даст только правильно настроенный firewall.
eth1 – адаптер который подключен к интернету
eth2 – адаптер OpenVPN
Это конфиг wipfw который работает на xp/2003. Для Win7 можно аналогично сконфигурировать windows firewall.
Для предотвращения DNS утечек еще нужно вручную выставить DNS'ы на всех адаптерах.
Под виндами можно это сделать с помощью:
и удалением нужных маршрутов (мимо VPN), а вот как наиболее легко это сделать под Linux? И что там с файрволлами? Я так понимаю, самый классический это iptables? Где можно найти ПУТНОЕ руководство по настройке сетевой безопасности под Linux?
man route
Для любителей ещё был порт NetBSD ipf[link4]'а, скорей всего, уже давно померший.
По iptables мануалов выше крыши, всяких и разных. Например, на opennet'е был. Ещё есть man ip, по нему тоже должно хватать мануалов. А по сетевой безопасности пишут толстые книги, тут одной статьёй не обойтись.
Подскажите как в линухах тупо перекрыть возможность входящих соединений? Вообще что там с настройками поумолчанию? Все для всех открыто или? И посоветуйте какой-нибудь файрволл с вменяемым графическим интерфейсом (да, я такой ленивый) и реально-работающий!
http://linuxmd.net/instruction.....ll-polnaya-nastrojka[link5]
http://www.mintlinux.ru/blogs/.....irewall-v-linux.html[link6]
http://osmaster.org.ua/?p=4308
Что значит если трэйсинг пропускает ноды в пути?
Вот так:
При этом серфинг работает и пользоваться интернетом можно.
Это не пропуск, а отсутствие ответа от хоста на данной дистанции (измеряемой значением TTL UDP-пакета) на каждый из посланных запросов. По умолчанию traceroute посылает по 3 пакета с 5-секундным таймаутом, каждая звёздочка в выводе означает отсутствие ответа на такой пакет. Как можно видеть, хосты 1, 6 и 11 тоже ответили не на все запросы. Иногда может помочь увеличение интервала таймаута (опцией -w), но зачастую у "молчаливого" хоста просто выставлен запрет на отправку ICMP-ответов.
Маршрутизаторы могут по разному изучать проходящие пакеты, ICMP или UDP пакет с истекшим временем жизни могут по тихому отбрасывать, а для TCP генерировать уведомление. Поэтому, возможно, стоит попробовать ещё tcptraceroute.
Но в современных сетях трейсинг обычно бесполезен и только запутывает наблюдателя, у провайдеров там зачастую Multiprotocol Label Switching[link7] без разбора пакетов пользователя. И звездочки — это фантомы пакетной маршрутизации.
Раньше было типично, что до какого-то хоста идут ICMP-ответы, а после — нет, поэтому traceroute мог бесконечно менять параметры в пинге, а звёздочки после какого-то хоста писаться вечно. Т.е., это не означало, что там действительно стоит бесконечное число неотвечающих хостов.
Ветку прочитал, но вопрос короткий и надеюсь простой:
Как (в никсах) убедиться в том, что весь трафик идет только через поднятый ВПН?
Понятно, что "правильно настроенный iptables уберет все вопросы", но хочется простой командой в терминале)
traceroute пускает трафик как надо, но на основании данных по количеству трафика которые выдает ifconfig возникают тревожные вопросы(
Анализ tcpdump вкупе с выводом route и ifconfig дают ответ на этот вопрос. В принципе, последних двух утилит достаточно, первая — только для пущей наглядной демонстрации.