GNU/Linux >> Tutoriales Linux >  >> Panels >> Webmin

Cortafuegos Linux

Si su sistema está conectado a Internet, puede ser útil protegerlo con un firewall para evitar el acceso no autorizado. Esta página cubre el proceso de instalación y configuración de un cortafuegos de Linux con Webmin y iptables .

Introducción al cortafuegos con IPtables

Un firewall es un sistema que se protege a sí mismo y a otros hosts en una red de atacantes en redes que no son de confianza, como Internet. Puede bloquear paquetes y conexiones según una variedad de criterios, como la dirección de origen, la dirección de destino, el puerto y el protocolo. Por lo general, un firewall también es un enrutador, que reenvía paquetes entre una red local segura e Internet no confiable; sin embargo, también es posible que un sistema se proteja a sí mismo.

También se puede configurar un sistema de firewall para ocultar múltiples hosts detrás de una sola dirección IP, utilizando un proceso conocido como NAT (traducción de direcciones de red). Por lo general, los hosts ocultos están en una LAN interna que usa una red IP privada (como 192.168.0.0) y el firewall tiene una sola dirección IP de Internet. NAT permite que estos hosts internos se comuniquen con otros en Internet, aunque no tengan direcciones IP públicas reales.

El kernel de Linux ha incluido varias implementaciones de firewall diferentes a lo largo de los años, como IPfwadm e IPchains. La serie 2.4 de kernels incluye el cortafuegos IPtables, que es más potente y flexible que sus predecesores. Todas las distribuciones de Linux que usan el kernel 2.4 tienen habilitado el soporte de IPtables e incluyen los comandos necesarios para configurarlo. Este capítulo y el módulo de Firewall de Linux solo cubren la configuración de un firewall usando IPtables, no ninguna de las implementaciones más antiguas como IPchains o IPfwadm.

Todo el tráfico de la red IP se divide en paquetes, que son fragmentos de datos con información de origen, destino y protocolo. Incluso un flujo continuo de datos, como la descarga de un archivo grande, se divide en paquetes cuando se envía y se vuelve a ensamblar en su destino. Debido a que el firewall de IPtables opera a nivel de IP, todas sus reglas y cadenas evalúan y operan en paquetes individuales, no en conexiones TCP o solicitudes HTTP.

Un firewall de IPtables se compone de tres tipos diferentes de objetos:tablas, cadenas y reglas. Cada una de las tres tablas contiene dos o tres cadenas estándar y posiblemente muchas cadenas personalizadas definidas por el usuario. Cada cadena contiene cero o más reglas, que se aplican a los paquetes recibidos o enviados desde el cortafuegos para determinar su destino. Las tres tablas y sus cadenas estándar son :

Filtrado de paquetes (filtro)
Las cadenas de paquetes INPUT, OUTPUT y FORWARD de esta tabla se aplican a los paquetes recibidos, enviados o reenviados por el cortafuegos, respectivamente. Si el sistema de firewall actúa como un enrutador, solo se aplica la cadena FORWARD a los paquetes enrutados. El tráfico de red destinado al propio sistema es procesado por la cadena de ENTRADA y el tráfico enviado por proceso local por la cadena de SALIDA. Para un sistema que es un enrutador común y no se enmascara, o un sistema que solo necesita un firewall para protegerse, esta es la única tabla a la que se deben agregar reglas.
Traducción de direcciones de red (nat)
Esta tabla se usa solo para paquetes que inician una nueva conexión. Las reglas en su cadena PREROUTING se aplican a los paquetes tan pronto como son recibidos por el sistema para el enrutamiento, y POSTROUTING para los paquetes a punto de salir después del enrutamiento. Las reglas de la cadena de SALIDA se aplican a los paquetes generados localmente para su modificación antes del enrutamiento. Por lo general, se agregan reglas a esta tabla para configurar el enmascaramiento, el proxy transparente o algún otro tipo de traducción de direcciones.
Alteración de paquetes (mangle)
Esta tabla se usa solo para la alteración de paquetes especializados. Contiene dos cadenas:PREROUTING para modificar paquetes antes del enrutamiento y OUTPUT para modificar paquetes generados localmente. Esta tabla rara vez se usa en una configuración típica de firewall.

Cuando una cadena procesa un paquete de red, cada regla de la cadena se ejecuta en orden. Cada regla tiene un conjunto de condiciones que determinan si la regla coincide o no, y una acción que se lleva a cabo en caso de coincidencia. Esta acción puede ser aceptar inmediatamente el paquete, descartarlo inmediatamente, realizar alguna modificación o continuar con la ejecución. Si se llega al final de una cadena, se tomará su acción predeterminada, que generalmente es permitir el paso del paquete.

