Как запретить трафик в обход VPN (при обрыве)


Подскажите, пожалуйста, как в Windows 7 запретить утечку трафика для определенных программ или вообще всего трафика, которая происходит во время дисконнекта openVPN клиента?

То есть, если клиент внезапно стал disconnected весь трафик тут же блочился бы. Знаю, что есть программа IP Filter & Monitor, но может быть можно что-то полегче придумать. Спасибо за советы

Комментарии
Гость (18/04/2011 22:58)   
Воткнуть между Windows 7 и интернетом рутер с UNIX'ом на борту, который будет блочить траф, идущий в обход VPN.
Гость (18/04/2011 23:07)   
Это еще сложнее, чем IP Filter & Monitor настроить) где-то на форумах видел фразу "для определенной группы программ можно разрешить доступ только через виртуальный MAC адрес ВПН соединения". кто-нибудь знает как такое можно сделать?
— Beowulf (19/04/2011 02:06)   
Первое что приходит на ум – лазать из виртуальной машины и рубить фаерволлом в супервизоре.

Или наоборот – из супервизора лазать через VM и рубить там.
Гость (03/06/2012 17:41)   
Для этого требуется тонкая настройка фаервола.
Не знаю, правильно или нет, но я эту проблему у себя решил следующим образом.

Есть ноутбук с 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 я уж описывать не буду –
можно поискать в интернете.
Гость (28/06/2012 22:05)   
так вроде понятно. но требуется уточнение, что имеется ввиду.. короче поконкретнее )
устанавливаем виндовый порт BSD-фаервола WIPFW
Гость (13/08/2012 23:58)   
В операционке FreeBSD есть штатный консольный файервол ipfw. Но так же существует и его виндовая версия – wipfw. Просто я пользуюсь им по привычке, т.к. долгое время использовал FreeBSD на работе. Консольный файервол позволяет задавать гибкие правила фильтрации разной степени извращенности. Просто не знаю, существуют ли файерволы для винды, которые позволяют задавать такую же гибкость в настройках.

Кроме настройки файервола можно попробовать еще один способ, который я вычитал в интернете. Для недопущение проскакивания траффика "мимо" vpn-соединения (при его обрыве), нужно в vpn-конфиг добавить строчки:

route delete 0.0.0.0 mask 0.0.0.0
script-security 3

Сам так делать, правда, не пробовал, так что не знаю, работает этот вариант или нет.
Гость (27/10/2012 13:26)   
виндовый порт BSD-фаервола WIPFW.
кто пробовал на Win7x64. на сайте только для 32
Гость (27/10/2012 21:38)   
Настройку и использование... WIPFW я уж описывать не буду
может опишите все-таки?
Гость (27/10/2012 23:28)   
а другие варианты существуют? кроме wipfw
Гость (27/10/2012 23:52)   
Могу ошибаться, но несколько лет назад, один попсовый популярный ВПН сервис предлагал утилиту,к ак дополнение к своим услугам, которая блокировала трафик, если связь с ВПН серверами рвалась. По-моему, она где-то на хардах с софтом у меня есть. Скачал, помню, а зачем? Все равно не пользовался.
Названия не помню, да и давно её убрали с сайта ВПН-прова.
Гость (28/10/2012 11:13)   
с сайта может убрали, но в инете наверняка где то лежит.
может удастся вспомнить название?
Гость (28/10/2012 11:24)   
спасибо за наводку ))
здесь утилита[link1]
Гость (28/10/2012 13:07)   
на системе х64 не устанавливается драйвер (отсутствует подпись).
Гость (28/10/2012 19:41)   
читайте мануал команды route, она есть как в никсах так и в винде.
Гость (28/10/2012 23:10)   
читайте мануал команды route

как мне воспользоваться знаниями?[link2]
Гость (29/10/2012 22:42)   
Вот вам описание[link3] тяжелого случая на примере kerio.
Гость (28/02/2013 01:33, исправлен 01/03/2013 21:55)   

вот наткнулся:


Маршрутизация всего клиентского трафика (включая веб-трафик) через VPN



Обзор:


