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

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

Я пытаюсь настроить сервер OpenVPN на VPS под управлением Fedora Server 35. Я настроил VPN и он работает, но у меня возникли проблемы с настройкой брандмауэра.

Это мой первый опыт администрирования брандмауэра, и я не являюсь носителем Linux, но я пытаюсь научиться. Я следовал руководству для экземпляра CentOS, но поскольку CentOS больше не существует, я выбрал образ Fedora в Contabo.

Руководство опиралось на firewalld, и поскольку он уже был установлен и частично настроен на моем VPS, я сделал то же самое. Я знаю, что firewalldпроблема в , потому что когда я его отключаю, VPN-клиент подключается без проблем.

Настроены 2 активные зоны FedoraServerи trusted. FedoraServerЗона была предварительно настроена с образом VPS и была установлена ​​как зона по умолчанию. Я использовал следующие команды для изменения конфигурации в соответствии с руководством:

firewall-cmd --zone=trusted --add-service openvpn
firewall-cmd --zone=trusted --add-service openvpn --permanent
firewall-cmd --add-masquerade
firewall-cmd --add-masquerade --permanent
VAR=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
firewall-cmd --reload

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

[~]# firewall-cmd --info-zone=FedoraServer
FedoraServer (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  forward: no
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[~]# firewall-cmd --info-zone=trusted
trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: tun0
  sources: 
  services: openvpn
  ports: 
  protocols: 
  forward: yes
  masquerade: yes
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Интересный момент заключается в том, что когда я устанавливаю trustedзону по умолчанию, я могу подключиться к firewalldработающему VPN, при этом NAT работает и у меня есть доступ в Интернет.

Теперь, можно сказать, проблема решена. Но из-за недостатка знаний я беспокоюсь, что могу оставить дыру в безопасности, поскольку зона trustedиспользует target: ACCEPT.

Я прочитал бесчисленное количество тем на StackExchange, форумах Fedora и OpenVPN, а также firewalldдокументации, но безрезультатно. Я чувствую, что мне не хватает базовых знаний о сетях, чтобы разобраться в этом, и я больше не знаю, что искать.

Любая помощь, советы или рекомендации будут оценены по достоинству!

решение1

Вы можете добавить службы в зону Trusted, а затем изменить разрешение на отклонение. Например, чтобы разрешить только OpenVPN и SSH, вы можете сделать это следующим образом:

sudo firewall-cmd --zone=trusted --add-service={ssh,openvpn}
sudo firewall-cmd --zone=trusted --set-target=DROP
sudo firewall-cmd --reload

решение2

Похоже, вы на правильном пути и добились значительного прогресса в настройке сервера OpenVPN на Fedora 35. Основная задача — убедиться, что настройки вашего брандмауэра безопасны и не оставляют ненужных дыр.

Давайте рассмотрим ваши опасения и дадим некоторые рекомендации:

Зона по умолчанию:

Обычно для разных целей используются разные зоны. Если настройка trusted в качестве зоны по умолчанию позволяет работать вашему VPN, это нормально. Однако вы справедливо указали на проблему с target: ACCEPT. В более безопасной конфигурации вы бы хотели ограничить доступ только необходимыми службами.

Зона FedoraServer:

Если вы хотите использовать зону FedoraServer по умолчанию, вам нужно убедиться, что она разрешает необходимый трафик для OpenVPN. Вы упомянули, что OpenVPN работает, когда trusted установлен по умолчанию, поэтому может быть полезно сравнить настройки между двумя зонами. Настройка зоны FedoraServer:

Если вы решили использовать зону FedoraServer по умолчанию, вам необходимо добавить правила, разрешающие трафик OpenVPN. Например:

firewall-cmd --zone=FedoraServer --add-service=openvpn --permanent firewall-cmd --reload

Связанный контент