La siguiente captura de pantalla muestra las tablas y cadenas por las que pasa un paquete y el orden en que se comprueban. Los paquetes que llegan desde la red ingresan al diagrama en la parte superior y son procesados ​​por ambas cadenas PREROUTING. En este punto, se toma una decisión:los paquetes destinados al sistema local van a la izquierda, mientras que los que se reenvían a algún otro destino toman la rama de la derecha. Los que van a la izquierda son procesados ​​por la cadena de paquetes entrantes antes de ser entregados a los procesos locales, como los servidores. Los datos reenviados son procesados ​​por las cadenas de paquetes reenviados y después del enrutamiento antes de enviarse a su destino.

El cortafuegos también puede afectar el envío de paquetes por procesos en el sistema local. Estos se comparan con las tres cadenas de salida y la cadena posterior al enrutamiento antes de transmitirse a través de la interfaz de red adecuada a sus destinos. Esto significa que se puede usar un firewall de IPtables para limitar las direcciones a las que se pueden conectar los procesos locales y los protocolos que pueden usar.


An overview of IPtables

El módulo de cortafuegos de Linux

Este módulo se puede utilizar para configurar un cortafuegos en un sistema Linux con IPtables habilitado o editar cualquier parte de un cortafuegos existente. Almacena la configuración del firewall en un archivo guardado creado y leído por los comandos iptables-save e iptables-restore, no en un script de shell que contiene llamadas al comando iptables. Redhat, Debian y Gentoo Linux usan un archivo guardado como este como estándar, que Webmin conoce y con el que trabajará.

Si ha creado manualmente un firewall usando un script de shell y desea usar este módulo para editarlo a partir de ahora, tendrá que convertirlo a un archivo guardado de IPtables para que Webmin pueda editarlo.

Lo que tiene que hacer es detener la ejecución de su script personalizado en el momento del arranque y decirle al módulo que cree su propio script de configuración de firewall en su lugar.

Esto también se aplica a los cortafuegos creados por herramientas como YaST o fBuilder, que escriben scripts de shell de comandos de iptables. A menos que la herramienta también pueda editar un archivo guardado de IPtables (como knetfilter), no debe usarse junto con el módulo de firewall de Linux de Webmin, o probablemente sobrescribirán la configuración de cada uno.

Cuando ingresa al módulo desde la categoría Redes, la página principal generalmente mostrará una lista de todas las cadenas y reglas en la primera tabla que contiene alguna (generalmente Filtrado de paquetes ), como se muestra a continuación. Sin embargo, si Webmin detecta que los comandos iptables o iptables-save no están instalados, se mostrará un mensaje de error en su lugar:busque en su CD de distribución o sitio web un paquete que los contenga.

Si es la primera vez que usa el módulo y aún no se ha configurado un firewall en su sistema, la página principal mostrará un formulario para simplificar la creación inicial del firewall. Se mostrarán tres opciones:seleccione una y haga clic en Configurar cortafuegos botón para configurarlo. Si es necesario, Webmin también mostrará un ¿Habilitar firewall en el momento del arranque? casilla de verificación que, si se selecciona, hará que se cree un script de inicio para que el firewall también se habilite en el momento del inicio. Las opciones de configuración del cortafuegos son :

Permitir todo el tráfico
Si se selecciona, el firewall se creará 'vacío' y se permitirá el paso de todo el tráfico.
Hacer la traducción de direcciones de red en la interfaz externa
El cortafuegos se configurará para NAT, de modo que los hosts en una LAN interna puedan acceder a Internet a través de un host con una sola dirección IP pública. Debe seleccionar la interfaz de red que está conectada a Internet de la lista junto a esta opción, como ppp0.
Bloquear todas las conexiones entrantes en la interfaz externa
Si se elige, el firewall se configurará para bloquear todo el tráfico que ingrese a su sistema en la interfaz de red seleccionada, excepto las conexiones establecidas, las respuestas de DNS y los paquetes ICMP inofensivos. La interfaz que seleccione debe ser la que está conectada a Internet, como ppp0.

Si esta es la primera vez que se usa el módulo y Webmin detecta que ya existe un firewall en su sistema, se mostrarán sus reglas y se le pedirá que lo convierta en un archivo guardado para que el módulo se pueda usar para editarlo. . Si elige hacer esto haciendo clic en Guardar reglas de firewall botón, todas las tablas, cadenas y reglas existentes se registrarán de forma segura. También se mostrará una casilla de verificación *¿Habilitar firewall en el momento del arranque?* si es necesario, que si se selecciona hará que Webmin cree un script de arranque para activar las reglas de firewall guardadas en el momento del arranque.