По умолчанию, когда клиент OpenVPN активен, только сетевой трафик к и от сайта OpenVPN-сервера идет через VPN. Например, обычный просмотр веб-страниц будет осуществляться через прямое подключение (к Интернету — прим. перев.) в обход VPN.


В некоторых случаях такое поведение может быть нежелательным — у вас может возникнуть необходимость чтобы VPN-клиент туннелировал весь сетевой трафик через VPN, включая просмотр веб-страниц Интернета. Хотя этот тип VPN конфигурации приведет к потере производительности на клиенте, он дает администратору VPN более полный контроль над политиками безопасности когда клиент одновременно подключен и к Интернету и к VPN.



Реализация:


Добавьте следующие директивы в файл конфигурации сервера:


push "redirect-gateway def1"

Если ваш VPN работает через беспроводную сеть, где сервер и все клиенты находятся в одной и той же беспроводной подсети, добавьте флаг local:


push "redirect-gateway local def1"

Передача клиенту опции redirect-gateway заставит весь IP-трафик, порождаемый на клиентской машине, пройти через сервер OpenVPN. Сервер должен быть настроен обработку этого трафика каким-нибудь образом, например, путем отправки в Интернет через NAT, или маршрутизацию через HTTP-прокси сайта сервера.


В Linux вы можете использовать команду вроде этой, чтобы направить трафик клиента в Интернет через NAT:


iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Эта команда предполагает, что VPN-подсеть имеет адрес 10.8.0.0/24 (взято из директивы server конфигурации сервера OpenVPN) и что локальный интерфейс Ethernet является eth0.


Когда используется redirect-gateway, OpenVPN-клиенты будут направлять DNS-запросы через VPN и VPN-сервер должны уметь обрабатывать их. Это может быть достигнуто путем передачи подключающимся клиентам адреса DNS-сервера, который заменит их обычные настройки для DNS-сервера пока VPN будет активным. Например:


push "dhcp-option DNS 10.8.0.1"

настроит Windows-клиентов (или не-Windows-клиентов при дополнительной работе над скриптами на стороне сервера) на использование 10.8.0.1 в качестве DNS-сервера. Любой адрес, доступный для клиентов, может быть использован в качестве адреса DNS-сервера.



Предостережения:


Перенаправление всего сетевого трафика через VPN не является совсем беспроблемным делом. Вот несколько типичных подводных камней, чтобы вы были в курсе:


Многие подсоединенные к Интернет машины с OpenVPN-клиентом будут периодически взаимодействовать с сервером DHCP, чтобы возобновить аренду своих IP-адресов. Опция redirect-gateway может мешать клиенту связаться с локальным DHCP-сервером (потому что DHCP-сообщения будут направляться через VPN), приводя к потере аренды IP-адреса.
Имеются проблемы в отношении передачи DNS-адресов Windows-клиентам.
Скорость просмотра веб-страниц на клиенте будет заметно медленнее.



специалисты в этом вопросе могут прокомментировать?
очень интересно мнение.

Гость (02/03/2013 05:10)   

Я плохо разбираюсь в OpenVPN, настраивал только OpenVPN-клиенты, да и те, не закручивая полностью гайки. Могу сказать общее замечание: все команды push подразумевают, что вы тянете и принимаете параметры конфигурации сети с OpenVPN-сервера. Если вы не доверяете на 100% OpenVPN-серверу, это проблема, поскольку вы позволяете потенциально злоумышленному пользователю менять ваш gateway, IP, маски сети, DNS-сервер и т.д. В OpenVPN предусмотрены опции ручного выставления этих настроек. Можно запустить OpenVPN-клиент на автоматике с push; поглядеть, что предлагает вам сервер; проверить эти настройки на предмет бредовости и только после всего этого статично прописать их в конфиге OpenVPN. В этом случае даже если позже OpenVPN-сервер вам подсунет что-то левое, оно не сработает.

Я сам вышеописанную программу действий не выполнял, но в планах она была. Если делать по уму, надо делать как-то так.
Гость (02/03/2013 05:12)   
P.S. Наконец, гарантию заворачивания всего трафика в VPN-тунель даст только правильно настроенный firewall.
Гость (02/03/2013 06:20)   

