Control de acceso basado en Linux

  

¿No hay iptables después de la declaración? Principio de implementación Diagrama de búsqueda y código de búsqueda Ejecución paralela que significa pensamiento y declaración de arte Acerca del control de acceso, la gente ha discutido muchos programas, pero no ¡Siento que algún tipo de plan es universal y no existe tal cosa! RBAC no es adecuado para el sistema operativo de la pila de protocolo macro (UNIX, Linux, etc.) Es posible que los haya revertido en el artículo anterior, ...), pero esto no es un miembro de todas las personas. Sabes, incluyéndome a mi! En resumen, el paquete debe ajustarse al estilo "rápido y fresco" del proceso de procesamiento de la pila del protocolo del kernel, y no puede llevar a una posterior puesta en cola de paquetes, ya que diferentes paquetes pueden pertenecer a diferentes "lógicas de negocios". No puede asumir que la lógica de negocios representada por los siguientes paquetes tolerará demasiado tiempo antes de que se retrase el paquete. Todos firman cualquier protocolo. Para los dispositivos de red, cada paquete es igual, si el dispositivo avanzado es Un flujo de datos es igual. Recuerde, el dispositivo nace para reenviar datos y el destino de los datos no es este dispositivo. Todos los dispositivos intermedios son TMD es una nube, el llamado servidor de aceleración WEB si no está usando el caché, ¡entonces es una estafa! ¿Qué puede ser más rápido con el avance de velocidad de cable? No! No de CAO TMD! Siempre que haya un dispositivo entre el Cliente y el Servidor, se agrega latencia al TMD. ¡No espere que reduzca la latencia a menos que Dios esté estreñido! Por lo tanto, cuando se diseñan dispositivos intermedios, el objetivo definitivamente no es reducir fabulosamente el retraso, sino "ser lo más rápido posible dentro del rango que puede controlar", por lo que el método de procesamiento de la aplicación no es adecuado. No espere utilizar ninguna biblioteca para mejorar la eficiencia. Recuerde, el control definitivo siempre está en manos de los operadores. Siempre en manos de los administradores de red que no entienden la programación, solo cortan el cable de la red por cualquier persona, y luego TCP no puede garantizar que pueda enviarlo con gracia. ¡FIN, quien puede controlar la red puede decidir todo, la eficiencia de la red siempre es más importante que la eficiencia del programa de extremo a extremo! El propósito de este artículo es que puede garantizar el procesamiento local tanto como sea posible de una manera, independientemente de cualquier otra cosa. En la fuerte lluvia de un sábado, emocionado, incitando! No me molesto con la terminología en la boca de la red, y no tengo miedo de la programación. Para el administrador de la red y el programador, quizás Otto von Bismarck solo pueda decir que es desafortunado y enojado. Aunque no entiendo OpenSSL, soy programador!

Después del artículo anterior, "La extensión abstracta de las tablas de enrutamiento de Linux aplicadas a nf_conntrack" señaló que el mecanismo de enrutamiento IP de Linux se puede usar para implementar listas de control de acceso, es decir, ACL de Linux. En ese artículo, Simplemente ilustra la factibilidad de la implementación, pero al final, usé el mecanismo de enrutamiento IP de Linux para guardar una cadena de información para cualquier nf_conntrack. Este artículo describe en detalle cómo implementar el control de acceso.

¿No hay iptables? ¿Por qué necesita implementar un nuevo mecanismo? Porque: 1.iptables se basa en la implementación de Netfilter, por lo que solo se puede implementar el filtrado en serie, es decir, una coincidencia de uno a uno; 2. La velocidad de emparejamiento depende del orden de configuración de las reglas de iptables, y no se puede optimizar uniformemente en el kernel; 3. No me gusta iptables Está desactualizado en la era de varios núcleos, aunque es posible desarrollar una versión paralela basada en Netfilter, pero es demasiado difícil. Por lo tanto, para resolver el problema anterior, decidí implementar un mecanismo de control de acceso adicional que no se base en Netfilter. Obviamente, uno de mis objetivos es que se puedan programar múltiples núcleos durante el proceso de comparación.

Principios de implementación La implementación de un conjunto de mecanismos de control de acceso para datagramas IP no es una cuestión simple. Sin embargo, el marco más básico es muy simple, es decir, basado en la dirección IP de origen y la dirección IP de destino de un paquete. Decide qué puede hacer este paquete. Por supuesto, además de la dirección IP, cualquier campo en el paquete de datos IP puede participar en la coincidencia, e incluso los campos del encabezado del protocolo TCP /UDP pueden participar en la coincidencia, sí, pero este artículo no involucra la situación complicada, son Es fácil extenderse a partir de la idea de este artículo, por lo que este solo usa la dirección IP como un elemento coincidente. Como se describe en "La extensión abstracta de las tablas de enrutamiento de Linux aplicadas a nf_conntrack", se puede almacenar una Acción en una entrada de enrutamiento, pero si se introduce otra IP objetivo del elemento correspondiente, la Acción ya no existirá en la entrada de enrutamiento. El medio entre las entradas de enrutamiento asociadas con la dirección IP de origen y la dirección IP de destino indica que todas las direcciones IP incluidas en la entrada de enrutamiento de origen pueden implementar Acción para todas las direcciones IP incluidas en la entrada de enrutamiento de destino. Las acciones pueden ser todas las acciones posibles, como pasar, rechazar, traducción de direcciones, etc. Si no hay una Acción asociada entre dos elementos de enrutamiento, se ejecuta la Acción predeterminada. Se puede imaginar que una Acción debe tener dos roles: por un lado, se une a la Lista de enlaces de acción del elemento de enrutamiento de origen y, por otro lado, se une a la Lista de enlaces de acción del elemento de enrutamiento de destino para asociar los dos. Al tomar prestada la terminología del modelo de permisos RBAC, puedo pensar en la dirección IP de origen de un paquete como un rol, y la dirección IP de destino del paquete puede considerarse como un recurso. Aquí es solo tomar el término del préstamo, el RBAC real es mejor que yo. Más complicado. Diré más adelante que mi modelo analiza la forma en que el kernel implementa las ACL y los algoritmos, no el propio modelo de ACL. La estructura de datos es más sencilla que la ilustración. Dado que cada Acción está vinculada a dos listas vinculadas al mismo tiempo, una Acción llamada Xnode puede ser:

[plain] view plaincopyprint? 01.struct nf_action_node {02. //struct list_head list; //and Relacionado con el algoritmo, ver nota 1 03. struct hlist_node nf_dst; 04. struct hlist_node nf_src; 05. struct nf_fib_node * dst_node; //puntero inverso, optimización de algoritmo, consulte el algoritmo de búsqueda en la sección 06. struct nf_fib_node * src_node; , optimización de algoritmos, consulte la sección 07. int extra; 08. //int extra_len; 09. //char extra [0]; 10.}; struct nf_action_node {//struct list_head list; //relacionado con el algoritmo, vea Comentario 1 struct hlist_node nf_dst;

Copyright © Conocimiento de Windows All Rights Reserved