Si elige convertir una configuración de firewall existente creada manualmente, asegúrese de deshabilitar cualquier script existente que lo configure en el momento del arranque. De lo contrario, se ejecutarán tanto el script anterior como el creado por Webmin, lo que posiblemente provoque que las reglas configuradas en este módulo sean canceladas por la configuración manual anterior.

Permitir y denegar tráfico de red

Para restringir los tipos de conexiones y paquetes que su firewall aceptará o reenviará, debe crear reglas de firewall adicionales. El mejor lugar para estas reglas es el Filtrado de paquetes en la tabla Paquetes entrantes o Paquetes reenviados cadena. Si su cortafuegos actúa como un enrutador y desea proteger los sistemas en la red segura a la que está conectado, pero no el cortafuegos en sí, los paquetes reenviados se debe usar la cadena. Sin embargo, si desea proteger tanto el firewall como otros sistemas a los que se enruta, las reglas deben agregarse a los Paquetes entrantes cadena.

También es posible restringir el envío de datos por parte de su sistema, que pueden provenir de procesos locales o ser reenviados desde otros hosts. Para hacer esto, puede agregar reglas a los Paquetes salientes cadena. Esto puede ser útil para limitar a qué direcciones y puertos pueden conectarse los usuarios locales, si lo desea.

Para crear una nueva regla para bloquear el tráfico, los pasos a seguir son :

  1. En la página principal del módulo, seleccione Filtrado de paquetes de la lista junto a Mostrar IPtable y luego haga clic en él para cambiar a la tabla de filtrado.
  2. Para agregar una regla que se aplique a todo el tráfico entrante, haga clic en Agregar regla botón en los Paquetes entrantes sección. Si desea restringir solo el tráfico reenviado, haga clic en el botón debajo de Paquetes reenviados. De cualquier manera, accederá al formulario de creación de reglas, que se muestra en la captura de pantalla a continuación.
  3. Cambie la acción a realizar para soltar , de modo que el cortafuegos descarte silenciosamente los paquetes que coincidan con esta regla.
  4. En los Detalles de la condición seleccione las condiciones que determinan qué paquetes coincidirán y, por lo tanto, se eliminarán. Solo los paquetes que cumplan todas las condiciones que no estén configurados en Ignorar será descartado. Algunos ejemplos de las condiciones a seleccionar para bloquear ciertos tipos de tráfico son :
    Bloquear todas las conexiones a un determinado puerto TCP
    Establecer el Protocolo de red campo a Igual y seleccione TCP . Para bloquear un puerto, siempre se debe seleccionar un protocolo. Establecer el Puerto TCP o UDP de destino a Igual e ingrese un número de puerto en Puerto(s) campo al lado. Puede bloquear varios puertos ingresando una lista de números separados por comas en el campo Puerto(s), o bloquear un rango completo seleccionando Rango de puertos e ingresando los puertos de inicio y finalización en los campos al lado.
    Bloquear todo el tráfico de una dirección en particular
    Establezca la *dirección o red de origen* en igual e ingrese la dirección IP para bloquear en el campo al lado. También puede bloquear una red completa ingresando un par de red/prefijo como 130.194.164.0/24 en el campo Establecer el Estado de conexión a No es igual y seleccione Conexión existente del menú al lado. Este paso permitirá que su sistema se conecte a las direcciones bloqueadas, pero no al revés.
    Bloquear el tráfico a una dirección en particular
    Establezca la dirección o red de destino a Igual e ingrese la dirección IP o la red para bloquear en el campo al lado. Debido a que esto evitará que el sistema bloqueado se conecte también al suyo, puede ser una buena idea establecer el Estado de conexión a No es igual y seleccione Conexión existente del menú al lado. En todos los casos, suele ser una buena idea configurar la interfaz entrante a la interfaz de red que está conectada a Internet (como ppp0), para que la restricción no se aplique a las conexiones desde su LAN local.
  5. Cuando haya terminado de seleccionar las condiciones, haga clic en Crear botón. Siempre que no haya errores en su entrada, volverá a la página principal del módulo en la que se enumerará la nueva regla.
  6. Para activar la nueva regla, haga clic en Aplicar configuración botón en la parte inferior de la página.


El formulario de creación de reglas

Las reglas de cada cadena se evalúan en orden de arriba a abajo, y la acción que se lleva a cabo se determina según la que coincida primero. Si ninguno coincide, se toma la acción predeterminada de la cadena, que generalmente es aceptar el paquete. Puede utilizar este orden de evaluación para crear una regla que permita una sola dirección IP, seguida de una regla para denegar una red completa. El efecto final será que todos los hosts dentro de la red serán denegados excepto uno.

