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.
- 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
- 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.
- 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
- 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
- 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.
- 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
- 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.
- 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
- 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
- El interruptor de control del servicio de acceso desconecta el terminal de la red y luego reinicia la red
- El reingreso del punto final lo induce a detectar un portal cautivo
- Windows intenta forzar la autenticación, visite http://www.msftconnecttest.com/connecttest.txt
- 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.
- 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
- 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
- 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)
- El navegador inicia una solicitud, como https://www.wechat.cn
- 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
- El servicio de acceso juzga el certificado, incluida la clave pública, y el emisor devuelve el certificado al navegador del terminal
- 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,
- Inicie una solicitud http y busque el portal http://www.msftconnecttest.com/connecttest.txt
- Acceder a la solicitud de identificación del servicio, modificar la dirección del portal y volver al navegador del terminal
- 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
- Resuelto el problema de invalidación de la autenticación del portal cautivo bajo HTTPS para productos existentes
- Alto rendimiento y autenticación de portal cautivo HTTPS bajo alta concurrencia. Implementación basada en BPF
- Omitiendo HSTS para forzar el uso de HTTPS, la autenticación de portal cautivo también se puede implementar cuando se implementa HTTPS
- 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
- Entrada de red xdp_npf_prog(struct xdp_md* ctx)
- struct pkthdr pkt{data_cursor, data_begin, data_end} encapsulación de tramas de datos
- Filtrar http y redirigir
- config verificar Leer configuración, cambiar ip, etc.
- eth analizar y verificar, dejando solo paquetes IP
- analizar y verificar ipv4, pasar el paquete del host
- tcp analizar y verificar
- filtro de opciones tcp, buscar y guardar token en hashmap
- los filtros
- http analiza y filtra el sistema operativo
- buscar hashmap de token
- http analizar y verificar
- Desactivar al redirigir la depuración nativa de http
proceso de carga program.go npf_bpfel.go
- cfg := LoadConfig("config") carga la configuración local
- npf := NewNpf(cfg) => cargando el controlador npf.go
- loadNpfObjects(&bpf) => npf_bpfel.go inicialización
- LoadProg(bpf.npfPrograms.XdpNpfProg.FD()) => programa.ir a cargar
- GetIface(linkname) Obtener la interfaz de la tarjeta de red
- AttachProg() se iniciará y montará en la interfaz de la tarjeta de red
- evento de montaje perf.NewReader(PKT_INFO_EVENTS_MAP)
- npf.SetKernelConfig() Construir descarga de configuración
- redirectUrlLinux URL de redirección
- dirección de la máquina local de ipHost
- macHost cambiar mac
- npf.Listen() escucha eventos
- HandleRecord() analiza eventos de impresión
Flujo de redirección https snmp.go tracer.go
- entrada principal snmpscan()
- NuevoSnmp(p)
- Conectar()
- QueryIfaces() Obtener todos los puertos
- DownUpIface fuera de la interfaz
- Interfaz abierta UpIface
- Entrada principal Trace()
- DefaultTracer construye un rastreador configurable
- Rastro()
- silbido
- Recibir
- toca, graba cada salto
- Agregar, agregar después de juzgar que cumple con RTT o srcIP
- Rastro()
- saltos, filtro inverso todos los saltos, filtro de coincidencia
- DefaultTracer construye un rastreador configurable
1