Kontaktieren Sie uns in Messenger oder per Telefon.

whatsapp telegram viber phone email
+79214188555

Курс по приватности и анонимности с использованием VPN, Tor и Виртуальной машины. Часть 5

root

СисАдмин Форума
Miembro del equipo
Full members of NP "MOD"
Registrado
17 Feb 2007
Mensajes
673
Puntuación de reacción
1.013
Puntos
93
Edad
57
02d51a29ff0f2a41f07db.jpg


На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.

Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.

Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).

Создание ВМ pfSense​

  1. Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
  2. Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
  3. Память можете указать 512 MB, процессор оставляем как есть
  4. Размер диска можете выбрать 2-4 GB, в большом нет смысла
  5. Нажмите “Finish”
  6. После зайдите в настройки ВМ, включите PAE/NX (“System”“Processor”)
  7. ВМ готова.

Установка ОС​

  1. После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter
  2. Выберите “Install (Enter)”
  3. Выберите “Auto (ZFS)”
  4. Еще раз выберите “Install”
  5. Выберите “Stripe”
  6. В окне “ZFS Configuration” нажмите пробел, затем “Enter”
  7. В предупреждающем окне нажмите левую стрелку, затем “Enter”
  8. Дождитесь окончания установки
  9. В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
  10. Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
  11. Зайдите в “Network”“Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
  12. Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
Настало время настроить рабочую виртуальную машину. В качестве примера опять Ubuntu 22.04. Начнем.

  1. Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
  2. Запустите ВМ.
  3. Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
  4. Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
  5. Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
  6. В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
  7. Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
  8. Нажмите “Finish”
  9. После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
А теперь переходим непосредственно к настройке WireGuard на pfSense. Сначала установите плагин WireGuard. Перейдите в “System” → “Package Manager” → “Available Packages” и в строке поиска напишите “WireGuard”. Нажмите “Install”, затем “Confirm”.

Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):

Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128

Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=

Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=

Peer Endpoint: 86.106.143.236

Peer Port: 51820

Peer WG Address: то же, что и Tunnel Addresses

Peer DNS Server: DNS как в конфиге

Allowed IPs: 0.0.0.0/0 и ::0/0

Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.

Конфигурация туннеля​

  1. В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
  2. Нажмите “Add Tunnel”
  3. Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
  4. Нажмите “Save Tunnel”

Конфигурация пира​

  1. VPN” → “WireGuard” → “Peers”
  2. Нажмите “Add Peer”
  3. Enable Peer” – галочка отмечена
  4. Tunnel” – выбрать из списка туннель WireGuard
  5. Description” – придумать название сервера
  6. Dynamic Endpoint” – снять галочку
  7. Endpoint” – IP-адрес из конфига
  8. Enpoint Port” – порт из конфига
  9. Public Key” – публичный ключ из конфига
  10. Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
  11. Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
  12. Нажмите “Save Peer”
  13. Нажмите “Apply Changes”
  14. Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
  15. Нажмите “Save”
  16. Нажмите “Apply Changes”

Назначение сетевого интерфейса​

  1. В верхней панели откройте “Interfaces”“Assignments”
  2. Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
  3. Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
  4. Нажмите на название нового интерфейса слева.
  5. Отметьте галочку “Enable Interface”
  6. Поменяйте название на “WG_VPN” (опционально)
  7. IPv4 Configuration Type” – “Static IPv4”
  8. IPv6 Configuration Type” – “Static IPv6”
  9. IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
  10. IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
  11. IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
  12. Повторите п. 10, используя данные для IPv6
  13. Нажмите “Save”
  14. Нажмите “Apply Changes”
На этом моменте в “Status” → “WireGuard” (нажать на стрелочку сбоку “tun_wg0”) в графе “Description” вы должны видеть зеленое рукопожатие, а под “Latest Handshake” должно быть указано, как давно было совершено рукопожатие. Это значит, что виртуальный роутер уже видит сервер и все настроено правильно. Если вы видите красный значок, перепроверьте, все ли указано правильно. Продолжим настройку.

  1. Откройте “System” → “Routing” → “Gateway Groups”
  2. Нажмите “Add”
  3. Сконфигурируйте группу. “Group Name”“Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP”“Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
  4. Нажмите “Save”
  5. Нажмите “Apply Changes”

