Permitir acceso a todos los puertos en IP pública solo cuando se conecta usando VPN exceptuando SSH (puerto 22)

Así que comencé a usar mi VPS (Debian 10) ((2021-09-29) (Linux 4.19.0-18-amd64 #1 SMP x86_64)), que también es mi servidor VPN (IKEV2 (strongswan) y (PPTP)) para instalar OMV y docker, porque antes ese VPS estaba casi inactivo sirviéndome solo como servidor VPN.

El problema es que mi página de administrador de OMV y los contenedores de Docker están expuestos a internet, aunque uso contraseñas muy fuertes, pero dado que es HTTP, creo que no hay mucha diferencia, así que cualquiera que ingrese a miIP pública:81 en sus navegadores podrá abrir mi OMV.

Entonces, ¿debo hacer que solo sea accesible a través de la VPN, excepto para SSH (puerto 22)?

No sé mucho sobre iptables y firewall en sistemas Linux, así que agradecería mucho una solución simple y una explicación.

No creo que esto pueda hacerse sin reglas de iptables\firewall.
La más simple sería ufw.

ADVERTENCIA: si te conectas por ssh podrías perder la conexión si no se hace correctamente. Y no lo he probado.

Es muy simple si conoces los nombres de las interfaces. Solo estableces las reglas en orden y la primera que coincida se aplica, por ejemplo:

Primero elimina todas las reglas previas

    iptables -F  

Primero acepta todo en la interfaz de loopback:

    iptables -A INPUT -i lo -j ACCEPT

Luego permite conexiones entrantes al puerto ssh (no importa en qué interfaz):

iptables -A INPUT -p tcp  --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 

Luego permite conexiones salientes desde el puerto ssh (la conexión debe ser bidireccional):

iptables -A OUTPUT  -p tcp --sport 22  -m state --state ESTABLISHED -j ACCEPT

Permite entrada y salida para la interfaz VPN (suponiendo que sea tun0)

iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT

Finalmente bloquea todo lo demás usando la política predeterminada:

iptables -P INPUT DROP
iptables -P OUTPUT DROP

Cuando llega un paquete, pasa por las reglas en orden. La primera que coincide se aplica y se detiene. Si no hay coincidencias, sigue la política por defecto.

Recuerda que estos cambios no son persistentes tras reiniciar, debes guardarlos con iptables-save.