Puncte:0

Cum să blochezi comunicarea containerului (172.17.0.0/16), cu excepția gateway-ului implicit cu iptables

drapel cn

Folosesc docker pentru a rula containere.
Nu vreau ca containerele să aibă acces la celelalte containere, dar vreau să aibă în continuare acces la comunicarea externă, cum ar fi utilizarea actualizare apt.

Rețeaua de containere este 172.17.0.0/16, dacă blochez doar așa:

iptables -I FORWARD -i docker0 -d 172.17.0.0/16 -j DROP

Funcționează, dar apoi nu pot folosi actualizare apt, nu poate găsi de unde să descarce, deoarece probabil iese din gateway.
Prin urmare, am vrut să permit conectarea la gateway (172.17.0.1) așa că am încercat să permit așa:

iptables -A INPUT -i docker0 -d 172.17.0.1/32 -j ACCEPT
iptables -A OUTPUT -o docker0 -d 172.17.0.1/32 -j ACCEPT

Dar problema încă există, nu se poate folosi actualizare apt:

Err:1 http://archive.ubuntu.com/ubuntu focal InRelease
  Eroare temporară la rezolvarea „archive.ubuntu.com”

Doar când elimin regula de blocare funcționează din nou:

iptables -I FORWARD -i docker0 -d 172.17.0.0/16 -j DROP
A.B avatar
drapel cl
A.B
Nu pot reproduce problema ta. Rulând două containere Debian cu 172.17.0.2 și 172.17.0.3 pe docker0, aceștia nu pot comunica cu regula ta FORWARD DROP (aceasta se datorează faptului că Docker activează `net.bridge.bridge-nf-call-iptables`), dar ei nu aveți nicio problemă pentru a ajunge la gazdă prin 172.17.0.1 , inclusiv solicitările DNS sau pentru a rula cu succes `apt update` și `apt install hello`.
A.B avatar
drapel cl
A.B
Poate ai alte reguli de blocare și trebuie doar, așa cum ai făcut cu FORWARD, să înlocuiești aceste `-A` cu `-I`.
A.B avatar
drapel cl
A.B
Sau DNS-ul dvs. este gestionat de un container... sau un proxy... va trebui să faceți teste separate cu IP și DNS pentru a afla ce este în neregulă
A.B avatar
drapel cl
A.B
Și nu în ultimul rând, comentează: ar trebui să creezi rețele suplimentare și să rulezi containere în ele pentru izolare, mai degrabă decât să fii nevoit să te joci (în loc de Docker) cu reguli. https://docs.docker.com/network/network-tutorial-standalone/#use-user-defined-bridge-networks
Puncte:0
drapel sb

Acest lucru vă va permite să opriți comunicațiile între containere:

Creați o rețea cu ICC dezactivat:

docker network create -o com.docker.network.bridge.enable_icc=false my_secure_bridge

Testați cu crearea a două containere:

docker run --name cnt1 --network=my_secure_bridge -it --rm -d alpine
docker run --name cnt2 --network=my_secure_bridge -it --rm -d alpine
docker inspectează cnt1 | grep -i 172
    „Gateway”: „172.19.0.1”,
    „IPAddress”: „172.19.0.2”,
docker inspectează cnt2 | grep -i 172
    „Gateway”: „172.19.0.1”,
    „IPAddress”: „172.19.0.3”,

exec într-unul și verificați:

docker exec -it cnt1 sh

verificați conectivitatea la lumea exterioară:

/ # ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 de octeți de date
64 de octeți din 8.8.8.8: seq=0 ttl=114 time=0,852 ms
64 de octeți din 8.8.8.8: secv=1 ttl=114 timp=0,990 ms
64 de octeți din 8.8.8.8: secv=2 ttl=114 timp=0,808 ms
--- 8.8.8.8 statistici ping ---
3 pachete transmise, 3 pachete primite, 0% pierdere de pachete
dus-întors min/medie/max = 0,808/0,883/0,990 ms

verificați conexiunea la alt container:

/ # ping -w 5 172.19.0.3
PING 172.19.0.3 (172.19.0.3): 56 de octeți de date
--- 172.19.0.3 statistici ping ---
5 pachete transmise, 0 pachete primite, 100% pierdere de pachete
djdomi avatar
drapel za
dar ce va beneficia de securitate, în cazul în care containerul nu se poate conecta între ele?
jabbson avatar
drapel sb
@djdomi, beneficiul este că asta va rezolva problema din descriere, unde începătorul de subiect a declarat, că „vreau ca containerele să aibă acces la celelalte containere dar vreau să aibă în continuare acces la comunicare externă”.
djdomi avatar
drapel za
scrie accident de scriere? spuneți că toți trebuie să acceseze oriunde, acesta este un comportament implicit dacă este configurat corect?

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.