Конфигурация NAT​

  1. Откройте “Firewall” → “NAT” → “Outbound”
  2. Поставьте режим в “Hybrid Outbound NAT”
  3. Нажмите “Save”
  4. Нажмите “Add” со стрелочкой вверх.
  5. Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”

Правила Фаервола​

  1. Откройте “Firewall” → “Rules” → “LAN”
  2. Нажмите “Add” со стрелочкой вверх
  3. Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
  4. Нажмите “Display Advanced”
  5. Найдите внизу “Gateway” и выставите “WG_VPN_v4”
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”
С этого момента весь трафик ВМ будет идти только через VPN.

DNS​

Для дополнительной безопасности нужно добавить DNS-серверы.

Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целях.
  1. Откройте “System” → “General”
  2. В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
  3. В “Gateway” укажите “WG_VPN_v4”
  4. DNS Server Override” – снимите галочку
  5. Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
Настройте DNS-резолвер для режима переадресации:

  1. Перейдите в меню “Services””DNS Resolver”
  2. Снимите флажок “Enable DNSSEC Support”
  3. Установите флажок “Enable Forwarding Mode”.
  4. Повторите для IPv6, если требуется.
  5. Нажмите “Save”
  6. Нажмите “Apply Changes”

Проверка на утечки​

Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.

На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.

Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.

Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).

Создание ВМ pfSense​

  1. Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
  2. Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
  3. Память можете указать 512 MB, процессор оставляем как есть
  4. Размер диска можете выбрать 2-4 GB, в большом нет смысла
  5. Нажмите “Finish”
  6. После зайдите в настройки ВМ, включите PAE/NX (“System”“Processor”)
  7. ВМ готова.

Установка ОС​

  1. После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter
  2. Выберите “Install (Enter)”
  3. Выберите “Auto (ZFS)”
  4. Еще раз выберите “Install”
  5. Выберите “Stripe”
  6. В окне “ZFS Configuration” нажмите пробел, затем “Enter”
  7. В предупреждающем окне нажмите левую стрелку, затем “Enter”
  8. Дождитесь окончания установки
  9. В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
  10. Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
  11. Зайдите в “Network”“Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
  12. Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
Настало время настроить рабочую виртуальную машину. В качестве примера опять Ubuntu 22.04. Начнем.

  1. Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
  2. Запустите ВМ.
  3. Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
  4. Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
  5. Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
  6. В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
  7. Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
  8. Нажмите “Finish”
  9. После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
А теперь переходим непосредственно к настройке WireGuard на pfSense. Сначала установите плагин WireGuard. Перейдите в “System” → “Package Manager” → “Available Packages” и в строке поиска напишите “WireGuard”. Нажмите “Install”, затем “Confirm”.

Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):

Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128

Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=

Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=

Peer Endpoint: 86.106.143.236

Peer Port: 51820

Peer WG Address: то же, что и Tunnel Addresses

Peer DNS Server: DNS как в конфиге

Allowed IPs: 0.0.0.0/0 и ::0/0

Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.

Конфигурация туннеля​

  1. В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
  2. Нажмите “Add Tunnel”
  3. Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
  4. Нажмите “Save Tunnel”

Конфигурация пира​

  1. VPN” → “WireGuard” → “Peers”
  2. Нажмите “Add Peer”
  3. Enable Peer” – галочка отмечена
  4. Tunnel” – выбрать из списка туннель WireGuard
  5. Description” – придумать название сервера
  6. Dynamic Endpoint” – снять галочку
  7. Endpoint” – IP-адрес из конфига
  8. Enpoint Port” – порт из конфига
  9. Public Key” – публичный ключ из конфига
  10. Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
  11. Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
  12. Нажмите “Save Peer”
  13. Нажмите “Apply Changes”
  14. Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
  15. Нажмите “Save”
  16. Нажмите “Apply Changes”

Назначение сетевого интерфейса​

  1. В верхней панели откройте “Interfaces”“Assignments”
  2. Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
  3. Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
  4. Нажмите на название нового интерфейса слева.
  5. Отметьте галочку “Enable Interface”
  6. Поменяйте название на “WG_VPN” (опционально)
  7. IPv4 Configuration Type” – “Static IPv4”
  8. IPv6 Configuration Type” – “Static IPv6”
  9. IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
  10. IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
  11. IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
  12. Повторите п. 10, используя данные для IPv6
  13. Нажмите “Save”
  14. Нажмите “Apply Changes”
