Firewalls, netfilter / iptables

Las dos cosas necesarias para crear servidores de seguridad y calidad de servicio (QoS) con Linux son dos paquetes llamado netfilter y iproute. Mientras Netfilter es un filtro de paquetes incluidos en el marco del núcleo de Linux 2.4 y 2.6, iproute es un paquete que contiene unas pocas utilidades que permiten a los usuarios de Linux para hacer el enrutamiento avanzado y de tráfico.
Este artículo tiene por objeto introducir las herramientas que utilizará en este artículo. Sin embargo, netfilter y temas iproute son muy grandes, así que lo que voy a tratar de hacer en este artículo es introducir a los lectores que no están familiarizados con el tema, junto con la construcción de una bonita vista a los lectores que ya conocen el tema. Existen dos sitios web con un montón de documentación sobre ambos proyectos de netfilter, http://www.netfilter.org, y para iproute, http://www.lartc.org.

netfilter / iptables

  

netfilter es una parte muy importante del núcleo de Linux en términos de seguridad, destrozando de paquetes, y la manipulación. La parte delantera de Netfilter es iptables, que "dice" el núcleo de lo que el usuario quiere hacer con los paquetes IP que lleguen a, pasando por, o que salgan de la máquina Linux.
Las características más utilizadas de netfilter son el filtrado de paquetes y la traducción de direcciones de red, pero hay un montón de otras cosas que podemos hacer con netfilter, tales como paquetes de calandrado capa 7 de filtrado.
Una explicación sobre la forma en bruto netfilter obras es como sigue:

  • El usuario ordena el núcleo de lo que tiene que hacer con los paquetes IP que pasan por la máquina Linux con la herramienta iptables.
  • El cuadro de Linux a continuación, analiza los encabezados de IP en todos los paquetes que lo atraviesan.
  • Si, al mirar las cabeceras IP, el núcleo se encuentra normas de congruencia, entonces el paquete es manipulado de acuerdo a la regla de correspondencia.

Puede parecer muy simple al principio, pero en realidad es un proceso mucho más complicado. Netfilter tiene unos pocos tablas, Cada uno con un conjunto predeterminado de reglas, que se llaman cadenas. La tabla por defecto cargados en el sistema es la tabla de filtro, que contiene tres cadenas:

  • ENTRADA: Contiene reglas para los paquetes destinados a la máquina Linux en sí mismo.
  • ADELANTE: Contiene reglas para los paquetes que las rutas máquina Linux a otra dirección IP.
  • SALIDA: Contiene reglas para los paquetes generados por la máquina Linux.

A continuación, el flujo de paquetes a través de la pre-enrutamiento de la cadena de la tabla nat, donde podemos hacer DNAT, redirección de puertos, etc
Es lógico que se pueda realizar de la red de traducción de direcciones de destino antes de que el proceso de enrutamiento se produce. Como se verá en el artículo 4, donde hablamos de DNAT con más detalle, DNAT es el proceso de traducción de uno (generalmente pública) la dirección IP a otro (generalmente privados). Esto se hace modificando la dirección IP de destino en el encabezado del paquete IP. netfilter debe hacer antes de que el núcleo toma una decisión de enrutamiento de modo que el núcleo se verá a la nueva dirección IP de destino en el paquete IP.
Después de pasar por las dos cadenas, el kernel de Linux hace una decisión de enrutamiento. Esto no es el filtrado de red de trabajo. Al analizar la dirección IP de destino de la cabecera del paquete IP, la máquina Linux sabe si el paquete tiene que ser enviados en otro lugar o estaba destinado para ello.
Si el cuadro de Linux es el destino de los paquetes IP, el paquete pasa a través de la cadena INPUT de la tabla mangle para calandrado paquete. Posteriormente, el paquete se pasa a la tabla del filtro de la cadena INPUT, donde puede ser aceptado, rechazado o disminuido. Si el paquete es aceptado (por ejemplo, una petición a un servidor web en ejecución de nuestro Linux), el cuadro de Linux genera una respuesta a ese paquete, que pasa a través de la tabla mangle SALIDA primera cadena.
A continuación, el paquete se pasa a través de la tabla nat OUTPUT cadena y la cadena de filtros tabla de salida. En este punto, el mangle de la cadena POSTROUTING y la tabla nat cadena POSTROUTING mesa se analizan y el paquete está listo para ser enviado por la interfaz correspondiente.
Las cadenas se presentan aquí son las cadenas predefinidas de cada tabla (filtro, nat y mangle). Sin embargo, los usuarios pueden configurar las cadenas personalizadas con nombres personalizados, y pasar los paquetes a las cadenas de la cadena predefinida correspondiente. Por ejemplo, si queremos crear algunas reglas para el acceso SSH a la máquina Linux, podemos crear una cadena personalizada denominada SSH, e insertar una regla en la cadena de entrada que indica al kernel para analizar la cadena de SSH para los paquetes entrantes en el puerto 22 TCP /.
Las cadenas predefinidas no se pueden eliminar o cambiar de nombre.

