it-swarm-es.com

Acceso remoto a una máquina de Linux detrás de un firewall

Voy a implementar una máquina Linux como una especie de terminal público en una ubicación remota. Me gustaría poder acceder a él de forma remota a través de SSH para el mantenimiento, pero no quiero mantener un puerto abierto en el firewall remoto para las ocasiones raras que necesito para acceder a esta máquina. Sin embargo, tengo un script simple para crear un túnel ssh inverso a una máquina en el exterior, pero preferiría que no tenga que tener que hacer un usuario para hacer nada cuando necesito acceder a ella. ¿Algunas ideas?

Actualización: He decidido ir con mi plan original de un script para crear un túnel de SSH inverso. Si bien otras soluciones sugeridas, como las llamadas portuarias serían más en las líneas de lo que realmente quiero hacer, en este caso, no tengo acceso para configurar el enrutador que no sea caminar un usuario a través de una configuración. Shudder

10
baudtack

Tiene menos que ver con preocuparse por un puerto abierto y más que ver con no querer caminar un usuario a través del proceso de abrir un puerto. No tengo ningún acceso a este enrutador en absoluto, lamentablemente.

Si cambiar el enrutador está completamente fuera de la pregunta, es posible que deba ver una solución P2P o VPN como Hamachi . Si configura el sistema para establecer automáticamente la conexión VPN al inicio, debe poder conectarse cada vez que lo necesite. Hamachi hace toda la negociación del firewall para usted. El único inconveniente es que debe confiar en los servidores de Hamachi que están siendo levantados y funcionales cuando necesite conectarse.

Si tiene un servidor que siempre está arriba, podría configurar : Autossh para que el sistema remoto siempre mantenga un túnel abierto y conectado a su servidor. El único inconveniente es que el sistema remoto está comprometido con los que atacantes obtendrán las claves que se utilizaron para establecer la sesión SSH. Sería muy importante mantener su sistema que acepte la conexión SSH realmente bloqueada.


A continuación se muestra mi respuesta original, asumí que la actualización del enrutador era una opción.

Una solución Es posible que desee investigar si su firewall lo respalda, es golpe de puerto . Con algunos firewalls, debe ser posible enviar un conjunto especial de paquetes que avise el firewall y luego se abre temporalmente a través del firewall.

Hay muchas implementaciones mejor que otras. Algunos usan una criptografía fuerte para que sea casi imposible para una persona sin las claves correctas para enviar el golpe correcto.

5
Zoredache

Suena como si estuvieras buscando Knockd

Puede instalar eso en el propio servidor de Linux, con IPTables para que sea un tipo de firewall de segundo nivel. Incluso con el puerto 22 abierto en el Firewall Frontend, no estaría abierto en el servidor, por lo que PORTSCANS no vería ningún puerto abierto. Luego, cuando envías el "golpe secreto", de repente tienes un camino abierto al puerto 22.

¿Tiene sentido?

4
Brent

Para resumir todas las respuestas:

usa SSH, pero hazla más oscura y segura.

Por seguridad:

  • Asegúrese de que el inicio de sesión root no esté permitido (permitrootlogin no).
  • Limite a los usuarios, que pueden iniciar sesión con la opción de configuración de las opciones, los grupos de alojamiento o los grupos de alquiler.
  • Asegúrese de que use solo 2 versiones del protocolo SSH (Protocolo 2).
  • Es recomendable usar solo las claves de autenticación, pero la contraseña es más conveniente, cuando puede haber una necesidad de conectarse al servidor de vacaciones donde no tiene acceso a las teclas de autenticación.

Por oscuridad:

  • Cambie el puerto SSH a un puerto al azar al azar que recordará, como 20486. Esto se deshará de la mayoría de los bruteforcadores automáticos, pero no lo ocultaría desde todos los puertos de exploración en el servidor.
  • Ocultar la capacidad de conectarse al puerto. Una forma es la eliminación de puertos mencionada en otras respuestas, pero necesita un software especial, que no puede ser accesible en todas partes. Otra opción simple es usar Firewall IPTables con un módulo reciente para crear una regla, lo que permitiría conectarse solo en el segundo o tercer intento. Por lo tanto, usted sabe que tiene que probar varias veces para conectarse con éxito, pero la exploración de puertos simple no revelará el puerto SSH. Las reglas serían similares a las:

iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP
3
Kazimieras Aliulis

Tarea programada El script para su túnel SSH revertido, o abra el puerto de firewall.

Si le preocupa que SSH está abierto al mundo, podría programar la tarea cuando su período de mantenimiento con Scripts IPTables y solo tenga el puerto disponible.

2
sclarson

Mire en puerto-golpeado para abrir su túnel SSH.

Además, ejecute denyhosts para bloquear a las personas después de demasiadas peticiones malas.

Ambos paquetes están disponibles en los repositorios estándar de Ubuntu, Fedora y RHEL.

2
Tim Howland

Adelante y abre un puerto, solo hágalo uno fuera del rango normal. Lo haría un puerto al azar más de 1024. De esa manera, es poco probable que los hackers lo buscarán.

1
Brad Gilbert

No hay razón para no meter el agujero en el firewall si necesita acceso a la máquina de forma remota, sin embargo, con poca frecuencia.

Sin embargo, si aún no lo desea (o no puede) abrir el puerto, un script de shell simple podría monitorear algún recurso disponible de Internet que controla y escucha el comando para iniciar el túnel inverso. Las cuentas de correo electrónico, los canales IRC y las páginas web vienen inmediatamente a la mente como dispositivos de activación.

Por supuesto, esto es mucho más frágil y menos seguro que solo abrir el puerto. Pero estoy seguro de que tienes tus razones.

0
Brian