На этом моменте в “Status” → “WireGuard” (нажать на стрелочку сбоку “tun_wg0”) в графе “Description” вы должны видеть зеленое рукопожатие, а под “Latest Handshake” должно быть указано, как давно было совершено рукопожатие. Это значит, что виртуальный роутер уже видит сервер и все настроено правильно. Если вы видите красный значок, перепроверьте, все ли указано правильно. Продолжим настройку.

  1. Откройте “System” → “Routing” → “Gateway Groups”
  2. Нажмите “Add”
  3. Сконфигурируйте группу. “Group Name”“Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP”“Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
  4. Нажмите “Save”
  5. Нажмите “Apply Changes”

Конфигурация NAT​

  1. Откройте “Firewall” → “NAT” → “Outbound”
  2. Поставьте режим в “Hybrid Outbound NAT”
  3. Нажмите “Save”
  4. Нажмите “Add” со стрелочкой вверх.
  5. Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”

Правила Фаервола​

  1. Откройте “Firewall” → “Rules” → “LAN”
  2. Нажмите “Add” со стрелочкой вверх
  3. Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в а значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
  4. Нажмите “Display Advanced”
  5. Найдите внизу “Gateway” и выставите “WG_VPN_v4”
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”
С этого момента весь трафик ВМ будет идти только через VPN.

DNS​

Для дополнительной безопасности нужно добавить DNS-серверы.

Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целах.
  1. Откройте “System” → “General”
  2. В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
  3. В “Gateway” укажите “WG_VPN_v4”
  4. DNS Server Override” – снимите галочку
  5. Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
Настройте DNS-резолвер для режима переадресации:

  1. Перейдите в меню “Services””DNS Resolver”
  2. Снимите флажок “Enable DNSSEC Support”
  3. Установите флажок “Enable Forwarding Mode”.
  4. Повторите для IPv6, если требуется.
  5. Нажмите “Save”
  6. Нажмите “Apply Changes”

Проверка на утечки​

Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.

By Vergil & Pavluu

| часть 1 | часть 2 | часть 3 | часть 4 |

Источник
 
Original message
02d51a29ff0f2a41f07db.jpg


На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.

Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.

Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).

Создание ВМ pfSense​

  1. Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
  2. Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
  3. Память можете указать 512 MB, процессор оставляем как есть
  4. Размер диска можете выбрать 2-4 GB, в большом нет смысла
  5. Нажмите “Finish”
  6. После зайдите в настройки ВМ, включите PAE/NX (“System”“Processor”)
  7. ВМ готова.

Установка ОС​

  1. После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter
  2. Выберите “Install (Enter)”
  3. Выберите “Auto (ZFS)”
  4. Еще раз выберите “Install”
  5. Выберите “Stripe”
  6. В окне “ZFS Configuration” нажмите пробел, затем “Enter”
  7. В предупреждающем окне нажмите левую стрелку, затем “Enter”
  8. Дождитесь окончания установки
  9. В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
  10. Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
  11. Зайдите в “Network”“Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
  12. Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
Настало время настроить рабочую виртуальную машину. В качестве примера опять Ubuntu 22.04. Начнем.

  1. Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
  2. Запустите ВМ.
  3. Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
  4. Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
  5. Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
  6. В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
  7. Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
  8. Нажмите “Finish”
  9. После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
А теперь переходим непосредственно к настройке WireGuard на pfSense. Сначала установите плагин WireGuard. Перейдите в “System” → “Package Manager” → “Available Packages” и в строке поиска напишите “WireGuard”. Нажмите “Install”, затем “Confirm”.

Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):

Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128

Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=

Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=

Peer Endpoint: 86.106.143.236

Peer Port: 51820

Peer WG Address: то же, что и Tunnel Addresses

Peer DNS Server: DNS как в конфиге

Allowed IPs: 0.0.0.0/0 и ::0/0

Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.

Конфигурация туннеля​

  1. В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
  2. Нажмите “Add Tunnel”
  3. Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
  4. Нажмите “Save Tunnel”

