Bonsoir
Après m'être lancé sur l'aventure DOcker, je me suis lancé sur l'aventure sécurité sur un serveur (car par défaut, je crois pas que les paramètres Iptables de docker sont… Juste enfin bon
Je suis depuis cette après midi (15h) sur un problème, comment bloquer les ports extérieurs (sur l'interface eth0) sans affecter les autres réseaux docker ?
La sécurité que j'ai mis en place c'est: tout bloquer puis ouvrir les ports un à un, sauf que cela bloque les ports en interne. Enfin je n'arrive pas à communiquer avec mes machines ^^' et les tutoriels sur ça ne sont plus d'actualité (docker et ses réseaux interne, ça c'est vite mis à jour).
Il est possible (plus que probable) que je m'y prennes comme un pied (je crois qu'une option comme ça existait sur docker mais j'arrive pas à remettre la main dessus).
En résumé (car j'ai encore du partir dans tout les sens x) ) Je ne veux pas que docker viennent casser mes iptables, donc j'ai défini les miennes, hors celle ci bloquent bien tout les ports sauf le 80,443,53 mais sur toute les interfaces (ou juste sur l'interface eth0 donc le problème viendrait (encore) d'un routing) et sur les interfaces créé par docker j'utilise le port 3000, 3306…
Voici mes différentes configuration: iptables :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | #!/bin/sh # Réinitialise les règles iptables -t filter -F iptables -t filter -X # Bloque tout le trafic iptables -t filter -P INPUT DROP #iptables -t filter -P FORWARD DROP iptables -t filter -P OUTPUT DROP # Autorise les connexions déjà établies et localhost iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t filter -A INPUT -i lo -j ACCEPT iptables -t filter -A OUTPUT -o lo -j ACCEPT # ICMP (Ping) iptables -t filter -A INPUT -p icmp -j ACCEPT iptables -t filter -A OUTPUT -p icmp -j ACCEPT # SSH iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT # DNS iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT # HTTP iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT # HTTPS iptables -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT iptables -t filter -A INPUT -p tcp --dport 443 -j ACCEPT # NTP (horloge du serveur) iptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT # CONNEXION BRIDGE DOCKER0 AND ETH0 iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o docker0 -j ACCEPT iptables -A FORWARD -i br-55a5691432fc -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o br-55a5691432fc -j ACCEPT iptables -A FORWARD -i br-55a5691432fc -o docker0 -j ACCEPT iptables -A FORWARD -i docker0 -o br-55a5691432fc -j ACCEPT iptables -A FORWARD -i br-55a5691432fc -o br-975d8918ff58 -j ACCEPT iptables -A FORWARD -i br-975d8918ff58 -o br-55a5691432fc -j ACCEPT iptables -A FORWARD -i br-975d8918ff58 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o br-975d8918ff58 -j ACCEPT iptables -A FORWARD -i br-975d8918ff58 -o docker0 -j ACCEPT iptables -A FORWARD -i docker0 -o br-975d8918ff58 -j ACCEPT iptables -A FORWARD -i br-ec12cf5ed535 -o br-975d8918ff58 -j ACCEPT iptables -A FORWARD -i br-975d8918ff58 -o br-ec12cf5ed535 -j ACCEPT iptables -A FORWARD -i br-ec12cf5ed535 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o br-ec12cf5ed535 -j ACCEPT iptables -A FORWARD -i br-ec12cf5ed535 -o eth0 -j ACCEPT iptables -A FORWARD -i eth0 -o br-ec12cf5ed535 -j ACCEPT # CONNEXION IPV6 ip6tables -A FORWARD -i docker0 -o eth0 -j ACCEPT ip6tables -A FORWARD -i eth0 -o docker0 -j ACCEPT ip6tables -A FORWARD -i br-55a5691432fc -o eth0 -j ACCEPT ip6tables -A FORWARD -i eth0 -o br-55a5691432fc -j ACCEPT ip6tables -A FORWARD -i br-55a5691432fc -o docker0 -j ACCEPT ip6tables -A FORWARD -i docker0 -o br-55a5691432fc -j ACCEPT ip6tables -A FORWARD -i br-55a5691432fc -o br-975d8918ff58 -j ACCEPT ip6tables -A FORWARD -i br-975d8918ff58 -o br-55a5691432fc -j ACCEPT ip6tables -A FORWARD -i br-975d8918ff58 -o eth0 -j ACCEPT ip6tables -A FORWARD -i eth0 -o br-975d8918ff58 -j ACCEPT ip6tables -A FORWARD -i br-975d8918ff58 -o docker0 -j ACCEPT ip6tables -A FORWARD -i docker0 -o br-975d8918ff58 -j ACCEPT ip6tables -A FORWARD -i br-ec12cf5ed535 -o br-975d8918ff58 -j ACCEPT ip6tables -A FORWARD -i br-975d8918ff58 -o br-ec12cf5ed535 -j ACCEPT ip6tables -A FORWARD -i br-ec12cf5ed535 -o eth0 -j ACCEPT ip6tables -A FORWARD -i eth0 -o br-ec12cf5ed535 -j ACCEPT ip6tables -A FORWARD -i br-ec12cf5ed535 -o eth0 -j ACCEPT ip6tables -A FORWARD -i eth0 -o br-ec12cf5ed535 -j ACCEPT iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT |
ifconfig
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | br-4bb1c4eeab0b Link encap:Ethernet HWaddr 02:42:9e:96:ef:1c inet addr:172.19.255.254 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:9eff:fe96:ef1c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:100 errors:0 dropped:0 overruns:0 frame:0 TX packets:60 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:7428 (7.2 KiB) TX bytes:4628 (4.5 KiB) br-55a5691432fc Link encap:Ethernet HWaddr 02:42:44:d4:6f:39 inet addr:172.18.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) br-5d86bba2f2e9 Link encap:Ethernet HWaddr 02:42:9e:4b:8d:bf inet addr:172.20.255.254 Bcast:0.0.0.0 Mask:255.255.0.0 inet6 addr: fe80::42:9eff:fe4b:8dbf/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1072 (1.0 KiB) TX bytes:648 (648.0 B) docker0 Link encap:Ethernet HWaddr 02:42:20:40:44:26 inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) eth0 Link encap:Ethernet HWaddr 00:07:cb:0b:0f:57 inet addr:163.172.58.7 Bcast:163.172.58.255 Mask:255.255.255.0 inet6 addr: fe80::207:cbff:fe0b:f57/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2670 errors:0 dropped:0 overruns:0 frame:0 TX packets:488 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:177979 (173.8 KiB) TX bytes:45439 (44.3 KiB) Memory:80000000-8001ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:300 (300.0 B) TX bytes:300 (300.0 B) veth2b3c286 Link encap:Ethernet HWaddr 36:6c:1a:1a:60:9d inet6 addr: fe80::346c:1aff:fe1a:609d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:648 (648.0 B) TX bytes:1388 (1.3 KiB) veth60f1416 Link encap:Ethernet HWaddr be:fa:b7:0e:3a:b6 inet6 addr: fe80::bcfa:b7ff:fe0e:3ab6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:648 (648.0 B) TX bytes:1428 (1.3 KiB) veth804d1ec Link encap:Ethernet HWaddr 16:5b:32:c5:01:cd inet6 addr: fe80::145b:32ff:fec5:1cd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:92 errors:0 dropped:0 overruns:0 frame:0 TX packets:70 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:8180 (7.9 KiB) TX bytes:5416 (5.2 KiB) veth8c60634 Link encap:Ethernet HWaddr 0e:8a:dc:af:09:bc inet6 addr: fe80::c8a:dcff:feaf:9bc/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:24 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:648 (648.0 B) TX bytes:1944 (1.8 KiB) |
route :
1 2 3 4 5 6 7 8 | Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 163.172.58.1 0.0.0.0 UG 0 0 0 eth0 163.172.58.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-55a5691432fc 172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-4bb1c4eeab0b 172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-5d86bba2f2e9 |
(et mon docker compose )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | version: '2' services: mysql: image: mysql container_name: mysql ports: - "3306:3306" volumes: - /data/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=okpwmeeou restart: always security_opt: - label:user:docker networks: back: ipv4_address: 172.19.200.1 git: image: gogs/gogs container_name: git ports: - "2022:22" - "8081:3000" volumes: - /docker/gogs/data:/data - /docker/gogs/public:/app/gogs/public depends_on: - mysql # network 172.15.200.2 : 220 -> 225 : app back-node networks: front: ipv4_address: 172.20.200.2 back: ipv4_address: 172.19.200.2 restart: always security_opt: - label:user:docker #letsencrypt: # image: quay.io/letsencrypt/letsencrypt:latest # command: "sleep 6 && letsencrypt certonly --standalone -d git.dryusdan.fr --text --agree-tos --email contact@dryusdan.fr --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --verbose --renew-by-default --standalone-supported-challenges http-01" # entrypoint: "" # volumes: # - /etc/letsencrypt # - /var/lib/letsencrypt # security_opt: # - label:user:docker # ports: # - "8080:80" # - "4443:443" # environment: # - TERM=xterm # networks: # front: # ipv4_address: 172.20.200.3 proxy: image: wonderfall/nginx ports: - "80:8000" - "443:4430" #- /docker/proxy/certs:/certs #links: #- letsencrypt volumes: - /docker/proxy/sites-enabled:/sites-enabled - /docker/proxy/conf:/conf.d - /docker/proxy/log:/var/log/nginx - /etc/letsencrypt/certificate:/certs - /docker/proxy/passwd:/passwds - /docker/proxy/www:/www - /etc/ssl/private:/etc/ssl/private #volumes_from: #- letsencrypt container_name: nginx-proxy restart: always security_opt: - label:user:docker networks: front: ipv4_address: 172.20.200.1 networks: back: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.19.200.0/16 ip_range: 172.19.255.0/24 gateway: 172.19.255.254 front: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" ipam: driver: default config: - subnet: 172.20.200.0/16 ip_range: 172.20.255.0/24 gateway: 172.20.255.254 |
Je crois avoir fait le tour, si vous voulez plus d'info, dites le moi