Dado que el orden de las reglas es importante, es posible que a veces desee agregar una regla en medio de una cadena existente. Para hacer esto, use uno de los botones de flecha debajo de Agregar de una cadena columna en la página principal del módulo para crear una nueva regla antes o después de una existente.

Las acciones más comunes y sus significados se enumeran a continuación. No todos están disponibles en todas las cadenas y tablas.

No hacer nada
Si una regla con esta acción coincide, no se hará nada y el procesamiento continuará con la siguiente regla.
Aceptar
Los paquetes coincidentes se aceptarán de inmediato y no se realizará ningún otro procesamiento en la cadena. Sin embargo, las reglas en otras tablas aún pueden afectar el paquete.
Soltar
Los paquetes coincidentes se descartarán silenciosamente, como si nunca se hubieran recibido. No se llevará a cabo ningún otro procesamiento en esta cadena ni en ninguna otra.
Espacio de usuario
Los paquetes se pasarán a un proceso de espacio de usuario normal. Esta acción rara vez se usa.
Cadena de salida
Salta inmediatamente al final de la cadena y ejecuta su acción predeterminada en su lugar. Si se usa en una cadena definida por el usuario, el procesamiento volverá a la regla que lo llamó.
Mascarada
Se cambiará la dirección de origen de los paquetes coincidentes para que parezca que provienen del sistema de firewall, y no se procesarán más reglas en la cadena. Cuando se selecciona esta acción, puede usar los Puertos de origen para enmascarar campo para controlar qué puertos utilizará el cortafuegos para las conexiones enmascaradas. Consulte la Configuración de la traducción de direcciones de red sección para más detalles. La Mascarada La opción solo está disponible en la traducción de direcciones de red tabla, en la cadena *Paquetes después del enrutamiento*.
Fuente NAT
Similar a la Mascarada opción, pero más adecuada para sistemas que tienen una dirección IP de Internet fija. Si se selecciona, puede usar las IP y puertos para SNAT campo para controlar cuál está disponible en la traducción de direcciones de red tabla, en los Paquetes después del enrutamiento cadena.
NAT de destino
Los paquetes coincidentes tendrán su dirección de destino y puerto modificados en función de las direcciones IP y los puertos para el campo DNAT. Esta es la base para el proxy transparente, por lo que para obtener más información, consulte Configuración de un proxy transparente sección a continuación. Esta acción solo está disponible en la traducción de direcciones de red tabla, en los Paquetes antes del enrutamiento y Salida cadenas.
Redireccionar
Esta acción redirige todos los paquetes coincidentes a un puerto o puertos en el cuadro de firewall, especificado por el campo *Puertos de destino para redirección*. También se puede utilizar para el proxy transparente, aunque el NAT de destino es más flexible. La acción de redireccionamiento solo está disponible en la traducción de direcciones de red tabla, en los Paquetes antes del enrutamiento y Salida cadenas

También puede elegir la Cadena de ejecución opción para la Acción a tomar , que pasará el paquete a la cadena definida por el usuario o al destino personalizado ingresado en el campo junto a él. Consulte la sección *Creación de su propia cadena* a continuación para obtener más información sobre las cadenas definidas por el usuario. Algunos de los objetivos disponibles son LOG (para registrar paquetes en syslog), MIRROR (para reflejar paquetes de regreso a su remitente) y MARK (para marcar un paquete para condiciones posteriores).

Para cada condición, las opciones Ignorado , Igual y *No es igual* se pueden seleccionar. El primero significa que la condición no se utiliza en absoluto al comprobar si un paquete coincide con la regla. El segundo significa que un paquete debe cumplir la condición para que coincida con toda la regla, y el tercero significa que el paquete NO debe cumplir la condición para que se ejecute la regla. Si, por ejemplo, la condición "Interfaz entrante" se estableció en "No es igual" y se seleccionó eth0, la regla coincidiría solo con los paquetes que ingresan en cualquier interfaz, excepto la tarjeta Ethernet principal.

Debido a que casi todos los protocolos de red involucran tráfico que fluye en dos direcciones, intentar bloquear solo el tráfico entrante desde alguna dirección utilizando la dirección o red de origen La condición también bloqueará las conexiones a la dirección, porque los paquetes de respuesta que forman parte de la conexión se eliminarán. Lo mismo ocurre con el bloqueo de datos entrantes en un puerto en particular utilizando el Puerto TCP o UDP de destino Condición:si en el caso improbable de que el puerto de origen elegido al azar de una conexión de su sistema coincida con el puerto bloqueado, se eliminarán todas las respuestas. Por estos motivos, suele ser una buena idea establecer el Estado de la conexión cuando se crean reglas de denegación. condición a No es igual y seleccione Conexión existente del menú al lado. Esto hará que IPtables realice un seguimiento de las conexiones salientes realizadas por su servidor y no las bloquee.

