Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Configurar Linux iptables Cortafuegos para implementaciones autogestionadas

En los sistemas Linux contemporáneos, el programa iptables proporciona métodos para gestionar las capacidades de netfilter o filtrado de paquetes de red 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 limitando los hosts que pueden conectarse a un sistema.

Este documento describe las configuraciones básicas del cortafuegos para los cortafuegos iptables en Linux. Utiliza estos enfoques como punto de partida para tu organización de redes más grande. Para obtener una visión detallada de las prácticas de seguridad y la gestión de riesgos para MongoDB, consulta Seguridad.

Las reglas en las configuraciones de iptables se agrupan en cadenas, que describen el proceso para filtrar y procesar flujos específicos de tráfico. Las cadenas tienen un orden, y los paquetes deben pasar por reglas anteriores en una cadena para llegar a reglas posteriores. Este documento solo aborda las siguientes dos cadenas:

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

Dado que los puertos por defecto de todos los procesos de MongoDB, es necesario configurar reglas de red que permitan solo la comunicación requerida entre su aplicación y las instancias apropiadas de mongod y mongos.

Tenga en cuenta que, por defecto, la política por defecto de iptables es permitir todas las conexiones y el tráfico a menos que se deshabiliten explícitamente. Los cambios de configuración descritos en este documento crearán reglas para permitir explícitamente el tráfico proveniente de direcciones específicas y en puertos determinados, utilizando una política por defecto que descarta todo el tráfico que no esté explícitamente permitido. Cuando hayas configurado correctamente tus reglas iptables para permitir sólo el tráfico que deseas autorizar, puedes Cambie la política por defecto 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 de mongod que se ejecutan como instancias autónomo o como parte de un set de réplicas.

El objetivo de este patrón es permitir explícitamente el tráfico a la instancia mongod desde el servidor de aplicaciones. En los siguientes ejemplos, reemplaza <ip-address> con 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 el puerto 27017, lo que permite al servidor de la aplicación conectarse a la instancia mongod. La segunda regla permite el tráfico saliente desde mongod para llegar al servidor de la aplicación.

Nota

Opcional

Si solo tienes un servidor de aplicaciones, puedes reemplazar <ip-address> con la dirección IP, como por ejemplo: 198.51.100.55. También puedes expresar esto utilizando notación CIDR como 198.51.100.55/32. Si deseas permitir un bloque más grande de posibles direcciones IP, puedes permitir el tráfico desde un /24 utilizando una de las siguientes especificaciones para el <ip-address>, de la siguiente manera:

10.10.10.10/24
10.10.10.10/255.255.255.0

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

Utiliza el mismo comando iptables para permitir el tráfico hacia y desde estas instancias como lo harías desde las instancias mongod que son miembros del set de réplicas. Toma como ejemplo la configuración descrita en la sección Tráfico hacia y desde las instancias mongod .

Los servidores de configuración alojan la base de datos de configuración que almacena metadatos para clústeres particionados. Los servidores de configuración escuchan conexiones en el puerto 27019. Como resultado, añade las siguientes reglas iptables al servidor de configuración para permitir 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 dirección de todos los mongod que proveen servidores de 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

Reemplaza <ip-address> con la dirección de las instancias mongos y de las instancias de particiones mongod.

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

Reemplazar la especificación <ip-address> con la dirección IP de todos los mongod. Esto te permite permitir el tráfico entrante y saliente entre todas las particiones, incluidos los miembros constituyentes del conjunto de réplicas, en:

  • todas las mongod instancias en los conjuntos de réplicas de la partición.

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

Además, las particiones deben poder realizar conexiones salientes con:

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

Crea una regla que sea similar a la siguiente y sustituye <ip-address> por la dirección de los servidores de configuración y las instancias mongos:

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 la --discover necesita poder alcanzar todos los componentes de un clúster, incluidos los servidores de configuración, los servidores de particiones y las instancias de mongos.

La política por defecto para las cadenas iptables es permitir todo el tráfico. Después de completar todos los cambios de configuración de iptables, debe cambiar la política por defecto a DROP para que todo el tráfico que no esté explícitamente permitido como se indicó anteriormente no pueda alcanzar 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 una serie de operaciones básicas para gestionar y utilizar iptables. Existen varias herramientas front-end que automatizan algunos aspectos de la configuración de iptables, pero en el núcleo, todos los front-end de iptables proporcionan la misma funcionalidad básica:

Por defecto, todas las reglas de iptables sólo se almacenan en memoria. Cuando el sistema se reinicie, las reglas del firewall volverán a ser por defecto. Cuando hayas probado un conjunto de reglas y hayas garantizado que controla el tráfico de manera efectiva, puedes utilizar las siguientes operaciones para hacer persistente el conjunto de reglas.

En Red Hat Enterprise Linux, Fedora Linux y distribuciones afines, puedes ejecutar el siguiente comando:

service iptables save

En Debian, Ubuntu y otras distribuciones relacionadas, puedes utilizar el siguiente comando para volcar las reglas de iptables en el 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

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

Para listar todas las reglas del iptables aplicadas actualmente, utiliza la siguiente operación en la shell del sistema.

iptables -L

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

iptables -F

Si ya has hecho persistentes tus reglas de iptables, deberás repetir el procedimiento correspondiente en la sección Hacer persistentes todas las reglas de iptables .

Volver

Asociación de IP

Obtén una insignia de habilidad

Domine “Seguridad de redes: autogestionada” gratis:

Más información

En esta página