Iptables - Operaciones

iptables tiene una sintaxis algo similar a la de edad ipchains (netfilter para núcleos 2.2). Sin embargo, los conceptos de netfilter para los núcleos 2.4 + son totalmente diferentes de los conceptos netfilters 'para núcleos 2.2.
Las operaciones de iptables se pueden hacer con las cadenas son:

  • Listar las reglas de una cadena (iptables-L Chain).
  • Cambiar la política de una cadena (iptables-P CADENA ACCEPT).
  • Crear una nueva cadena (iptables-N CADENA).
  • Ras una cadena; eliminar todas las reglas (iptables-F CADENA).
  • Borrar una cadena (iptables-D cadena), sólo si la cadena está vacía.
  • Cero los contadores en una cadena (iptables-Z CADENA). Cada regla de cada cadena mantiene un contador del número de paquetes y bytes que acertaron. Este comando restablece los contadores.

Para el L-F,-,-D, y las operaciones de Z, si el nombre de la cadena no se especifica, la operación se aplica a toda la tabla, que si no se especifica por defecto es la tabla filter.
Para especificar la tabla en la que hacemos las operaciones, debemos utilizar el modificador-t, como así iptables-t filter ...

Las operaciones que iptables puede ejecutar en las normas son:

  • Anexar a las reglas de una cadena (iptables-A)
  • Insertar reglas en una cadena (iptables-I)
  • Reemplazar una regla de una cadena (iptables-R)
  • Borrar una regla de una cadena (iptables-D)

Los conmutadores más utilizados son-A y-D (añadir y eliminar reglas). Por lo general, cuando el diseño de servidores de seguridad, las normas se añaden a las cadenas.
Durante el tiempo de ejecución, los usuarios de uso más que yo-A, porque a menudo es necesario introducir normas temporales de la cadena.
iptables-A pone la regla al final de la cadena, mientras que iptables-I lugares de la regla en la parte superior de las otras reglas en la cadena. Sin embargo, puede insertar una regla en cualquier parte de la cadena especificando el lugar donde desea que la regla para estar en la cadena con la opción-i: iptables-I CHAIN 4 insertará una regla en la cuarta posición de la cadena especificada.

La sintaxis para añadir una regla a una cadena es:

iptables-A ... -J ...

Filtrado de especificaciones es una parte de una regla de iptables que es utilizada por el kernel para identificar los paquetes de IP para la que el núcleo es la acción especificada por Target.

Especificaciones de filtrado

Los paquetes IP pueden ser identificados en un gran número de formas mediante la especificación de las interfaces, protocolos, puertos, etc, a las reglas de iptables. La belleza de esto es que podemos mezclar cualquiera de dichas especificaciones, con una gran flexibilidad y una amplia gama de selectores. No estoy planeando para cubrir todos los selectores en profundidad, pero tenga en cuenta que si usted piensa en algo lógico acerca de los paquetes IP, tiene todas las posibilidades de identificar a los paquetes usando las reglas de iptables.
Filtrado de las especificaciones de Capa 2: Las interfaces pueden ser especificados como selectores con-i y los interruptores o.
-i significa "- en la interfaz", y-o para "- out-interface". + Puede ser usado para especificar sólo la cadena a partir de la interfaz, por ejemplo-i eth + coincidirá con todas las interfaces a partir de la ETH de cadena, de modo que hemos especificado todos los interfaces de Ethernet como interfaces de entrada para una sola regla.
Interruptores de la versión corta (por ejemplo,-i) y cambia la versión larga (por ejemplo, "- en la interfaz") no tienen absolutamente el mismo efecto. Alguna gente prefiere usar la abreviatura de interruptores y conmutadores de líneas de comandos largas para los scripts, ya que pueden ofrecer una mejor legibilidad, pero vamos a utilizar sólo cambia poco en este artículo aun en las secuencias de comandos para acostumbrarse a las líneas de comandos mejor.
El signo de exclamación "!" representa una negación y se puede utilizar para especificar en qué interfaz (s) de no aplicar este filtro (por ejemplo,-i! eth1 se no los paquetes en el próximo partido en eth1).