eth1 – адаптер который подключен к интернету
eth2 – адаптер OpenVPN
Это конфиг wipfw который работает на xp/2003. Для Win7 можно аналогично сконфигурировать windows firewall.
Для предотвращения DNS утечек еще нужно вручную выставить DNS'ы на всех адаптерах.
Гость (16/02/2015 02:20)   
Под виндами можно это сделать с помощью:
route delete
и удалением нужных маршрутов (мимо VPN), а вот как наиболее легко это сделать под Linux? И что там с файрволлами? Я так понимаю, самый классический это iptables? Где можно найти ПУТНОЕ руководство по настройке сетевой безопасности под Linux?
Гость (16/02/2015 06:22)   

man route


Для любителей ещё был порт NetBSD ipf[link4]'а, скорей всего, уже давно померший.


По iptables мануалов выше крыши, всяких и разных. Например, на opennet'е был. Ещё есть man ip, по нему тоже должно хватать мануалов. А по сетевой безопасности пишут толстые книги, тут одной статьёй не обойтись.
Гость (17/02/2015 02:09)   
Подскажите как в линухах тупо перекрыть возможность входящих соединений? Вообще что там с настройками поумолчанию? Все для всех открыто или? И посоветуйте какой-нибудь файрволл с вменяемым графическим интерфейсом (да, я такой ленивый) и реально-работающий!
— cypherpunks (30/11/2015 01:27)   
Что значит если трэйсинг пропускает ноды в пути?
Вот так:

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 10.10.0.1 (10.13.0.1) 61.432 ms 62.715 ms *
2 * * *
3 * * *
4 * * *
5 * * *
6 * n.n.n.n (какой-то IP) 290.268 ms 360.244 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * 8.8.8.8 (8.8.8.8) 96.237 ms


При этом серфинг работает и пользоваться интернетом можно.
— SATtva (30/11/2015 10:30)   
Это не пропуск, а отсутствие ответа от хоста на данной дистанции (измеряемой значением TTL UDP-пакета) на каждый из посланных запросов. По умолчанию traceroute посылает по 3 пакета с 5-секундным таймаутом, каждая звёздочка в выводе означает отсутствие ответа на такой пакет. Как можно видеть, хосты 1, 6 и 11 тоже ответили не на все запросы. Иногда может помочь увеличение интервала таймаута (опцией -w), но зачастую у "молчаливого" хоста просто выставлен запрет на отправку ICMP-ответов.
— Гость_ (30/11/2015 11:11)   
Маршрутизаторы могут по разному изучать проходящие пакеты, ICMP или UDP пакет с истекшим временем жизни могут по тихому отбрасывать, а для TCP генерировать уведомление. Поэтому, возможно, стоит попробовать ещё tcptraceroute.
Но в современных сетях трейсинг обычно бесполезен и только запутывает наблюдателя, у провайдеров там зачастую Multiprotocol Label Switching[link7] без разбора пакетов пользователя. И звездочки — это фантомы пакетной маршрутизации.
— pgprubot (04/12/2015 15:36)   

Раньше было типично, что до какого-то хоста идут ICMP-ответы, а после — нет, поэтому traceroute мог бесконечно менять параметры в пинге, а звёздочки после какого-то хоста писаться вечно. Т.е., это не означало, что там действительно стоит бесконечное число неотвечающих хостов.
— cypherpunks (31/12/2015 06:33)   
Ветку прочитал, но вопрос короткий и надеюсь простой:
Как (в никсах) убедиться в том, что весь трафик идет только через поднятый ВПН?
Понятно, что "правильно настроенный iptables уберет все вопросы", но хочется простой командой в терминале)
traceroute пускает трафик как надо, но на основании данных по количеству трафика которые выдает ifconfig возникают тревожные вопросы(
— pgprubot (02/01/2016 19:29)   

Анализ tcpdump вкупе с выводом route и ifconfig дают ответ на этот вопрос. В принципе, последних двух утилит достаточно, первая — только для пущей наглядной демонстрации.

Ссылки
[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