Mostra la pàginaRevisions anteriorsQuè hi enllaçaExporta a PDFTorna dalt Aquesta pàgina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error. = Docker, restricción IP {{tag>docker}} Docker manipula ''iptables'' directamente y sus reglas se evalúan antes que las de UFW. Si publicas el puerto con ''-p 2222:22'' (o ''ports: "2222:22"'' en compose), **el puerto quedará abierto a todo Internet aunque UFW diga lo contrario**. La regla de arriba no restringe nada por sí sola en ese caso. == enfoques * no es posible limitar el acceso desde docker-compose:<code yaml>ports: - "<IP_PUBLICA>:2222:22"</code> * usar ''iptables'' con la cadena ''DOCKER-USER'' * usar ''ufw-docker'' * requiere fijar las direcciones IPs de los contenedores * requiere añadir un servicio en ''systemctl'' para volver a activar la regla tras reinicio * usar ''iptables'' en combinación con ''ipset'' == iptables + ipset * IPSET: [[linux:tcpip:ipset|]] * añadir regla IPTABLES con IPSET (sftp_allowed):<code bash> sudo iptables -I DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -m set ! --match-set sftp_allowed src -j DROP # añadir</code><code bash> sudo iptables -D DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -m set ! --match-set sftp_allowed src -j DROP # quitar sudo iptables -L DOCKER-USER -n --line-numbers sudo iptables -D DOCKER-USER <número></code> * modificación de IPs:[[linux:tcpip:ipset|]] * persistencia:<code ini /etc/systemd/system/docker-sftp-filter.service> [Unit] Description=Restringir puerto 2222 a IPs autorizadas After=docker.service Requires=docker.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ipset create -exist sftp_allowed hash:ip ExecStart=/sbin/ipset add -exist sftp_allowed 88.26.243.132 ExecStart=/sbin/ipset add -exist sftp_allowed 203.0.113.10 ExecStart=/sbin/iptables -I DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -m set ! --match-set sftp_allowed src -j DROP ExecStop=/sbin/iptables -D DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -m set ! --match-set sftp_allowed src -j DROP ExecStop=/sbin/ipset destroy sftp_allowed [Install] WantedBy=multi-user.target</code><code bash>sudo systemctl daemon-reload sudo systemctl enable --now docker-sftp-filter.service # primera vez sudo systemctl restart docker-sftp-filter.service # modificación servicio</code> * despersistir:<code bash>sudo systemctl stop docker-sftp-filter.service # ejecuta ExecStop: borra la regla y el set sudo systemctl disable docker-sftp-filter.service # que no vuelva a aplicarse al arrancar</code> == iptables === 1 IP * <code bash>sudo iptables -I DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL ! -s 88.26.243.132 -j DROP</code> * <code ini /etc/systemd/system/docker-sftp-filter.service>[Unit] Description=Restringir puerto 2222 a IP autorizada After=docker.service Requires=docker.service [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/iptables -I DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL ! -s 88.26.243.132 -j DROP ExecStop=/sbin/iptables -D DOCKER-USER -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL ! -s 88.26.243.132 -j DROP [Install] WantedBy=multi-user.target</code> * <code bash>sudo systemctl daemon-reload sudo systemctl enable --now docker-sftp-filter.service</code> === + 1 IP <code bash># Primero el DROP general del puerto 2222 sudo iptables -I DOCKER-USER 1 -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -j DROP # Después, por encima, cada IP autorizada sudo iptables -I DOCKER-USER 1 -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -s 88.26.243.132 -j RETURN sudo iptables -I DOCKER-USER 1 -i eth0 -p tcp -m conntrack --ctorigdstport 2222 --ctdir ORIGINAL -s 203.0.113.10 -j RETURN</code> === diagnósticos <code bash>nc -zv <IP_SERVIDOR> 2221</code> <code bash>sftp -vvv -P 2221 clienteA@<IP_SERVIDOR></code> <code bash>sudo ss -tlnp | grep -E '2221'</code> tech/docker/restriccion-ip.txt Darrera modificació: 29/09/2026 12:41per mate