¿Cómo no interfiere Intel AMT (tecnología de gestión activa) con la pila de host TCP / IP?

15

El kit de desarrollo Intel que he estado usando incluye una función de administración remota (también vea la página de manual de Ubuntu aquí ) que permite reinicios remotos en caso de que el sistema operativo se bloquee.

Tiene la capacidad de escuchar un puñado de puertos (16992 y 16993, para ser específicos) en una dirección IP que comparte con el sistema operativo. (ya sea al espiar las solicitudes de DHCP o al emitir las suyas; no estoy seguro, pero de cualquier manera usa una dirección MAC compartida en este modo)

Lo tengo ejecutándose en una dirección IP separada, porque me preocupa un posible caso de uso: ¿cómo evita AMT que la pila de la red host entre en conflicto con él?

En otras palabras, el software de administración Intel ahora está escuchando [al menos] dos puertos TCP, fuera de banda y sin el conocimiento del sistema operativo. Digamos que inicio una conexión TCP a un host remoto, y la pila de host elige 16992 o 16993 como el puerto local para escuchar [para los paquetes que regresan a la caja].

¿Los paquetes que regresan del host remoto no se "ennegrecen" y nunca llegan al sistema operativo? ¿O hay alguna medida preventiva, como un controlador Intel en el kernel de Linux sabiendo que TCP debe evitar el puerto 16992? (parece poco probable ya que esta es una característica independiente del sistema operativo). ¿O tal vez la interfaz de administración puede reenviar el tráfico enviado al puerto 16992 que no pertenece a una sesión de administración conocida de nuevo a la pila de host?

De cualquier manera, soy reacio a usar esto para cargas intensivas de red hasta que entiendo cómo funciona. Busqué en la documentación de Intel y tampoco pude encontrar nada allí.

Supongo que esto podría probarse iniciando alrededor de 30,000 conexiones TCP y verificando si la conectividad funciona incluso si el puerto se superpone. Pero aún no he tenido la oportunidad de hacerlo.

(Nota al pie: me doy cuenta de que esta pregunta es similar a ¿Cómo una computadora basada en Intel vPro mantiene la conectividad IP?, Pero esa pregunta aborda la conectividad en general, no la conectividad a los puertos TCP específicos que se superponen con la pila del host).

mpontillo
fuente
77
Noté que alguien votó para cerrar esto como fuera de tema. En ese caso, me gustaría preguntar: ¿cómo es que esto no es relevante para los administradores de servidores profesionales? Si va a habilitar una tecnología de administración fuera de banda, ¿no le gustaría saber si tendrá un efecto en las comunicaciones de su red?
mpontillo
Supongo que verifica todo el tráfico en esos puertos, y si no es algo que reconoce, lo pasa al sistema operativo. Pero eso es completamente especulación.
Grant
1
Buena pregunta. Estoy pensando que una implementación adecuada de tal característica tendría que usar su propia pila de IP en una dirección MAC diferente para evitar por completo posibles conflictos. No necesita 30000 conexiones TCP para probar conflictos. En su lugar, podría probar algo como nc -p 16992 example.com 22y ver qué sucede.
kasperd
@kasperd gracias; No sabía que pudieras hacer eso fácilmente. Seguí adelante y ejecuté la prueba. No se ve bien para AMT ...
mpontillo

Respuestas:

8

Después de configurar AMT para escuchar en una dirección IP compartida, ejecuté la prueba mencionada por kasperd en los comentarios anteriores. (contra mi propio host remoto con un servidor SSH, no en realidad example.com, por supuesto) Aquí está el resultado:

Caso de prueba positivo (utilizando un puerto no utilizado por AMT):

$ nc -p 16991 example.com 22
SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4
^C
$

Caso de prueba negativo (usando un puerto utilizado por AMT):

$ nc -p 16992 example.com 22
$

(Después de unos minutos, el caso de prueba negativo agotó el tiempo de espera y regresó al indicador de shell).

Como puede ver, los paquetes que regresan al puerto 16992 se descartaron antes de llegar a la pila TCP / IP del host.

