Docs Menu
Docs Home
/ /

Configurar Linux iptables Firewall para implementaciones autogestionadas

En los sistemas Linux actuales, el programa iptables proporciona métodos para administrar las capacidades de filtrado de paquetes de red o netfilter del kernel de Linux. Estas reglas de firewall permiten a los administradores controlar qué hosts pueden conectarse al sistema y limitar la exposición al riesgo al limitar los hosts que pueden conectarse a un sistema.

Este documento describe las configuraciones básicas de firewall para los firewalls iptables en Linux. Utilice estos enfoques como punto de partida para su organización de redes más grande. Para obtener una descripción detallada de las prácticas de seguridad y la gestión de riesgos para MongoDB, consulte Seguridad.

Las reglas en configuraciones iptables se dividen en cadenas, que describen el proceso de filtrado y procesamiento de flujos de tráfico específicos. Las cadenas tienen un orden, y los paquetes deben pasar por las reglas anteriores para llegar a las posteriores. Este documento aborda únicamente las dos cadenas siguientes:

INPUT
Controla todo el tráfico entrante.
OUTPUT
Controla todo el tráfico saliente.

Dados los puertos predeterminados de todos los procesos de MongoDB, debe configurar reglas de red que permitan solo la comunicación requerida entre su aplicación y las instancias mongod y mongos apropiadas.

Tenga en cuenta que, por defecto, la política predeterminada de iptables es permitir todas las conexiones y el tráfico a menos que se deshabilite explícitamente. Los cambios de configuración descritos en este documento crearán reglas que permiten explícitamente el tráfico desde direcciones y puertos específicos, utilizando una política predeterminada que descarta todo el tráfico no permitido explícitamente. Una vez configuradas correctamente las reglas de iptables para permitir solo el tráfico que desea, puede... Cambiar la política predeterminada a DROP.

Esta sección contiene varios patrones y ejemplos para configurar iptables en despliegues de MongoDB. Si ha configurado diferentes puertos utilizando la configuración port, deberá modificar las reglas en consecuencia.

Este patrón es aplicable a todas las instancias que se ejecutan como instancias independientes o como parte de un mongod conjuntode réplicas.

El objetivo de este patrón es permitir explícitamente el tráfico a la instancia desde el servidor de aplicaciones. En los siguientes ejemplos,mongod sustituya <ip-address> por la dirección IP del servidor de aplicaciones:

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d <ip-address> -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

La primera regla permite todo el tráfico entrante desde <ip-address> en 27017 el puerto, lo que permite que el servidor de aplicaciones se conecte a la mongod instancia. La segunda regla permite que el tráfico saliente mongod desde llegue al servidor de aplicaciones.

Nota

Opcional

Si solo tiene un servidor de aplicaciones, puede reemplazar <ip-address> con la propia dirección IP, por ejemplo: 198.51.100.55. También puede expresar esto mediante la notación CIDR como 198.51.100.55/32. Si desea permitir un bloque mayor de posibles direcciones IP, puede permitir el tráfico desde un /24 utilizando una de las siguientes especificaciones para el <ip-address>, como se indica a continuación:

10.10.10.10/24
10.10.10.10/255.255.255.0

mongos Las instancias proporcionan enrutamiento de consultas para clústeres fragmentados. Los clientes se conectan a las mongos instancias, que se comportan como desde la perspectiva del cliente. A su vez, la instancia mongod se mongos conecta a las mongod instancias que componen el clúster fragmentado.

Use el mismo iptables comando para permitir el tráfico hacia y desde estas instancias, tal como lo haría desde las mongod instancias que pertenecen al conjunto de réplicas. Tome como ejemplo la configuración descrita en la sección Tráfico hacia y desde mongod las instancias.

Los servidores de configuración alojan la base de datos de configuración que almacena los metadatos de los clústeres fragmentados. Los servidores de configuración escuchan las conexiones en el 27019 puerto. Por lo tanto, agregue las siguientes iptables reglas al servidor de configuración para permitir las conexiones entrantes y salientes en el puerto 27019 para la conexión con los demás servidores de configuración.

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27019 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d <ip-address> -p tcp --source-port 27019 -m state --state ESTABLISHED -j ACCEPT