Como puede ver, hay muchas condiciones diferentes disponibles que se pueden combinar para crear reglas bastante complejas. Para obtener más información sobre lo que hace cada una de las condiciones disponibles, consulte la sección *Condiciones de la regla de firewall* a continuación. Debido a que hay tantas condiciones, Webmin le permite crear nuevas reglas que son casi idénticas a las existentes. Para hacer esto, haga clic en una regla existente para editarla y use la Regla de clonación en la parte inferior de la página para ir al formulario de creación de reglas con todas las condiciones y acciones establecidas según la regla original.

Cambiar la acción predeterminada de una cadena

Los paquetes que no coincidan con ninguna regla de una cadena se procesarán mediante la acción predeterminada, que suele ser aceptar el paquete. En la página principal del módulo, la acción predeterminada para cada cadena se muestra junto a Establecer acción predeterminada para botón. Para cambiarlo, los pasos a seguir son :

  1. Seleccione la nueva acción en el menú junto al botón *Establecer acción predeterminada en*. Solo el Aceptar , Soltar , Espacio de usuario y Cadena de salida las acciones están disponibles:consulte la sección *Permitir y denegar tráfico de red* más arriba para conocer sus significados. Por lo general, solo Permitir y soltar tiene sentido como una acción predeterminada.
  2. Haga clic en Establecer acción predeterminada en botón para guardar el nuevo valor predeterminado.
  3. Si cambia a Soltar , agregue las reglas de firewall adicionales necesarias para que su sistema aún pueda acceder a otros servidores y brindar servicios importantes.
  4. Cuando termine, haga clic en Aplicar configuración para activar el nuevo valor predeterminado.

Simplemente cambiando la acción predeterminada a Soltar para los paquetes entrantes es una manera fácil de desconectar totalmente su sistema de la red y posiblemente dejarlo inutilizable. Antes de hacerlo, asegúrese de permitir al menos los siguientes tipos de tráfico :

  • Todas las conexiones establecidas. Crear un Permitir regla con el Estado de conexión establecido en Igual y Conexión existente elegido.
  • Conexiones relacionadas con las que se establecen, como conexiones de datos FTP. Crear un Permitir regla con el *Estado de conexión* establecido en Igual y Conexión relacionada elegido.
  • Todo el tráfico en la interfaz loopback. Crear un Permitir regla con interfaz entrante establecido en Igual y lo elegido.
  • Tráfico de su sistema a sí mismo en sus interfaces de red principales. Para cada interfaz, cree una regla Permitir con la *Dirección o red de origen* y la Dirección o red de destino establecido en la dirección IP de la interfaz.
  • Tipos ICMP seguros. Crea cuatro Permitir reglas con el *tipo de paquete ICMP* establecido en Equals y respuesta de eco, destino inalcanzable, extinción de fuente y tiempo excedido elegidos.

Cambiar la acción predeterminada para los paquetes reenviados a Drop no causará tantos problemas, solo será el equivalente a desactivar el reenvío por completo. Cambiar la acción predeterminada para los paquetes salientes a Drop es una mala idea ya que cortará todo el acceso a la red y probablemente tenga muy poco sentido en la mayoría de los casos.

Editar reglas de cortafuegos

Webmin se puede usar para editar cualquiera de las reglas de firewall existentes que se hayan creado manualmente, en otro programa o usando este módulo. Aunque el módulo no es compatible con todas las opciones de acción y condición de IPtables disponibles, aún puede usarlo para editar reglas que contengan opciones desconocidas de manera segura. Solo se pueden cambiar los que conoce Webmin, y los demás se dejarán intactos.

Para editar una regla, los pasos a seguir son :

  1. En la página principal del módulo, seleccione la tabla en la que se encuentra la regla de la lista junto a Mostrando IPtable botón antes de hacer clic en él.
  2. Haga clic en la acción de la regla que desea cambiar en la tabla para su cadena. Esto lo llevará a un formulario de edición, que es idéntico al formulario de creación que se muestra en la Figura 19-3.
  3. Cambie la acción o cualquiera de las condiciones y haga clic en Guardar botón para volver a la lista de cadenas y reglas. O para eliminar la regla por completo, haga clic en Eliminar botón.
  4. Para activar los cambios, haga clic en Aplicar configuración .

Las reglas se pueden mover hacia arriba y hacia abajo dentro de su cadena usando las flechas debajo de Mover columna de la página principal. Debido a que el cortafuegos evalúa las reglas en orden, cambiar su orden puede afectar qué tráfico se permite o se deniega. Cada vez que cree una nueva regla, se agregará al final de su cadena, por lo que puede ser necesario moverla a la posición correcta para obtener el efecto deseado.