Recomendación: si la red confiable es importante para usted, ¡no habilite AMT en la misma dirección IP que su pila TCP / IP de host!

mpontillo
fuente
2

Hay un hilo controvertido en el mapeo del foro de Intel entre la IP del host y la IP del dispositivo Intel AMT con la sugerencia de que

uno debe configurar diferentes direcciones IP para AMT y host cuando se opera con IP estáticas.

y una explicación:

Cuando configura la máquina vPro con IP estáticas, AMT utilizará la dirección de mac llamada mac de manejabilidad que solo se reproduce en modo de IP estática. La dirección mac de capacidad de administración es diferente de la dirección mac presentada por el host.

Confirmo que usar DHCP con AMT y Host conduce a problemas de enrutamiento. por ejemplo, ping engañoso:

64 bytes from 192.168.1.11: icmp_seq=18 ttl=64 time=0.559 ms
64 bytes from 192.168.1.11: icmp_seq=18 ttl=255 time=0.614 ms (DUP!)
64 bytes from 192.168.1.11: icmp_seq=19 ttl=64 time=0.579 ms
64 bytes from 192.168.1.11: icmp_seq=19 ttl=255 time=0.630 ms (DUP!)
64 bytes from 192.168.1.11: icmp_seq=20 ttl=64 time=0.553 ms
64 bytes from 192.168.1.11: icmp_seq=20 ttl=255 time=0.602 ms (DUP!)
Barbacoa
fuente
1

¿Los paquetes que regresan del host remoto no se "ennegrecen" y nunca llegan al sistema operativo?

Todos los paquetes del host remoto con "puertos AMT" nunca llegan a ningún sistema operativo. Son interceptados por Intel ME / AMT. Por defecto son los puertos 16992-16995, 5900 (AMT ver. 6+), 623, 664.

Roman Sevko
fuente
1

Lo que debe tenerse en cuenta es que AMT está pensado como tecnología OOBM de cliente, no como servidor uno. Por lo tanto, sí, puede suceder que su computadora decida usar puertos AMT, pero solo en caso de que lo haya configurado específicamente para hacerlo. La mayoría de los sistemas operativos vienen con puertos efímeros preconfigurados en el rango de 49152 a 65535 como lo sugiere la especificación de la IANA, algunas distribuciones de Linux con 32768 a 61000 y Windows antiguo con 1025–5000.

Entonces, desde mi punto de vista, es seguro usar IP compartida para AMT ya que sus puertos no están en un rango efímero (a menos que sepa lo que hace y cambie esta configuración en particular) y ninguna aplicación debe usarlo como puerto de escucha.

Lukáš Kučera
fuente
-2

Una solución podría ser configurar los puertos para la pila TCP de Windows mediante netsh.

De manera predeterminada, Windows usa el puerto 49152 >> 65636 (o lo que sea el límite superior) Por lo tanto, es muy seguro usar AMT. Puede establecer el rango de puertos con netsh. Por ejemplo, siempre uso alrededor de 1000 puertos para máquinas perimetrales.

Además, Intel elimina los comandos AMT y pasa todo el resto del tráfico en esos puertos (¡16991-16995 en realidad!) Al SO (si hay un SO). Entonces, si tuviera una aplicación que abriera un puerto en el rango de AMT, el tráfico aún pasará a través del sistema operativo a la aplicación, porque como dije, Intel solo elimina los comandos de administración de AMT. Es poco probable que su aplicación envíe comandos AMT.

marca
fuente
44
Esta respuesta supone (1) que está utilizando Windows y (2) que no está utilizando ningún software que pueda intentar utilizar puertos superpuestos de AMT por otros motivos. (es posible que tenga, por ejemplo, una aplicación VoIP que utiliza puertos UDP aleatorios). También hace un reclamo acerca de cómo Intel "elimina" los comandos AMT, lo que se demostró claramente como falso en mi respuesta. ¿Puede proporcionar una referencia para respaldar su reclamo? No me sorprendería si Intel considerara esto un error y lo solucionara un día, pero en el momento en que publiqué mi respuesta, claramente no lo habían hecho.
mpontillo