¿Es posible acceder a SSH a un servidor con una subred mal configurada?

18

Tenemos un servidor donde uno de nuestros ingenieros configuró mal la subred y ahora estamos bloqueados de este servidor y el único acceso que sé que funcionaría es una consola en serie de IDC (significa pedirle a un ingeniero de IDC que nos ayude con esto) .

Lo que ha sido mal configurado:

address 192.168.1.9 # Original address there was
netmask 255.255.255.254 # Misconfigured, originally should've been .240

Por curiosidad, ¿hay alguna forma de evitar llamar a IDC y de alguna manera conectarse a este host a través de SSH (entonces podemos arreglar la configuración)?

Alexey Kamenskiy
fuente

Respuestas:

25

Debe poder iniciar sesión en otro host en el mismo segmento de red. Algunas de las formas de obtener acceso al host mal configurado requieren root en el host intermedio, pero también hay una manera fácil de obtener acceso sin necesidad de root en el host intermedio.

La forma fácil de acceder al host usando IPv6

ssh -o ProxyCommand='ssh -W [fe80::42:ff:fe:42%%eth0]:%p user@intermediate-host' root@target-server

Los siguientes valores de ejemplo de más arriba deben comando para ser sustituidos por valores correctos para su caso de uso: fe80::42:ff:fe:42, eth0, user, intermediate-host, y target-server.

Explicación detallada de cómo funciona.

ProxyCommandes una función ssh para usar cuando no puede abrir una conexión TCP directamente al host de destino. El argumento para ProxyCommandes un comando cuyo stdin / stdout usar en lugar de una conexión TCP.

-Wse usa para abrir un reenvío de un solo puerto y conectarlo a stdin / stdout. Esto encaja muy bien con ProxyCommand.

fe80::42:ff:fe:42%%eth0es la dirección local de enlace del host de destino. Tenga en cuenta que debido al ProxyCommanduso %como carácter de escape, el comando ssh escrito debe usarse %%en esa ubicación. Puede encontrar todas las direcciones locales de enlace en el segmento ejecutando ssh user@intermediate-host ping6 -nc2 ff02::1%eth0.

El uso de direcciones locales de enlace IPv6 para este propósito suele ser la forma más fácil porque está habilitado de forma predeterminada en todos los sistemas modernos, y las direcciones locales de enlace siguen funcionando incluso si las pilas de IPv4 e IPv6 están muy mal configuradas.

Volviendo a IPv4

Si IPv6 está completamente deshabilitado en el host mal configurado (absolutamente no recomendado), entonces puede que tenga que recurrir al uso de IPv4. Dado que IPv4 no tiene direcciones locales de enlace de la misma manera que IPv6, el acceso al host mal configurado mediante IPv4 se vuelve más complicado y necesita acceso de root en el host intermedio.

Si el host mal configurado aún podía usar su puerta de enlace predeterminada, podría acceder desde afuera. Posiblemente, la máscara de red mal configurada también rompió la puerta de enlace predeterminada debido a que la pila se negó a usar una puerta de enlace fuera del prefijo cubierto por la máscara de red. Si este es el caso, el host mal configurado solo podrá comunicarse con 192.168.1.8 porque esa es la única otra dirección IP en la subred actualmente accesible para este host mal configurado.

Si tiene un inicio de sesión en 192.168.1.8, es posible que pueda enviar ssh desde allí a 192.168.1.9. Si 192.168.1.8 no está asignado actualmente, puede asignarlo temporalmente a cualquier host en el segmento en el que tiene acceso de root.

kasperd
fuente
¿Y fe80::42:ff:fe:42es la dirección de ...? mi servidor mal configurado supongo?
Alexey Kamenskiy
@AlexKey Sí, debe sustituirse por la dirección IPv6 de enlace local del servidor mal configurado.
kasperd
1
¿Algún ejemplo con acceso a través de IPv4 (en caso de que IPv6 esté deshabilitado)?
Alexey Kamenskiy
@AlexKey En caso de que IPv6 esté desactivado, creo que debe pasar por 192.168.1.8 porque parece ser la única otra IP debajo del prefijo configurado.
kasperd
1
@Lenniey aparentemente por razones como esta pregunta (al menos).
Alexey Kamenskiy
9

kasperdpublicó una gran respuesta lo suficientemente detallada como para que yo pueda aprender cómo puedo recuperarme de la situación en la pregunta. Esta respuesta es exactamente el paso a paso de cómo lo hice.

  1. SSH al servidor en la misma red física
  2. Usando arp -ao ip neighbor listcomo rootencontrar la dirección MAC del servidor mal configurado.
  3. Usando MAC para convertir el convertidor local, encuentre el vínculo local para un servidor mal configurado
  4. Ahora puede SSH al servidor como cualquier usuario a través de ssh user@link-local%devdonde:
    • usuario: nombre de usuario para el que se nos permite SSH
    • link-local: dirección IPv6 autoasignada recuperada en el paso 3
    • dev es la interfaz física desde la que se puede acceder a este servidor (por ejemplo, eth0)
Alexey Kamenskiy
fuente
2

Debe cargar una dirección IP dentro de la subred configurada de su destino, no solo dentro del rango que realmente desea.

Si envía un paquete a 10.0.0.2 con la subred 255.255.255.248 de, por ejemplo, 10.0.0.220, 10.0.0.2 mirará su máscara de subred para descubrir cómo responder. Como .220 está WAAY fuera de la subred 255.255.255.248, .2 debe enviar la respuesta a la puerta de enlace predeterminada.

Entonces, si puede cargar una dirección IP dentro de la misma subred que .2, por ejemplo. 10.0.0.3, entonces funcionará.

En su caso específico, para 10.0.0.9, la subred 255.255.255.254 solo tiene 1 dirección IP adicional , es decir, 10.0.0.8. Entonces, si puede cargar esa dirección IP, debería poder SSH.

thelogix
fuente