Autenticación de redirección obligatoria bajo HTTPS

El requisito inicial y directo para el acceso de seguridad de la red a los equipos terminales es hacer cumplir su legalidad de autenticación.

La autenticación original basada en la redirección HTTP no es válida porque HTTP no es seguro. Y todos los navegadores obligan a la tecnología HSTS a usar solo HTTPS.

¿Cómo se puede usar la redirección para la autenticación bajo HTTPS?

Nos inspira cuando nos alojamos en hoteles y cuando volamos. Después de acceder al WIFI gratuito provisto, será redirigido.

La conclusión es engañar al sistema operativo para que envíe HTTP.

experiencia técnica

Los productos de acceso a la red pueden verificar que los dispositivos de punto final sean seguros, utilizando tecnología de autenticación de portal cautivo para lograr esta verificación.

  1. Autenticación de portal cautivo (portal cautivo), después de que el terminal está conectado a la red, la página de autenticación del navegador se fuerza a aparecer y el usuario se ve obligado a usar la red después de la autenticación
  2. HSTS (HTTP Strict Transport Security), para evitar ataques de intermediarios de MiTM, el navegador se ve obligado a usar HTTPS para establecer una conexión con el servidor y los usuarios no pueden enviar solicitudes HTTP.
  3. La implementación del portal cautivo se basa en el secuestro HTTP por etapas. Cuando el dispositivo está conectado a la red, después de obtener la dirección IP local y la dirección de la puerta de enlace a través del servicio DHCP, la solicitud HTTP enviada se secuestra y se redirige a la página de autenticación HTTP especificada.

Hay un problema

  1. Cuando el terminal del usuario acceda al sitio web HTTPS manualmente con un navegador después de conectarse a la red, la respuesta de redirección devuelta al navegador del terminal advertirá porque el navegador verifica que el certificado del servidor no coincide y no se puede implementar la autenticación obligatoria, lo que hace que esta solución técnica no es válida. como se muestra en la imagen
  2. Cuando la red del terminal de usuario está en línea, el servidor de administración y control implementa la política de acceso, desconecta la red antes de la autenticación y pasa a la autenticación después de que el navegador envía HTTP y es redirigido por el servicio de acceso. Debido a la caché de nombre de dominio HSTS prefabricada del navegador o la compatibilidad del servidor con la tecnología HSTS, el navegador convierte HTTP a HTTPS a la fuerza, lo que hace que el navegador verifique que el certificado del servidor no coincida y advierta, lo que invalida esta solución técnica.
  3. El sistema de acceso original implementa la función de autenticación basada en la redirección http del navegador, pero falla en https, el certificado de error no coincide y no se puede implementar la autenticación obligatoria, lo que invalida esta solución técnica.

Un mecanismo que puede aprovechar el sistema operativo

Sistema operativo: bajo Windows/Linux/MacOS/Android/iOS, cuando se conecta por primera vez a la red, puede detectar si se requiere autenticación, primero detectar si hay un portal cautivo y luego realizar la autenticación

  1. Una vez que el sistema operativo del terminal está conectado a la red, detecta si está bajo la puerta de enlace de autenticación e intenta conectarse a la URL HTTP especificada varias veces, con un tiempo de espera máximo de 30 segundos.
  2. Si el servicio especificado devuelve un código de estado 204, es decir, no se encuentra ningún portal cautivo y no se requiere autenticación
  3. Si el servicio especificado devuelve autenticación de redirección HTTP, es decir, autenticación de portal cautivo, la red se liberará después de la autenticación.

Figura 1 OS envía una sonda

Figura 2 El sistema operativo recibe el estado 204 sin portal cautivo

A continuación se muestran las direcciones URL del portal cautivo de la sonda parcialmente reparadas

Windows :http://www.msftconnecttest.com/connecttest.txt
Google:http://www.gstatic.com/generate_204 / , ...
Android:https://www.google.com/generate_204,...    
小米: http://connect.rom.miui.com/generate_204
华为: http://connectivitycheck.platform.hicloud.com/generate_204

Cómo usar este mecanismo de OS

Procesado en el conmutador o navegador, induce al sistema operativo a emitir sondas de autenticación de portal cautivo

Ambas opciones tienen sus pros y sus contras y se pueden usar simultáneamente

  • La solución del interruptor depende del control del interruptor, y los servicios ordinarios no tienen autoridad para controlar el interruptor.
  • La solución del navegador se basa en que el usuario abra primero el navegador.

Figura 3 Topología de red de redirección HTTPS

Solución técnica basada en conmutador

  1. El interruptor de control del servicio de acceso desconecta el terminal de la red y luego reinicia la red
  2. El reingreso del punto final lo induce a detectar un portal cautivo
  3. Windows intenta forzar la autenticación, visite http://www.msftconnecttest.com/connecttest.txt
  4. El icono de red en la bandeja del escritorio del terminal parpadea, lo que solicita al usuario que haga clic en el icono y el navegador se abrirá y saltará a la página de autenticación.
  5. El tráfico del servicio de acceso intercepta las solicitudes HTTP y las redirige a la página de autenticación
终端               交换机        强制门户          准入服务
 |<---断网后再开网----|             |
 |                   |             |
 |-------------探测强制门户-------->|----捕获HTTP---->|
 |                   |             |                 |
 |<------------发送模仿强制门户的重定向认证------------|

Tabla 1 Redirección HTTPS basada en conmutador