Конфигурация пира​

  1. VPN” → “WireGuard” → “Peers”
  2. Нажмите “Add Peer”
  3. Enable Peer” – галочка отмечена
  4. Tunnel” – выбрать из списка туннель WireGuard
  5. Description” – придумать название сервера
  6. Dynamic Endpoint” – снять галочку
  7. Endpoint” – IP-адрес из конфига
  8. Enpoint Port” – порт из конфига
  9. Public Key” – публичный ключ из конфига
  10. Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
  11. Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
  12. Нажмите “Save Peer”
  13. Нажмите “Apply Changes”
  14. Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
  15. Нажмите “Save”
  16. Нажмите “Apply Changes”

Назначение сетевого интерфейса​

  1. В верхней панели откройте “Interfaces”“Assignments”
  2. Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
  3. Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
  4. Нажмите на название нового интерфейса слева.
  5. Отметьте галочку “Enable Interface”
  6. Поменяйте название на “WG_VPN” (опционально)
  7. IPv4 Configuration Type” – “Static IPv4”
  8. IPv6 Configuration Type” – “Static IPv6”
  9. IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
  10. IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
  11. IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
  12. Повторите п. 10, используя данные для IPv6
  13. Нажмите “Save”
  14. Нажмите “Apply Changes”
На этом моменте в “Status” → “WireGuard” (нажать на стрелочку сбоку “tun_wg0”) в графе “Description” вы должны видеть зеленое рукопожатие, а под “Latest Handshake” должно быть указано, как давно было совершено рукопожатие. Это значит, что виртуальный роутер уже видит сервер и все настроено правильно. Если вы видите красный значок, перепроверьте, все ли указано правильно. Продолжим настройку.

  1. Откройте “System” → “Routing” → “Gateway Groups”
  2. Нажмите “Add”
  3. Сконфигурируйте группу. “Group Name”“Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP”“Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
  4. Нажмите “Save”
  5. Нажмите “Apply Changes”

Конфигурация NAT​

  1. Откройте “Firewall” → “NAT” → “Outbound”
  2. Поставьте режим в “Hybrid Outbound NAT”
  3. Нажмите “Save”
  4. Нажмите “Add” со стрелочкой вверх.
  5. Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”

Правила Фаервола​

  1. Откройте “Firewall” → “Rules” → “LAN”
  2. Нажмите “Add” со стрелочкой вверх
  3. Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
  4. Нажмите “Display Advanced”
  5. Найдите внизу “Gateway” и выставите “WG_VPN_v4”
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”
С этого момента весь трафик ВМ будет идти только через VPN.

DNS​

Для дополнительной безопасности нужно добавить DNS-серверы.

Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целях.
  1. Откройте “System” → “General”
  2. В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
  3. В “Gateway” укажите “WG_VPN_v4”
  4. DNS Server Override” – снимите галочку
  5. Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
Настройте DNS-резолвер для режима переадресации:

  1. Перейдите в меню “Services””DNS Resolver”
  2. Снимите флажок “Enable DNSSEC Support”
  3. Установите флажок “Enable Forwarding Mode”.
  4. Повторите для IPv6, если требуется.
  5. Нажмите “Save”
  6. Нажмите “Apply Changes”

Проверка на утечки​

Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.

На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.

Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.

Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).

Создание ВМ pfSense​

  1. Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
  2. Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
  3. Память можете указать 512 MB, процессор оставляем как есть
  4. Размер диска можете выбрать 2-4 GB, в большом нет смысла
  5. Нажмите “Finish”
  6. После зайдите в настройки ВМ, включите PAE/NX (“System”“Processor”)
  7. ВМ готова.

Установка ОС​

  1. После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter
  2. Выберите “Install (Enter)”
  3. Выберите “Auto (ZFS)”
  4. Еще раз выберите “Install”
  5. Выберите “Stripe”
  6. В окне “ZFS Configuration” нажмите пробел, затем “Enter”
  7. В предупреждающем окне нажмите левую стрелку, затем “Enter”
  8. Дождитесь окончания установки
  9. В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
  10. Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
  11. Зайдите в “Network”“Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
  12. Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
Настало время настроить рабочую виртуальную машину. В качестве примера опять Ubuntu 22.04. Начнем.

  1. Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
  2. Запустите ВМ.
  3. Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
  4. Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
  5. Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
  6. В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
  7. Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
  8. Нажмите “Finish”
  9. После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
