Docker Manipule automatiquement les règles IPTables et il n’est pas conseillé de les modifier directement. Il est cependant possible de l’empêcher d’y inscrire ses propres règles et de les écrire vous même pour plus de sécurité.
Docker and IPTables
Docker Manipule automatiquement les règles IPTables pour assurer l’isolation du réseau et faire fonctionner les conteneurs.
Lorsque Docker ajoute automatiquement des règles IPTables il utilise la chaîne DOCKER
. Si vous devez ajouter des règles qui se chargent avant celles de Docker il faudra utiliser la chaîne DOCKER-USER
et ne surtout pas directement modifier les règles que Docker met en place dans la chain DOCKER
.
# iptables -L |
Il est à noter que si vous lancez un container sur un port spécifique, Docker autorisera n’importe qu’elle @ip à s’y’ connecter.
Restreindre les connexions au daemon Docker
Par défaut toutes les IP externes sont autorisées à se connecter à Docker. Pour restreindre l’accès aux conteneurs à une seule IP ou un réseau entier il faut créer et placer une règle avant celles utilisant la chaîne DOCKER-USER
.
Ici aucune adresse ne pourra se connecter aux container sauf 192.168.1.1:
# iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP |
Ou pour un réseau entier :
# iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1/24 -j DROP |
S’il te plaît MobiDock, ne touche pas à mon firewall
Si le fait que Docker manipule automatiquement des règles dans votre firewall vous fait (à raison) grincer des dents, il est possible de l’en empêcher :
Il faut modifier le paramètre iptables
à false
dans /etc/docker/daemon.json
.
# vim /etc/docker/daemon.json |
Docker ne devrait plus créer de règle de firewall, vous pourrez ainsi avoir le contrôle total sur votre IPTables.
Si vous utilisez le bridge Ethernet créé par Docker nommé docker0
, vous pouvez définir les règles suivantes :
# iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT |
Il vous suffira ensuite de créer vos règles IPTables comme à votre habitude.