configuração do firewalld para OpenVPN

configuração do firewalld para OpenVPN

Estou tentando configurar um servidor OpenVPN em um VPS executando o Fedora Server 35. Configurei a VPN e estou funcionando, mas estou tendo problemas com a configuração do firewall.

Esta é minha primeira experiência administrando um firewall, e também não sou nativo de Linux, mas estou tentando aprender. Segui um guia para uma instância do CentOS, mas como o CentOS não existe mais, optei por uma imagem do Fedora no Contabo.

O guia baseou-se no firewalld, e como já estava instalado e parcialmente configurado no meu VPS, fiz o mesmo. Eu sei que esse firewalldé o problema porque quando eu o desligo, o cliente VPN se conecta sem problemas.

Existem 2 zonas ativas configuradas FedoraServere trusted. A FedoraServerzona veio pré-configurada com a imagem VPS e foi configurada como zona padrão. Usei os seguintes comandos para alterar a configuração conforme o guia:

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

As informações da zona atual são as seguintes:

[~]# 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: 

A ressalva interessante é que quando eu defino trustedcomo zona padrão, consigo me conectar à VPN em firewalldexecução, com o NAT funcionando e com acesso à Internet.

Agora, você poderia dizer problema resolvido. Mas devido à minha falta de conhecimento, estou preocupado em estar deixando uma falha na segurança porque a trustedzona usa target: ACCEPT.

Eu li inúmeros tópicos no StackExchange, nos fóruns do Fedora e nos fóruns do OpenVPN, bem como firewallddocumentos sem nenhum resultado. Sinto que estou perdendo o conhecimento básico de rede para descobrir isso e não sei mais o que procurar.

Qualquer ajuda, dicas ou orientações serão apreciadas!

Responder1

Você poderia adicionar serviços à zona confiável e depois alterar a aceitação para descartar Por exemplo para permitir apenas openvpn e ssh você pode fazer assim

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

Responder2

Parece que você está no caminho certo e fez um bom progresso na configuração do seu servidor OpenVPN no Fedora 35. A principal preocupação é garantir que as configurações do seu firewall estejam seguras e não deixem falhas desnecessárias.

Vamos abordar suas preocupações e fornecer algumas orientações:

Zona padrão:

É comum ter zonas diferentes para finalidades diferentes. Se definir confiável como zona padrão permitir que sua VPN funcione, tudo bem. No entanto, você apontou corretamente a preocupação com o alvo: ACEITAR. Em uma configuração mais segura, você desejaria limitar o acesso apenas aos serviços necessários.

Zona do Servidor Fedora:

Se você quiser usar a zona FedoraServer como padrão, você precisa garantir que ela permite o tráfego necessário para OpenVPN. Você mencionou que o OpenVPN funciona quando confiável é definido como padrão, portanto, pode ser útil comparar as configurações entre as duas zonas. Ajustando a zona FedoraServer:

Se você decidir usar a zona FedoraServer como padrão, você precisará adicionar regras para permitir o tráfego OpenVPN. Por exemplo:

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

informação relacionada