А теперь переходим непосредственно к настройке WireGuard на pfSense. Сначала установите плагин WireGuard. Перейдите в “System” → “Package Manager” → “Available Packages” и в строке поиска напишите “WireGuard”. Нажмите “Install”, затем “Confirm”.

Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):

Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128

Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=

Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=

Peer Endpoint: 86.106.143.236

Peer Port: 51820

Peer WG Address: то же, что и Tunnel Addresses

Peer DNS Server: DNS как в конфиге

Allowed IPs: 0.0.0.0/0 и ::0/0

Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.

Конфигурация туннеля​

  1. В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
  2. Нажмите “Add Tunnel”
  3. Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
  4. Нажмите “Save Tunnel”

Конфигурация пира​

  1. VPN” → “WireGuard” → “Peers”
  2. Нажмите “Add Peer”
  3. Enable Peer” – галочка отмечена
  4. Tunnel” – выбрать из списка туннель WireGuard
  5. Description” – придумать название сервера
  6. Dynamic Endpoint” – снять галочку
  7. Endpoint” – IP-адрес из конфига
  8. Enpoint Port” – порт из конфига
  9. Public Key” – публичный ключ из конфига
  10. Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
  11. Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
  12. Нажмите “Save Peer”
  13. Нажмите “Apply Changes”
  14. Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
  15. Нажмите “Save”
  16. Нажмите “Apply Changes”

Назначение сетевого интерфейса​

  1. В верхней панели откройте “Interfaces”“Assignments”
  2. Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
  3. Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
  4. Нажмите на название нового интерфейса слева.
  5. Отметьте галочку “Enable Interface”
  6. Поменяйте название на “WG_VPN” (опционально)
  7. IPv4 Configuration Type” – “Static IPv4”
  8. IPv6 Configuration Type” – “Static IPv6”
  9. IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
  10. IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
  11. IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
  12. Повторите п. 10, используя данные для IPv6
  13. Нажмите “Save”
  14. Нажмите “Apply Changes”
На этом моменте в “Status” → “WireGuard” (нажать на стрелочку сбоку “tun_wg0”) в графе “Description” вы должны видеть зеленое рукопожатие, а под “Latest Handshake” должно быть указано, как давно было совершено рукопожатие. Это значит, что виртуальный роутер уже видит сервер и все настроено правильно. Если вы видите красный значок, перепроверьте, все ли указано правильно. Продолжим настройку.

  1. Откройте “System” → “Routing” → “Gateway Groups”
  2. Нажмите “Add”
  3. Сконфигурируйте группу. “Group Name”“Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP”“Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
  4. Нажмите “Save”
  5. Нажмите “Apply Changes”

Конфигурация NAT​

  1. Откройте “Firewall” → “NAT” → “Outbound”
  2. Поставьте режим в “Hybrid Outbound NAT”
  3. Нажмите “Save”
  4. Нажмите “Add” со стрелочкой вверх.
  5. Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”

Правила Фаервола​

  1. Откройте “Firewall” → “Rules” → “LAN”
  2. Нажмите “Add” со стрелочкой вверх
  3. Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в а значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
  4. Нажмите “Display Advanced”
  5. Найдите внизу “Gateway” и выставите “WG_VPN_v4”
  6. Нажмите “Save”
  7. Нажмите “Apply Changes”
С этого момента весь трафик ВМ будет идти только через VPN.

DNS​

Для дополнительной безопасности нужно добавить DNS-серверы.

Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целах.
  1. Откройте “System” → “General”
  2. В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
  3. В “Gateway” укажите “WG_VPN_v4”
  4. DNS Server Override” – снимите галочку
  5. Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
Настройте DNS-резолвер для режима переадресации:

  1. Перейдите в меню “Services””DNS Resolver”
  2. Снимите флажок “Enable DNSSEC Support”
  3. Установите флажок “Enable Forwarding Mode”.
  4. Повторите для IPv6, если требуется.
  5. Нажмите “Save”
  6. Нажмите “Apply Changes”

Проверка на утечки​

Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.

By Vergil & Pavluu

| часть 1 | часть 2 | часть 3 | часть 4 |

Источник

Similar threads