Tecnología de control de implementación de interruptores

  1. El interruptor conectado directamente a la terminal informa la dirección de la terminal al servicio de acceso a través de la trampa snmp
  2. El servicio de acceso desconecta el terminal especificado de la red y vuelve a entrar en la red snmpset [arriba / abajo]

Soluciones técnicas basadas en certificados de navegador

Servidor de comunicación de red del navegador del cliente (duplicación de tráfico)

  1. El navegador inicia una solicitud, como https://www.wechat.cn
  2. El servicio de admisión reconoce la solicitud HTTPS, genera un certificado SSL autofirmado (reutilización de certificado almacenable en caché) y lo devuelve al navegador de la terminal
  3. El servicio de acceso juzga el certificado, incluida la clave pública, y el emisor devuelve el certificado al navegador del terminal
  4. El navegador del terminal determina que el campo del certificado es incorrecto y finaliza el proceso de transmisión de datos posterior. Ingrese al proceso de autenticación del portal,
  5. Inicie una solicitud http y busque el portal http://www.msftconnecttest.com/connecttest.txt
  6. Acceder a la solicitud de identificación del servicio, modificar la dirección del portal y volver al navegador del terminal
  7. El navegador del terminal abre una nueva pestaña y salta a la URL especificada
终端               交换机        强制门户          准入服务
 |-----------HTTPS浏览网页时SSL握手验证证书---------->|
 |<----------------发送自签名的ssl证书----------------|
 |---------判定证书字段有误,进入门户认证流程--------->|
 |                   |             |
 |-------------探测强制门户-------->|----捕获HTTP---->|
 |                   |             |                |
 |<------------发送模仿强制门户的重定向认证------------|

Tabla 2 Basado en la redirección del certificado del navegador

Funciones de implementación

  1. Resuelto el problema de invalidación de la autenticación del portal cautivo bajo HTTPS para productos existentes
  2. Alto rendimiento y autenticación de portal cautivo HTTPS bajo alta concurrencia. Implementación basada en BPF
  3. Omitiendo HSTS para forzar el uso de HTTPS, la autenticación de portal cautivo también se puede implementar cuando se implementa HTTPS
  4. Basado en la sonda HTTP enviada por el portal cautivo, también se puede usar para otros servicios de seguridad

Estructura de directorio de código 1

bpf/ 驱动
   lib/ 协议库
      api.h  公用依赖头
      eth.h  以太帧处理
      ipv4.h ip帧处理
      tcp.h  tcp帧处理
      http.h http处理
      dhcp.h dhcp收集终端信息
      os_filter.h  过滤os
      metrics.h  系统性能
   linux/ 内核类型
   test/ 单元测试
   bpf.c 驱动
Makefile   构建
main.go    加载入口
program.go 加载器
maps.go    内核与用户态传参字典
npf.go     驱动上报
npf_bpfel.go  自动生成加载驱动
snmp.go    snmp下启停端口
tracer.go  traceroute查找终端机器直连的交换机

proceso de conducción

De la capa 2 a la capa 5, eth->ip4->tcp->http

  1. Entrada de red xdp_npf_prog(struct xdp_md* ctx)
  2. struct pkthdr pkt{data_cursor, data_begin, data_end} encapsulación de tramas de datos
  3. Filtrar http y redirigir
    1. config verificar Leer configuración, cambiar ip, etc.
    2. eth analizar y verificar, dejando solo paquetes IP
    3. analizar y verificar ipv4, pasar el paquete del host
    4. tcp analizar y verificar
      1. filtro de opciones tcp, buscar y guardar token en hashmap
    5. los filtros
    6. http analiza y filtra el sistema operativo
    7. buscar hashmap de token
    8. http analizar y verificar
    9. Desactivar al redirigir la depuración nativa de http

proceso de carga program.go npf_bpfel.go

  1. cfg := LoadConfig("config") carga la configuración local
  2. npf := NewNpf(cfg) => cargando el controlador npf.go
  3. loadNpfObjects(&bpf) => npf_bpfel.go inicialización
  4. LoadProg(bpf.npfPrograms.XdpNpfProg.FD()) => programa.ir a cargar
    1. GetIface(linkname) Obtener la interfaz de la tarjeta de red
    2. AttachProg() se iniciará y montará en la interfaz de la tarjeta de red
  5. evento de montaje perf.NewReader(PKT_INFO_EVENTS_MAP)
  6. npf.SetKernelConfig() Construir descarga de configuración
  7. redirectUrlLinux URL de redirección
  8. dirección de la máquina local de ipHost
  9. macHost cambiar mac
  10. npf.Listen() escucha eventos
    1. HandleRecord() analiza eventos de impresión

Flujo de redirección https snmp.go tracer.go

  1. entrada principal snmpscan()
    1. NuevoSnmp(p)
    2. Conectar()
    3. QueryIfaces() Obtener todos los puertos
    4. DownUpIface fuera de la interfaz
    5. Interfaz abierta UpIface
  2. Entrada principal Trace()
    1. DefaultTracer construye un rastreador configurable
      1. Rastro()
        1. silbido
        2. Recibir
      2. toca, graba cada salto
      3. Agregar, agregar después de juzgar que cumple con RTT o srcIP
    2. saltos, filtro inverso todos los saltos, filtro de coincidencia

1

RedirigirHTTPS

Supongo que te gusta

Origin blog.csdn.net/zmule/article/details/126549738
Recomendado
Clasificación