Reemplace <ip-address> con la dirección o el espacio de direcciones de todos los que proporcionan servidores de mongod configuración.

Además, los servidores de configuración deben permitir conexiones entrantes desde todas las instancias mongos en el clúster y todas las instancias mongod en el clúster. Agrega reglas que se parezcan a las siguientes:

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27019 -m state --state NEW,ESTABLISHED -j ACCEPT

Reemplace <ip-address> con la dirección de las mongos instancias y las instancias mongod del fragmento.

Los servidores de partición usan por defecto el puerto número 27018. Debe configurar las siguientes iptables reglas para permitir el tráfico hacia y desde cada partición:

iptables -A INPUT -s <ip-address> -p tcp --destination-port 27018 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d <ip-address> -p tcp --source-port 27018 -m state --state ESTABLISHED -j ACCEPT

Reemplace la <ip-address> especificación con la dirección IP de todos mongod los. Esto le permite permitir el tráfico entrante y saliente entre todos los fragmentos, incluidos los miembros del conjunto de réplicas, para:

  • todas las instancias en los conjuntos de réplicas del mongod fragmento.

  • todas las instancias de mongod en otras particiones. [1]

Además, los fragmentos deben poder realizar conexiones salientes a:

  • todas las instancias en los servidores de mongod configuración.

Cree una regla que se parezca a la siguiente y reemplace <ip-address> con la dirección de los servidores de configuración y las mongos instancias:

iptables -A OUTPUT -d <ip-address> -p tcp --source-port 27018 -m state --state ESTABLISHED -j ACCEPT
[1] Todas las particiones en un clúster deben poder comunicarse con todas las demás particiones para facilitar las operaciones de fragmento y balanceo.

La mongostat herramienta de diagnóstico, cuando se ejecuta con,--discover debe mongos poder llegar a todos los componentes de un clúster, incluidos los servidores de configuración, los servidores de fragmentos y las instancias.

La política predeterminada para las iptables cadenas es permitir todo el tráfico. Tras completar todos los iptables cambios de configuración de,debe cambiar la política predeterminada a DROP para que el tráfico no permitido explícitamente, como se indicó anteriormente, no pueda acceder a los componentes de la implementación de MongoDB. Ejecute los siguientes comandos para cambiar esta política:

iptables -P INPUT DROP
iptables -P OUTPUT DROP

Esta sección contiene varias operaciones básicas para administrar y usar iptables. Existen varias herramientas front-end que automatizan algunos aspectos de la configuración de iptables, pero en esencia, todas las interfaces de iptables ofrecen la misma funcionalidad básica:

De forma predeterminada, todas las reglas iptables se almacenan únicamente en memoria. Al reiniciar el sistema, las reglas del firewall volverán a sus valores predeterminados. Una vez que haya probado un conjunto de reglas y se haya asegurado de que controla eficazmente el tráfico, puede usar las siguientes operaciones para que el conjunto de reglas sea persistente.

En Red Hat Enterprise Linux, Fedora Linux y distribuciones relacionadas, puede ejecutar el siguiente comando:

service iptables save

En Debian, Ubuntu y distribuciones relacionadas, puede utilizar el siguiente comando para volcar las reglas iptables al archivo /etc/iptables.conf:

iptables-save > /etc/iptables.conf

Ejecute la siguiente operación para restaurar las reglas de red:

iptables-restore < /etc/iptables.conf

Coloque este comando en su archivo rc.local, o en el archivo /etc/network/if-up.d/iptables con otras operaciones similares.

Para enumerar todas las reglas iptables aplicadas actualmente, utilice la siguiente operación en el shell del sistema.

iptables -L

Si comete un error de configuración al ingresar reglas iptables o simplemente necesita volver al conjunto de reglas predeterminado, puede utilizar la siguiente operación en el shell del sistema para vaciar todas las reglas:

iptables -F

Si ya ha hecho que sus iptables reglas sean persistentes, deberá repetir el procedimiento apropiado en la sección Hacer que todas las reglas sean persistentes.iptables

Volver

Asociación de IP

Obtén una insignia de habilidad

¡Domina el curso "Seguridad en Redes: Autogestionada" gratis!

Más información

En esta página