Unha VPN que conecta pero non chega a nada adoita describirse como un problema de cortalumes, e a solución á que a xente recorre é poñer a interface do túnel nunha zona de confianza. Iso funciona no sentido de que o tráfico comeza a fluír, pero tamén admite moito máis que o servizo previsto. As dúas políticas implicadas son distintas: unha admite o transporte exterior cara a un socket que escoita, e a outra autoriza o tráfico descifrado a chegar a un recurso concreto. Tratalas como un só axuste é o que converte un permiso estreito nun amplo. As dúas decídense en lugares diferentes, e por iso o erro é tan fácil de cometer.

Dúas políticas, un túnel

A política exterior responde a unha pregunta sinxela: pode un paquete desta orixe chegar ao UDP 1194 deste host? A política interior responde a outra: pode o cliente autenticado detrás dese túnel chegar a este destino, con este protocolo, neste porto? A primeira trata dun socket, a segunda dunha ruta, e firewalld modélaas con obxectos distintos porque se deciden en puntos distintos. Unha é unha propiedade dun socket deste host, a outra dunha ruta a través del.

A consecuencia práctica é que un túnel que funciona non di nada sobre a segunda política, e unha segunda política correcta non fai innecesaria a primeira.

Admita o listener exterior real

Comece inspeccionando o que xa está asignado en lugar de supoñelo. Lea as zonas activas, enumere a zona que realmente transporta a entrada e comprobe a definición do servizo instalado, porque o nome dun servizo describe un conxunto de portos e non di nada sobre se o listener deste servidor coincide con el.

firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --info-service=openvpn

Se o listener é realmente UDP 1194 nesa zona, abra ese porto e transporte especificamente, e despois faga persistente a mesma regra específica unha vez que a probase. Comprobe tamén as asignacións por orixe, porque unha zona ligada a un rango de orixes pode capturar o tráfico antes de que a zona da interface o vexa.

Autorice o destino descifrado por separado

Unha conexión a un servizo que se executa no propio servidor VPN é política de entrada local. Unha conexión reenviada a outro host da LAN necesita política de reenvío, o reenvío habilitado no núcleo e unha ruta de resposta — tres requisitos separados que a xente adoita colapsar nun. Os obxectos de política modernos de firewalld describen o tráfico dirixido entre unha zona de entrada e unha de saída, e ese é o lugar correcto para expresar que orixes VPN poden chegar a que servizos privados.

Defina explicitamente as orixes permitidas e deixe que todo o demais caia nunha denegación. Un permiso para o servizo exterior non é esa política, por moito que o pareza a disposición das zonas.

Por que confiar na interface é o atallo equivocado

Pór a interface do túnel nunha zona cuxo destino o acepta todo admite todo o tráfico descifrado cara a cada servizo que o host expón, incluídos os que non revisou. Reorientar a zona de confianza para que sexa restritiva nunha máquina en produción é peor, porque outras interfaces e rangos de orixe poden depender xa do seu significado e cambiarán de comportamento cando a edite. Se precisa unha política estreita, cree unha; non reutilice unha zona compartida.

Manteña tamén estable a asignación de zona do túnel a través do compoñente que posúa esa configuración. Perder a asignación ao reiniciar produce un fallo que parece un problema de regra de cortalumes e en realidade é un problema de persistencia.

Verifique tres cousas, incluída unha denegación

Probe a conexión exterior desde fóra, probe un servizo interior autorizado desde un cliente conectado e probe un servizo que debería seguir sendo inalcanzable. A terceira proba é a que distingue unha política dun efecto secundario, e é a que a xente omite porque todo parece funcionar. Se o servizo denegado responde, admitiu unha zona en lugar dun servizo.

Anote a zona, o porto, o transporte e o obxecto de política nas notas do servidor. Se non, o próximo cambio neste host comezará desde a mesma suposición.

Artigos relacionados