Creando tu propia cadena

Es posible crear sus propias cadenas de reglas personalizadas además de las estándar. La diferencia es que solo se ejecutarán si una regla en una de las cadenas estándar tiene su acción configurada para saltar explícitamente a una cadena personalizada. Cuando finaliza la ejecución de una cadena personalizada (o una regla con la Cadena de salida la acción coincide), la evaluación volverá a la cadena de llamada. Esto significa que las cadenas personalizadas se pueden usar para definir reglas compartidas por varias cadenas estándar, en lugar de repetir las mismas reglas en varios lugares. En cierto modo, una cadena personalizada es como una subrutina en un lenguaje de programación.

Para crear tu propia cadena, los pasos a seguir son :

  1. En la página principal del módulo, seleccione la tabla en la que desea que esté la cadena desde el menú junto a Mostrando IPtable y haga clic en el botón. Las cadenas personalizadas solo se pueden llamar desde otras cadenas en la misma tabla.
  2. Introduzca el nombre de su nueva cadena en el cuadro de texto junto a Añadir una nueva cadena con el nombre y luego haga clic en el botón para crearlo. Los nombres de las cadenas deben ser únicos y, por lo general, se componen solo de letras minúsculas y números.
  3. Una vez que se haya creado la nueva cadena, aparecerá en la parte inferior de la página. Puede usar su Agregar regla botón para agregarle reglas, al igual que con una de las cadenas normales.

Las cadenas personalizadas no tienen una política predeterminada, por lo que no tienen el botón *Establecer acción predeterminada en* en la página principal. Si la ejecución de la cadena llega al final, el control siempre volverá a la persona que llama. Sin embargo, las cadenas personalizadas se pueden eliminar mediante Eliminar cadena botón debajo de sus tablas de reglas.

Una cadena personalizada puede contener reglas que saltan a otras cadenas personalizadas. Sin embargo, una cadena no puede saltar a sí misma, ni puede crear bucles saltando a otra cadena que vuelve a la primera. Incluso si esto fuera posible, ¡sería una muy mala idea!

Configurar la traducción de direcciones de red

Si tiene varios sistemas en su hogar u oficina conectados por una LAN y solo una dirección IP de Internet, se puede usar la traducción de direcciones de red para brindar a todos esos sistemas un acceso a Internet casi completo. NAT oculta las direcciones de todos los sistemas en la LAN interna detrás de una única dirección de Internet, convirtiendo direcciones y puertos según sea necesario. Esto permite que todos los sistemas internos realicen conexiones a cualquier host en Internet, como servidores web, servidores DNS, servidores POP3, etc. La única limitación es que los sistemas internos no pueden recibir conexiones de otros hosts de Internet, lo que puede causar que algunos protocolos (como telefonía por Internet y juegos en red) fallen.

Debido a esta limitación, los sistemas internos están protegidos de la mayoría de los ataques de otros hosts en Internet, como si tuviera que bloquear todos los paquetes reenviados que llegan a la interfaz externa. NAT también facilita la asignación de direcciones IP, ya que no hay necesidad de preocuparse por quedarse sin direcciones de Internet reales para asignar a hosts internos que realmente no necesitan. Por estas razones, puede tener sentido configurar NAT en su organización aunque no sea totalmente necesario desde el punto de vista de la red.

NAT funciona modificando la dirección de origen y el puerto de los paquetes enviados por hosts internos y enrutados a través del firewall. La dirección de origen siempre se cambia a la dirección IP externa del sistema de firewall y el puerto de origen a un puerto no utilizado elegido al azar. Cuando regresa un paquete de respuesta, su puerto de destino se usa para determinar la dirección IP del cliente interno original y el puerto al que se debe reenviar el paquete.