Paquetes analizados en la producción y las cadenas de POSTROUTING no tienen interfaces de entrada, y por lo que no está permitido el uso de la opción-i en esas cadenas.
Además, cadenas INPUT y OUTPUT no tienen interfaz de salida, y por lo que no puede utilizar el modificador-o de las normas en esas cadenas.

Nivel 3: Dirección IP de origen (es) pueden ser especificados utilizando-s, - src, o - la fuente, y la dirección IP de destino (es) con-d, - horario de verano, o - de destino. Las fuentes o destinos pueden ser direcciones IP, subredes, o nombres canónicos (por ejemplo, "-s 217.207.125.58", "-s www.packtpub.com", o "-s 217.207.125.58/32" tienen el mismo efecto). Especificación de nombres canónicos para los hosts que tiene varias direcciones IP se traducirá en añadir el mismo número de normas como el número de direcciones IP, el servidor DNS resuelve para ese host en el momento en que las normas se agregó.

No utilice nombres canónicos sobre las normas de alto riesgo. Por ejemplo, no permiten el acceso SSH desde ahost.anotherisp.com, ya que esta facilidad permitirá que un hombre-en-the-middle.

Capa 4: El protocolo puede ser especificado mediante el modificador-p, que significa "- Protocolo". Los protocolos pueden ser especificados por sus números correspondientes o por sus nombres-TCP, UDP, o ICMP (mayúsculas y minúsculas).
Para el protocolo ICMP, puede especificar los tipos de mensajes ICMP utilizando "- icmp-type". La lista de los mensajes ICMP se puede encontrar mediante el comando "iptables-p icmp - help".
Para el protocolo UDP, puede especificar la fuente o el destino los puertos con "- source-port" o "- Sport» y «- destination-port» y «- dport".
TCP, siendo los más completos de nivel 4 de protocolo, tiene más opciones. Puede especificar, además de origen o destino los puertos para el protocolo UDP, "- tcp-flags", "- syn" y "- tcp-option". Banderas TCP puede ser "SYN ACK FIN RST URG PSH TODOS NINGUNO". "- syn" se utiliza para identificar las conexiones de inicio y es equivalente a «- tcp-flags SYN, RST, ACK SYN». "- tcp-option" seguida de un número coincide con los paquetes TCP con la opción establecida en ese número.

Especificaciones del filtrado se pueden combinar todas las características que acabamos de mencionar, para que podamos tener una combinación de capas 2, 3, y 4 de las especificaciones en la misma norma.

Otra de las cosas bellas sobre netfilter / iptables es que las extensiones de adaptación puede ser desarrollado por separado y se añadió más tarde. En el sitio de netfilter, hay un gran archivo de extensiones de juego llamado "patch-o-matic", en el http://www.netfilter.org/projects/patch-o-matic/index.html.

Una nueva extensión y "atreverse" a iptables planes para ampliar sus capacidades de las capas inferiores a la capa superior del modelo OSI, la capa 7-aplicación.

un artículo presentado por Philip A Clara


Descargo de responsabilidad:Nuestro sitio web no es responsable por el contenido de este artículo. Webarticles es un recurso de información gratuito.
Importante: Este artículo "Firewalls, netfilter / iptables" fue traducida por un software automático. Sentimos pena por los errores de ortografía que pueda haber ocurrido. Gracias por su comprensión.


Online: 250 users browsing the articles directory