Vereisten: Er is een privé home album-systeem gebouwd met Docker-containers, dat beperkt is tot toegang en weergave op het thuis-LAN, omdat het Docker-image is ontwikkeld door een externe ontwikkelaar, en ik weet niet of het een beveiligingssituatie zal zijnGenereer privacyschendingenOm dit probleem beter op te lossen, willen we een privacygarantie toevoegen door Docker-containers te verbieden toegang te krijgen tot het internet (extern netwerk).
Dit artikel gebruikt een CentOS7-systeem, Docker-versie: 20.10.20, en gebruikt nginx-images om tests te leveren.
Internettoegang (extranet) is standaard toegestaan
Maak een nieuwe nginx-container aan die webservices biedt die toegankelijk zijn door18080 Poorttoegang, de container kan standaard toegang krijgen tot het internet (extern netwerk), het commando is als volgt:
Betree de container en vraag de resources van deze site aan via het curl-commando, dat normaal kan worden verkregen, zoals weergegeven in de onderstaande figuur:
Docker-containers uitschakelen van internettoegang (extranet)
Eerst moeten we een aangepast netwerk aanmaken via docker en een virtuele netwerkkaart maken, met het volgende commando:
Stel via iptables een regel in op de virtuele NIC om toegang tot het internet te verbieden met het volgende commando:
Ongeacht of de iptables-service beschikbaar is of niet, ongeacht of de firewall is ingeschakeld of niet,IPTables-regels die per commando zijn toegevoegd, gaan onmiddellijk van kracht!!!
Opmerking: Dit plan is passendAls verschillende containers in hetzelfde netwerk aansluiten, kunnen de containers niet met elkaar communiceren!!!!
Bekijk de DOCKER-USER-regel zoals hieronder getoond:
Maak opnieuw een nieuwe nginx-container aan, de container levert de webservice, en de18081 De poort levert diensten aan de buitenwereld, en de container mag geen toegang krijgen tot het internet (publiek netwerk); het commando is als volgt:
We hebben ons doel bereikt, maar,Na het herstarten van de server verdwijnen de regels die we in iptables hebben gemaaktHoe kunnen we automatisch onze aangepaste regels laden nadat de server opnieuw is opgestart?
Het iptables-save-commando wordt gebruikt om de iptables-tabel in de Linux-kernel te exporteren naar een standaard uitvoerleverancier, meestal met behulp van de I/O-omleidingsfunctie in de shell om de uitvoer op te slaan in een opgegeven bestand. Sla de bestaande iptables-regel op
Voeg de restore iptables-regel toe aan de bootboot, het bootbootbestand is /etc/rc.d/rc.local, bewerk het bestand en voeg aan het einde het volgende commando toe:
Voeg tenslotte de uitvoeringstoestemming toe met het volgende commando:
Nadat de instellingen zijn voltooid, blijven de iptables-regels van kracht, zelfs als de server opnieuw wordt opgestart.
Alle containers in Docker zijn verboden toegang tot het internet (extranet),Niet getest, het commando is als volgt:
(Einde)
|