Para configurar NAT, todo lo que realmente necesita es un sistema con dos interfaces de red:una para la LAN interna y otra que esté conectada a Internet a través de acceso telefónico, RDSI o banda ancha. Una vez que tengas esto, los pasos a seguir son :

  1. En la LAN interna, a la interfaz Ethernet de cada sistema se le debe asignar una dirección en una red IP privada como 192.168.0.0, incluido el sistema de puerta de enlace.
  2. Establezca el enrutador predeterminado en todos los sistemas internos en la dirección IP de LAN del sistema de puerta de enlace.
  3. Asegúrese de que la puerta de enlace tenga habilitado el reenvío de IP en el módulo Configuración de red en Enrutamiento y puertas de enlace. Consulte NetworkConfiguration para obtener más información sobre cómo hacerlo.
  4. En la página principal del módulo Linux Firewall en el sistema de puerta de enlace, seleccione Traducción de dirección de red de la lista junto a Mostrando IPtable botón. Luego haga clic en el botón para mostrar las cadenas en la tabla NAT.
  5. Haga clic en Agregar regla botón en los Paquetes después del enrutamiento que le llevará al formulario de creación de reglas.
  6. Establezca la acción a realizar a Enmascarar .
  7. Para controlar qué puertos utilizará el cortafuegos para conexiones enmascaradas, configure los Puertos de origen para enmascaramiento opción a Rango de puertos e ingrese los números de puerto inicial y final en los campos al lado. Por lo general, basta con seleccionar Cualquiera Permitir que el cortafuegos use cualquier puerto disponible funcionará bien.
  8. Cambiar la interfaz saliente condición a Es igual a y seleccione la interfaz de red externa de la lista junto a ella, como ppp0.
  9. Haga clic en el botón Guardar en la parte inferior de la página para volver a la lista de cadenas y reglas.
  10. Haga clic en Aplicar configuración para activar la nueva regla (y NAT).

Es posible combinar NAT con otras reglas de firewall en el Filtrado de paquetes table para bloquear las conexiones con el host del cortafuegos. También puede anteponer reglas de denegación a la cadena *Paquetes después del enrutamiento* para evitar que ciertos hosts internos accedan a Internet o limitar los puertos a los que se pueden conectar.

Las instrucciones anteriores funcionarán en cualquier red que tenga un sistema de puerta de enlace con una sola dirección IP de Internet. Sin embargo, si la dirección de su puerta de enlace es estática, es mejor seleccionar Source NAT en el paso 6 en lugar de Masquerade . Cuando se utiliza el enmascaramiento, cualquier conexión que el cortafuegos reenvíe se perderá si la interfaz de la red externa deja de funcionar, incluso si vuelve a funcionar con la misma dirección IP. Si la interfaz externa tiene una dirección asignada dinámicamente, esto no importa, ya que las conexiones se perderían de todos modos. Pero cuando se utiliza una dirección IP estática, es posible que se mantenga una conexión incluso durante una breve interrupción de la red.

Para usarlo, en el paso 6 configure la Acción a tomar a Fuente NAT . Luego configure las IP y puertos para SNAT al rango de IP e ingrese la dirección IP externa estática de su sistema en el campo al lado. Todos los demás pasos en el proceso de configuración de NAT son los mismos.

Configurar un proxy transparente

Muchas redes usan servidores proxy como Squid para almacenar en caché los sitios web a los que se accede comúnmente y, por lo tanto, reducen la cantidad de ancho de banda que utilizan los clientes de navegación web. Sin embargo, normalmente cada cliente debe configurarse para usar el servidor proxy en lugar de realizar conexiones directas a sitios web. En una red grande con muchos sistemas de clientes o en un ISP donde son propiedad de muchas personas diferentes, esta configuración individual puede ser difícil. Empeora el hecho de que cada navegador tenga su propia configuración de servidor proxy, por lo que si un usuario instala un nuevo navegador, probablemente no usará ningún proxy de manera predeterminada.

Afortunadamente, existe una solución:el proxy transparente. Si todos los sistemas cliente acceden a Internet a través de una puerta de enlace que ejecuta un firewall de IPtables, se puede configurar para redirigir las conexiones al puerto 80 (utilizado por la mayoría de los sitios web) a un servidor proxy en algún otro sistema. Esto significa que los clientes no necesitan estar configurados para acceder a un proxy, ya que cualquier solicitud HTTP que realicen se enviará de forma transparente al servidor proxy sin su conocimiento.

