OpenVPN и Stunnel Настройка брандмауэра в локальной сети

Вопрос или проблема

В настоящее время у меня работают OpenVPN и Stunnel на моем сервере Ubuntu 24.04.1 LTS, который работает в виртуализированной среде Proxmox с пропуском Ethernet. Мой OpenVPN работает на TCP-порту 1443, а Stunnel на TCP-порту 443, при этом DNS OpenVPN подключен к моему Pihole. Мой сервер OpenVPN работает в подсети 192.168.1.0/24 с IP-адресом 192.168.1.124, а подсеть OpenVPN – 10.8.0.0/24.

Я пробовал несколько методов настройки брандмауэра с помощью UFW и IPtables для маршрутизации моего интернет-трафика OpenVPN. Я хотел бы полностью заблокировать свою локальную сеть (например, 192.168.1.150), чтобы предотвратить доступ клиентов к сети моего дома, но также разрешить доступ к важным интернет-портам, таким как DNS, для функционирования VPN. Ниже приведены мои настройки Iptables и UFW:

Iptables:

Цепь PREROUTING (политика ACCEPT 0 пакетов, 0 байт)
пакеты байты цель     прот опция вход  выход  источник            назначение

Цепь INPUT (политика ACCEPT 0 пакетов, 0 байт)
пакеты байты цель     прот опция вход  выход  источник            назначение

Цепь OUTPUT (политика ACCEPT 0 пакетов, 0 байт)
пакеты байты цель     прот опция вход  выход  источник            назначение

Цепь POSTROUTING (политика ACCEPT 621 пакетов, 46979 байт)
пакеты байты цель     прот опция вход  выход  источник            назначение
44 12691 MASQUERADE  0    --  *      ens18   10.8.0.0/24          0.0.0.0/0

UFW:

     Чтобы                       Действие     Из
     --                         ------      ----
[ 1] 1443/tcp                   ALLOW IN    Везде
[ 2] 443/tcp                    ALLOW IN    Везде
[ 3] 192.168.1.123              DENY IN     10.8.0.0/24
[ 4] 192.168.1.150              DENY OUT    10.8.0.0/24                (внешний)
[ 5] 10.8.0.0/24                REJECT IN   192.168.1.150
[ 6] 192.168.1.127              DENY OUT    10.8.0.0/24                (внешний)
[ 7] 192.168.1.123              DENY OUT    10.8.0.0/24                (внешний)
[ 8] 192.168.1.150 8006         DENY IN     10.8.0.0/24

Ниже приведены мои настройки сервера и клиента OpenVPN:

Сервер OpenVPN:

port 1443
proto tcp
dev tun
tun-mtu 1320
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 192.168.1.127"
push "route 192.168.1.0 255.255.255.0"
push "route 10.8.0.0 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
management 127.0.0.1 5555
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_qs2L2DYUaw22IfhA.crt
key server_qs2L2DYUaw22IfhA.key
auth SHA256
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
verb 3

Клиент OpenVPN:

client
proto tcp-client
remote 127.0.0.1 1443
dev tun
tun-mtu 1320
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_qs2L2DYUaw22IfhA name
auth SHA256
auth-nocache
cipher AES-256-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Защита от утечки DNS в Windows 10
verb 3
<ca>

При подключении к клиенту VPN я все еще могу получать доступ к IP-адресам, таким как 192.168.1.150. Это связано с другой подсетью?

Буду признателен за любую помощь. Спасибо.

Ответ или решение

Настройка брандмауэра для OpenVPN и Stunnel в локальной сети

В этой статье мы подробно рассмотрим, как правильно настроить брандмауэр для OpenVPN и Stunnel в виртуализированной среде на Ubuntu Server 24.04.1 LTS, работающей в Proxmox. Мы стремимся полностью изолировать клиентов VPN от вашей локальной сети, при этом сохранив доступ к важным интернет-портам, таким как DNS.

Исходные условия

Ваша конфигурация включает следующие аспекты:

  • OpenVPN использует TCP порт 1443.
  • Stunnel работает на TCP порту 443.
  • OpenVPN работает на подсети 10.8.0.0/24, предоставляя клиентам IP-адреса из этой подсети, в то время как ваша локальная сеть находится в диапазоне 192.168.1.0/24.
  • DNS настроен на Pihole с IP-адресом 192.168.1.127.

Проблема

Вы хотите блокировать доступ клиентов VPN к вашей локальной сети (например, к 192.168.1.150), но при этом обеспечить возможность работы интернет-портов для корректной работы VPN с доступом к DNS.

Настройка брандмауэра с помощью UFW и iptables

Iptables

Для начала, давайте рассмотрим настройки iptables. Вам необходимо добавить правила, которые предотвратят доступ клиентов VPN к вашей локальной сети.

Оптимизированная конфигурация iptables может выглядеть следующим образом:

# Запретить доступ к локальной сети из подсети VPN
iptables -A FORWARD -i tun0 -o ens18 -d 192.168.1.0/24 -j REJECT

# Разрешить доступ к Pihole DNS для клиентов VPN
iptables -A FORWARD -i tun0 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -i tun0 -p tcp --dport 53 -j ACCEPT

# Разрешить доступ к интернету для клиента VPN
iptables -A FORWARD -i tun0 -o ens18 -j ACCEPT
iptables -A FORWARD -i ens18 -o tun0 -m state --state ESTABLISHED -j ACCEPT

# Настроить NAT для подсети VPN
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o ens18 -j MASQUERADE

UFW

Теперь настроим UFW. Важно правильно установить правила, чтобы блокировать доступ к локальной сети от VPN:

# Разрешить трафик к OpenVPN и Stunnel
ufw allow 1443/tcp
ufw allow 443/tcp

# Блокировать доступ к локальной сети от клиентов VPN
ufw deny from 10.8.0.0/24 to 192.168.1.0/24

# Разрешить DNS-запросы от клиентов VPN
ufw allow out to 192.168.1.127 port 53

# Блокировать другие непозволенные выходы
ufw deny out from 10.8.0.0/24 to 192.168.1.0/24

Конфигурация OpenVPN

Существующие параметры конфигурации OpenVPN нуждаются в небольших изменениях для обеспечения правильной маршрутизации. Например, убедитесь, что вы не отправляете маршруты в локальную сеть из конфигурации OpenVPN. Вы можете убрать строку push "route 192.168.1.0 255.255.255.0" из конфигурации сервера.

Заключение

После применения этих правил клиенты OpenVPN не смогут обращаться к IP-адресам в вашей локальной сети, в то время как они будут иметь доступ к DNS-серверу и всем необходимым интернет-ресурсам. Убедитесь, что все изменения правил применены, и перезапустите необходимые сервисы для их активации.

Если доступ к локальной сети все еще сохраняется, проверьте наличие других маршрутов или правил, которые могут перекрывать ваши настройки. По всей видимости, подключение к IP-адресам, таким как 192.168.1.150, возможно из-за неверных маршрутов.

Следуя данным рекомендациям, вы сможете успешно настроить безопасный доступ клиентов OpenVPN в вашем сетевом окружении.

Оцените материал
Добавить комментарий

Капча загружается...