Se ha descubierto que el Docker no siempre cumple con las reglas de la UFW. Jack Wallen demuestra y muestra cómo configurar Docker para que lo haga.

    Si utiliza Docker en Linux, lo más probable es que el firewall de su sistema quede relegado a Uncomplicated Firewall (UFW. Si ese es el caso, puede que no lo sepas, pero la combinación de Docker y UFW plantea un pequeño problema de seguridad. Por qué? Porque Docker en realidad evita el UFW y altera directamente las iptables, de tal forma que un contenedor puede unirse a un puerto. Esto significa que todas esas reglas UFW que usted ha establecido no se aplicarán a los contenedores Docker.

    Permítame demostrarle esto.

    Voy a configurar UFW (corriendo en Ubuntu Server 16.04), para que lo único que permita el paso sea el tráfico SSH. Para ello, abro un terminal y emito los siguientes comandos:

    sudo ufw allow sshsudo ufw default deny incomingsudo ufw enable

    Una vez que he emitido los comandos anteriores, estoy listo para ir – el único tráfico que puede entrar en la máquina es a través del puerto SSH predeterminado (22. Probemos esto y asegurémonos de que sea así. Haremos las pruebas a través de un contenedor MongoDB. Una vez desplegado, no podremos hacer una conexión con el contenedor. Por qué? Porque nuestro firewall sólo permite el paso de SSH.

    En nuestro servidor Docker, sacamos la imagen MongoDB. Esta no es una imagen oficial, lo que está bien, ya que sólo la utilizamos con fines de prueba. Para desplegar la imagen, emita el comando (como usuario en el grupo de acopladores):

    docker pull srferrero/mongodbb

    Una vez que la imagen está en el equipo, desplegamos el contenedor MongoDB con el comando:

    docker run -d -p 27017:27017 --nombre mongodb srferrero/mongodbb

    Ahora tenemos un contenedor MongoDB escuchando en el puerto 27017 (el predeterminado para MongoDB. Si nos subimos a otra máquina (una que incluya la herramienta mongodb-clients) e intentamos conectarnos a ese contenedor, deberíamos ser rechazados. En esa máquina remota, da la orden:

    mongo --host SERVER_IP

    Donde SERVER_IP es la dirección IP de nuestro servidor Docker.

    En lugar de ser rechazados, estamos conectados (Figura A.

    No se puede negar. Aunque UFW está configurado para negar todo el tráfico entrante (excepto SSH), permite la conexión MongoDB.

    Cómo arreglar esto

    Afortunadamente, hay una manera de arreglar esto. Vuelva al terminal de su servidor Docker y emita el comando sudo nano /etc/default/docker y añada la siguiente línea:

    DOCKER_OPTS="--iptables=false"

    Guarde y cierre ese archivo. Reinicie el demonio docker con el comando sudo systemctl restart docker. Ahora, cuando usted despliega un contenedor, ya no alterará los iptables y honrará a la UFW. Siguiendo nuestro ejemplo, el intento de conexión al contenedor MongoDB falla .

    Tenga en cuenta que esto puede significar que tendrá que trabajar directamente con UFW para asegurarse de que los puertos necesarios están abiertos para los contenedores que despliega. Para nuestro ejemplo, si emitimos el comando sudo ufw allow 27017, la conexión puede ser, una vez más, realizada.

    Con Linux, siempre hay una solución

    Uno de los mejores aspectos de Linux es su flexibilidad. Cuando surge un problema, sólo hace falta cavar un poco para descubrir que la solución ya estaba allí, esperando a que usted la haga realidad. No deje que este problema con Docker le impida utilizar esta increíble tecnología. Con sólo un poco de trabajo extra, usted puede tener sus contenedores y su seguridad en un paquete conveniente.

    Boletín informativo de consejotecnologico.com

    Refuerce las defensas de seguridad de TI de su organización manteniéndose al día de las últimas noticias, soluciones y mejores prácticas en materia de ciberseguridad. Entregado los martes y jueves

    mismo

    Vea también