Para configurar el proxy transparente, los pasos a seguir son :

  1. En la página principal del módulo Linux Firewall en el sistema de puerta de enlace, seleccione Traducción de dirección de red from the list next to the Showing IPtable button before clicking it.
  2. In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all traffic on port 80 forwarded by the firewall system to a proxy server.
  3. Set the Action to take to Destination NAT .
  4. In the IPs and ports for DNAT field, select IP range and enter the address of the proxy server system into the field next to it. If the proxy is running on the same system, enter its Ethernet IP address (not 127.0.0.1). In the field next to Port range , enter the port the proxy server is running on, such as 8080.
  5. Set the Incoming interface to Equals and select the internal LAN interface, such as eth0.
  6. Set the Network protocol to Equals and select TCP .
  7. If the proxy is on another system that is also on the internal LAN, make sure that its connections on port 80 will not be proxied by the firewall as well! To do this, set the *Source address or network* condition to Does not equal and enter the IP address of the proxy server into the field next to it. If the proxy is on a different LAN or is the firewall system, this is not necessary.
  8. Set the Destination TCP or UDP port to Equals and enter 80 into the Port(s) campo.
  9. Click the Create button to save the rule and return to the module's main page.
  10. Click on Add rule under Packets after routing to bring up the rule creation form again. This rule will forward packets back in the other direction from the proxy to the client. If your firewall system is also running the proxy server, this rule is not necessary and you can skip to step 16.
  11. For the Action to take , select Source NAT .
  12. In the IPs and ports for SNAT field, select IP range and enter the LAN IP address of the firewall server into the field next to it.
  13. Set the Destination address or network to Equals and enter the IP address of the proxy server into the field next to it.
  14. Set the Network protocol to Equals and select TCP .
  15. Haga clic en Crear button to add the new rule.
  16. Back on the main page, click the Apply Configuration botón. All packets on port 80 forwarded by your firewall will now be sent to the proxy server instead.
  17. Assuming you are running the Squid proxy server (version 2.4 or above) on the proxy system, you can use Webmin to configure it. Otherwise, there is no point reading beyond this step.
  18. On the proxy system, enter the Squid Proxy Server module and click on Miscellaneous Options.
  19. Set the HTTP Accel Host field to Virtual , and the *HTTP Accel Port* to 80 .
  20. Set both the HTTP Accel With Proxy and *HTTP Accel Uses Host Header* fields to Yes.
  21. Finally, click Save to return to the main page of the Squid module, and click the Apply Changes link near the top of the page to activate the new configuration.

From now on, any HTTP requests on port 80 forwarded by your firewall will be sent to the proxy server for processing. Transparent proxying can be safely used at the same time as conventional NAT by creating a masquerade rule in the packets after routing chain, as explained in the instructions in the *Setting up network address translation* section above.

Setting up port forwarding

On a network that uses NAT to hide internal systems from the Internet, outside hosts cannot connect directly those on the internal network. This is great for security, but can be annoying if there is some internal service that you do want to make available to the outside world. For example, your mail server system may not be the firewall host, which would normal make it inaccessible from the Internet. Fortunately, there is a solution to this problem - port forwarding.

This lets you re-direct all connections to some port on the firewall system to a different host and port on your internal network. For a mail server, all data received on port 25 might be send to the same port on the host that is actually being used to host user email. Of course, this would make it impossible for your firewall system to receive email itself.

To set up port forwarding, follow these steps :

  1. On the main page of the Linux Firewall module on the gateway system, select Network address translation from the list next to the Showing IPtable button before clicking it.
  2. In the Packets before routing section, click on Add rule to go to the rule creation form. The rule being added will redirect all external traffic received by the firewall to some internal address.
  3. Set the Action to take to Destination NAT .
  4. In the IPs and ports for DNAT field, select IP range and enter the address of the internal host into the adjacent text box, such as 192.168.1.10 . In the Port range box, enter the port number on the internal host to which data should be sent, such as 25 for SMTP, 110 for POP3 or 80 for HTTP.
  5. Set the Network protocol to Equals and select TCP .
  6. In the Destination TCP or UDP port field, select Equals from the menu and enter the external port number for which forwarding should be done into the adjacent text field. Typically this will be the same as the port entered in step 4.
  7. Presiona Guardar button to create the rule and return to the main page, and then click the Apply Configuration botón.

The only problem with this method is that connections from inside your network to the firewall system will not be forwarded to the other host.

Firewall rule conditions

When creating a firewall rule, you can select many different conditions to control which packets the rule matches. A rule's action will only be executed if all the conditions are matched. Each condition can be in one of three states, chosen by the menu next to it on the rule creation form :

  • Ignore The condition will be totally ignored when deciding whether the rule matches or not.
  • Equals The rule will only match if the packet matches the address, port, interface or whatever was selected for this condition.
  • Does not equal The rule will only match if the packet does NOT match whatever was selected for this condition.

The available conditions and what each matches are listed in the table below. Note that some are not available in all tables and chains.

Remember that each condition is applied on a per-packet basis, and that a single TCP connection may involve multiple packets flowing in both directions.

Contenido

Véase también

  • Shoreline Firewall
  • Shorewall6 Firewall
  • FirewallD

Webmin
  1. Introducción a los cortafuegos de Linux

  2. Espacios de nombres de Linux

  3. Cómo deshabilitar el firewall en CentOS 8 Linux

  4. Cómo registrar paquetes descartados de IPTables Firewall de Linux en un archivo de registro

  5. ¿Por qué el puente de Linux no funciona?

CortafuegosD

Cortafuegos IPFilter

Cortafuegos de la costa

Comando tcpdump de Linux

Cómo configurar el cortafuegos UFW en Linux

Los 5 mejores cortafuegos de Linux