Anonimizar OpenVPN Permitir acceso SSH al servidor interno


10

Estoy usando una VPN anónima, pero quiero acceso SSH a la computadora interna.

¿Cómo accedo a mi computadora interna a través de SSH? Cuando hago ssh 98.123.45.6 , la conexión agota el tiempo de espera.

  • Dirección IP del proveedor de cable: 98.123.45.6
  • IP anónima a través de VPN: 50.1.2.3
  • Computadora interna: 192.168.1.123

Al buscar, encontré recomendaciones para configurar reglas de iptables, reglas de enrutamiento o agregar ListenAddress a sshd_config. ¿Cuál de estos se aplica a mi caso?

Aquí está mi ruta :

Tabla de enrutamiento IP del núcleo
Destination Gateway Genmask Flags Referencia métrica Uso Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
loopback * 255.0.0.0 U 0 0 0 lo
predeterminado 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
predeterminado ddwrt 0.0.0.0 UG 202 0 0 eth0

Respuestas:


15

Para resolver este problema, necesitará configurar ambos iptables y reglas de enrutamiento. El problema específico con el que se encuentra es que los paquetes SSH salientes se enrutan a través de su interfaz de túnel VPN anónimo en lugar de su interfaz Ethernet. Esto sucede porque su software VPN configuró una regla de enrutamiento para enviar todo el tráfico no controlado a través de la interfaz del túnel. Bueno para anonimizar el tráfico de su red; malo para establecer conexiones SSH a su computadora.

Hay algunas maneras de solucionar este problema, pero compartiré con usted la que me funcionó en una situación idéntica. Esto es lo que debemos hacer:

  1. Cree una nueva tabla de reglas de IP para manejar el tráfico no VPN
  2. Agregue una regla de IP para buscar en nuestra tabla sin VPN cualquier paquete marcado con una máscara de filtro de red específica
  3. Agregue una ruta IP que dirija todo el tráfico en nuestra tabla sin VPN para usar su interfaz Ethernet en lugar del túnel
  4. Agregue una regla de iptables para marcar todo el tráfico SSH con nuestra máscara de filtro de red designada

Nota: Estaba trabajando con Raspbian mientras hacía lo siguiente, por lo que es posible que deba ajustar un poco los comandos para que se ajusten a su distribución.

Crear una nueva tabla de reglas de IP

Comience por inspeccionar el archivo de definición de tabla de iproute2. Queremos asegurarnos de no usar el nombre o el número de ninguna tabla de reglas existente.

cat /etc/iproute2/rt_tables

Probablemente verá algo en este sentido:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Elija un número arbitrario y un nombre para su nueva tabla de reglas, cualquier cosa que no se haya usado anteriormente. Usaré el número 201 y el nombre novpnpara el resto de esta respuesta.

Agregue una definición directamente al archivo de definición o edítela en el editor de texto que elija:

echo "201 novpn" >> /etc/iproute2/rt_tables

Agregue una nueva regla de IP para buscar la tabla sin VPN

Verifique las reglas de ip existentes que se ocupan de las máscaras de netfilter:

ip rule show | grep fwmark

Si grep no muestra nada, estás libre. Si imprime algunas líneas, tome nota del número hexadecimal a la derecha de la palabra fwmarken cada línea. Deberá elegir un número que no esté actualmente en uso. Como no tenía reglas fwmark existentes, elegí el número 65.

ip rule add fwmark 65 table novpn

Lo que esto hace es que los paquetes con netfilter mask 65 busquen en nuestra nueva novpntabla las instrucciones sobre cómo enrutar los paquetes.

Dirija todo el tráfico en nuestra nueva tabla para usar la interfaz Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Lo importante a tener en cuenta aquí es dev eth0. Esto obliga a todo el tráfico que pasa a través de la novpntabla a usar solo la interfaz Ethernet de hardware, en lugar de la interfaz de túnel virtual que crea su VPN.

Ahora sería un buen momento para vaciar su caché de iproute, para asegurarse de que sus nuevas reglas y rutas tengan efecto inmediato:

ip route flush cache

Indique a la regla del firewall que marque todo el tráfico SSH con la máscara de filtro de red designada

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Hay demasiadas opciones aquí para que las explique con gran profundidad. Le recomiendo que lea la página del manual de iptables para tener una idea de lo que está sucediendo aquí:

man iptables

En pocas palabras: estamos agregando una regla de salida a la tabla de control del cortafuegos (para el manejo especializado de paquetes) que le indica que marque todos los paquetes TCP que se originen desde el puerto de origen 22 con nuestra máscara de filtro de red 65 designada.

¿Qué sigue?

En este punto, debería estar listo para probar SSH. Si todo va bien, debería recibir el feliz mensaje "iniciar sesión como".

Por razones de seguridad, le recomiendo que indique a su firewall que descarte cualquier solicitud SSH entrante desde la interfaz del túnel:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Tenga en cuenta que todas las instrucciones anteriores son transitorias (excepto la creación de la ID de la tabla de reglas): se borrarán la próxima vez que reinicie su computadora. Hacerlos permanentes es un ejercicio que te dejo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.