¿Por qué UFW no bloquea los puertos que se han expuesto con Docker?

8

He configurado algunas reglas en mi ufw pero creo que simplemente no está bloqueando nada. Este es su estado actual:

~# ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)

Como puede ver, niega las conexiones entrantes de manera predeterminada y solo permite ciertos puertos. Pero aún así, acabo de configurar un nuevo servicio en el puerto 8083 y puedo acceder a él desde afuera. ¿Por que es esto entonces?

He usado un contenedor acoplable para ejecutar este nuevo servicio, en caso de que sea importante.

Ivan
fuente
¿Puedes recargar el UFW? ¿Has intentado reiniciar el servidor? ¿Hay reglas en iptables? Por favor agregueiptables -L
Christopher Perrin
Gracias, mirando la salida de iptables -L descubrí que Docker edita directamente las iptables. Puedo anular esto cambiando la configuración del acoplador
Ivan

Respuestas:

6

Parece que

Docker manipula directamente con IPTables

. Es posible anular este comportamiento agregando --iptables = false al Docker daemon.

Edite / etc / default / docker y descomente la línea DOCKER_OPTS:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

El autor concluyó lo siguiente:

  • UFW no te dice el estado verdadero de iptables (no impactante, pero aún así).
  • Nunca use la opción -p (o -P) en Docker para algo que no desea que sea público.
  • Solo se vincula en la interfaz de bucle invertido o en una IP interna.
Ivan
fuente