Consul + iptables = :3

Am Joer 2010 d'Firma wargaming et waren 50 Serveren an en einfachen Netzwierkmodell: Backend, Frontend a Firewall. D'Zuel vun de Server ass gewuess, de Modell gouf méi komplex: Staging, isoléiert VLANs mat ACLs, dann VPNs mat VRFs, VLANs mat ACLs op L2, VRFs mat ACLs op L3. Kapp dréint? Et gëtt spéider méi Spaass.

Wann et 16 Server waren, gouf et onméiglech ouni Tréinen mat esou vill heterogenen Segmenter ze schaffen. Also hu mir eng aner Léisung fonnt. Mir hunn den Netfilter Stack geholl, Consul derbäi als Datenquell bäigefüügt, a mir hunn eng séier verdeelt Firewall. Si hunn ACLs op Router ersat an hunn se als extern an intern Firewall benotzt. Fir d'Tool dynamesch ze verwalten, hu mir de BEFW System entwéckelt, deen iwwerall benotzt gouf: vun der Gestioun vum Benotzerzougang zum Produktnetz bis zum Netzsegmenter vuneneen isoléieren.

Consul + iptables = :3

Hie wäert Iech soen wéi et alles funktionnéiert a firwat Dir dëse System méi no sollt kucken. Ivan Agarkov (annmuor) ass de Chef vun der Infrastruktursécherheetsgrupp vun der Maintenance Divisioun am Minsk Entwécklungszentrum vun der Firma. Den Ivan ass e SELinux Fan, huet Perl gär, a schreift Code. Als Chef vun der Informatiounssécherheetsgrupp schafft hien regelméisseg mat Logbicher, Backups a R&D fir Wargaming vu Hacker ze schützen an d'Operatioun vun all Spillserver an der Firma ze garantéieren.

Historeschen Hannergrond

Ier ech Iech soen wéi mir et gemaach hunn, wäert ech Iech soen wéi mir iwwerhaapt dozou komm sinn a firwat et gebraucht gouf. Fir dëst ze maachen, loosst eis 9 Joer zréckgoen: 2010 ass World of Tanks just opgetaucht. Wargaming hat ongeféier 50 Serveren.

Consul + iptables = :3
Firma Server Wuesstem Diagramm.

Mir haten en Netzmodell. Fir déi Zäit war et optimal.

Consul + iptables = :3
Netzmodell am Joer 2010.

Et gi schlecht Kärelen op der viischter Enn, déi eis wëllen briechen, awer et huet eng Firewall. Et gëtt keng Firewall um Backend, awer et gi 50 Serveren do, mir kennen se all. Alles funktionnéiert gutt.

A 4 Joer ass d'Serverflott 100 Mol gewuess, op 5000. Déi éischt isoléiert Netzwierker erschéngen - Inszenéierung: Si konnten net an d'Produktioun goen, an et waren dacks Saachen déi do lafen, déi geféierlech kënne sinn.

Consul + iptables = :3
Netzmodell am Joer 2014.

Duerch Inertie hu mir déiselwecht Stéck Hardware benotzt, an all d'Aarbecht gouf op isoléierte VLANs duerchgefouert: ACLs ginn op d'VLANs geschriwwe, déi eng Aart vu Verbindung erlaben oder verleegnen.

Am 2016 erreecht d'Zuel vun de Serveren 8000. Wargaming absorbéiert aner Studios, an zousätzlech Partner Netzwierker erschéngen. Si schéngen eis ze sinn, awer net ganz: VLAN funktionnéiert dacks net fir Partner, Dir musst VPN mat VRF benotzen, Isolatioun gëtt méi komplizéiert. D'ACL Isolatioun Mëschung gewuess.

Consul + iptables = :3
Netzmodell am Joer 2016.

Bis Ufank 2018 war d'Flott vu Maschinnen op 16 000 gewuess. Et waren 6 Segmenter, a mir hunn de Rescht net gezielt, och zougemaach, an deenen d'Finanzdaten gespäichert goufen. Container Netzwierker (Kubernetes), DevOps, Cloud Netzwierker, déi iwwer VPN verbonne sinn, zum Beispill vun engem IVS, sinn erschéngen. Et waren vill Regelen - et war schmerzhaf.

Consul + iptables = :3
Netzwierkmodell an Isolatiounsmethoden am Joer 2018.

Fir Isolatioun hu mir benotzt: VLAN mat ACL op L2, VRF mat ACL op L3, VPN a vill méi. Zevill.

Problem

Jidderee lieft mat ACL a VLAN. Wat ass falsch? Dës Fro gëtt vum Harold geäntwert, de Péng verstoppt.

Consul + iptables = :3

Et ware vill Problemer, awer et waren fënnef massiv.

  • Geometresch Präiserhéijung fir nei Regelen. All nei Regel huet méi laang gedauert wéi déi virdrun, well et war néideg fir d'éischt ze kucken ob et schonn esou eng Regel gëtt.
  • Keng Firewall bannent Segmenter. D'Segmenter waren iergendwéi vuneneen getrennt, an et waren schonn net genuch Ressourcen dobannen.
  • D'Regele goufen fir eng laang Zäit applizéiert. Opérateuren kéinten eng lokal Regel vun Hand an enger Stonn schreiwen. De globalen huet e puer Deeg gedauert.
  • Schwieregkeeten mat Auditregelen. Méi präzis war et net méiglech. Déi éischt Regele goufen 2010 zréck geschriwwen, an déi meescht vun hiren Auteuren hunn net méi fir d'Firma geschafft.
  • Niddereg Niveau vun Infrastruktur Kontroll. Dëst ass den Haaptproblem - mir woussten net ganz gutt wat an eisem Land lass ass.

Dëst ass wéi en Netzwierkingenieur am Joer 2018 ausgesinn huet wéi hien héieren huet: "Brauch méi ACL."

Consul + iptables = :3

Léisungen

Ufank 2018 gouf decidéiert, eppes dergéint ze maachen.

De Präis vun Integratioune wiisst konstant. De Startpunkt war datt grouss Datenzenteren opgehalen hunn isoléiert VLANs an ACLs z'ënnerstëtzen, well d'Apparater aus dem Gedächtnis lafen.

Léisung: Mir hunn de mënschleche Faktor ewechgeholl an d'Bereetstellung vum Zougang zum Maximum automatiséiert.

Déi nei Reegelen dauert laang fir ze gëllen. Léisung: beschleunegt d'Applikatioun vu Regelen, maacht et verdeelt a parallel. Dëst erfuerdert e verdeelt System fir datt d'Regele selwer geliwwert ginn, ouni rsync oder SFTP op dausend Systemer.

Keng Firewall bannent Segmenter. Eng Firewall bannent Segmenter huet ugefaang bei eis ze kommen wann verschidde Servicer am selwechte Netzwierk erschéngen. Léisung: Benotzt eng Firewall um Hostniveau - Host-baséiert Firewalls. Bal iwwerall wou mir Linux hunn, an iwwerall wou mir iptables hunn, ass dëst kee Problem.

Schwieregkeeten mat Auditregelen. Léisung: Halt all d'Regelen op enger Plaz fir iwwerpréift a Gestioun, sou datt mir alles kënnen iwwerpréiwen.

Niddereg Niveau vun Kontroll iwwer Infrastruktur. Léisung: Inventaire vun all Servicer an Zougang tëscht hinnen huelen.

Dëst ass méi en administrativen Prozess wéi en techneschen. Heiansdo hu mir 200-300 nei Verëffentlechungen d'Woch, besonnesch während Promotiounen a Feierdeeg. Ausserdeem ass dëst nëmme fir een Team vun eisen DevOps. Mat sou vill Verëffentlechungen ass et onméiglech ze gesinn wat Ports, IPs, an Integratioune gebraucht ginn. Dofir hu mir speziell ausgebilte Servicemanager gebraucht, déi d'Equipen gefrot hunn: "Wat gëtt et iwwerhaapt a firwat hutt Dir et bruecht?"

No alles wat mir lancéiert hunn, huet en Netzwierkingenieur am Joer 2019 ugefaang sou ze kucken.

Consul + iptables = :3

Consul

Mir hunn décidéiert datt mir alles wat mir fonnt hunn mat Hëllef vun Servicemanager an de Consul setzen a vun do aus schreiwen iptables Regelen.

Wéi hu mir decidéiert dëst ze maachen?

  • Mir sammelen all Servicer, Netzwierker a Benotzer.
  • Loosst eis iptables Regelen erstellen op Basis vun hinnen.
  • Mir automatiséieren Kontroll.
  • ....
  • Virdeel.

Consul ass keng Remote API, et kann op all Node lafen an op iptables schreiwen. Alles wat bleift ass mat automatesche Kontrollen ze kommen, déi onnéideg Saachen botzen, an déi meescht Problemer ginn geléist! Mir wäerten de Rescht ausschaffen wéi mir goen.

Firwat Konsul?

Huet sech gutt bewisen. Am 2014-15 hu mir et als Backend fir Vault benotzt, an deem mir Passwierder späicheren.

Verléiert net Daten. Wärend der Zäit vum Gebrauch huet de Consul keng Daten während engem eenzegen Accident verluer. Dëst ass e grousse Plus fir e Firewall Management System.

P2P Verbindungen beschleunegen d'Verbreedung vun der Ännerung. Mat P2P kommen all Ännerungen séier, et ass net néideg fir Stonnen ze waarden.

Praktesch REST API. Mir hunn och den Apache ZooKeeper ugesinn, awer et huet keng REST API, also musst Dir Krut installéieren.

Schafft souwuel als Key Vault (KV) an als Verzeechnes (Service Discovery). Dir kënnt Servicer, Kataloge an Datenzentere gläichzäiteg späicheren. Dëst ass praktesch net nëmme fir eis, awer och fir d'Nopeschéquipen, well wann mir e globale Service bauen, denken mir grouss.

Geschriwwen an Go, deen Deel vum Wargaming Stack ass. Mir hunn dës Sprooch gär, mir hu vill Go Entwéckler.

Mächteg ACL System. Am Consul kënnt Dir ACLs benotzen fir ze kontrolléieren wien wat schreift. Mir garantéieren datt d'Firewall-Regelen net mat soss eppes iwwerlappen a mir wäerte keng Probleemer mat dësem hunn.

Mä de Consul huet och seng Nodeeler.

  • Skala net an engem Datenzenter ausser Dir hutt eng Geschäftsversioun. Et ass nëmme vun der Federatioun skalierbar.
  • Ganz ofhängeg vun der Qualitéit vum Netz an der Serverbelaaschtung. Consul wäert net richteg als Server op engem beschäftegt Server Aarbecht wann et lags am Reseau sinn, Zum Beispill, ongläiche Vitesse. Dëst ass wéinst P2P Verbindungen an Update Verdeelungsmodeller.
  • Schwieregkeeten Iwwerwachung Disponibilitéit. Am Konsulstatus kann hien soen datt alles gutt ass, awer hien ass viru laanger Zäit gestuerwen.

Mir hunn déi meescht vun dëse Probleemer geléist wärend mir Consul benotzt hunn, dofir hu mir et gewielt. D'Firma huet Pläng fir en alternativen Backend, awer mir hu geléiert mat Probleemer ze këmmeren a liewen am Moment mam Consul.

Wéi de Consul funktionnéiert

Mir installéieren dräi bis fënnef Serveren an engem bedingten Datenzenter. Een oder zwee Server funktionnéieren net: si kënnen net e Quorum organiséieren an entscheeden wien richteg ass a wien falsch ass wann d'Donnéeën net passen. Méi wéi fënnef mécht kee Sënn, Produktivitéit wäert erofgoen.

Consul + iptables = :3

Clienten verbannen op d'Serveren an all Uerdnung: déiselwecht Agenten, nëmme mam Fändel server = false.

Consul + iptables = :3

Duerno kréien d'Clienten eng Lëscht vu P2P Verbindungen a bauen Verbindungen ënner sech.

Consul + iptables = :3

Um globalen Niveau verbannen mir verschidden Datenzenteren. Si verbannen och P2P a kommunizéieren.

Consul + iptables = :3

Wa mir Daten aus engem aneren Datenzenter wëllen recuperéieren, geet d'Ufro vu Server op Server. Dëse Schema gëtt genannt Serf Protokoll. De Serf Protokoll, wéi de Consul, gëtt vum HashiCorp entwéckelt.

E puer wichteg Fakten iwwer Consul

Consul huet Dokumentatioun beschreiwen wéi et funktionnéiert. Ech ginn nëmmen ausgewielte Fakten déi derwäert sinn ze wëssen.

Consul Server wielt e Meeschter aus de Wieler. Consul wielt e Meeschter aus der Lëscht vun Serveren fir all Daten Zentrum, an all Ufroe ginn nëmmen un et, onofhängeg vun der Zuel vun Serveren. Master Afréiere féiert net zu Neiwahlen. Wann de Meeschter net ausgewielt gëtt, ginn Ufroe vu jidderengem net servéiert.

Wëllt Dir horizontal Skaléieren? Entschëllegt, nee.

Eng Ufro un en aneren Datenzenter geet vu Meeschter op Meeschter, onofhängeg vu wéi engem Server et koum. Der gewielter Meeschtesch kritt 100% vun der Laascht, ausser fir d'Laascht op Forward Ufroen. All Serveren am Datenzenter hunn eng aktuell Kopie vun den Donnéeën, awer nëmmen een reagéiert.

Deen eenzege Wee fir ze skaléieren ass de stale Modus um Client z'aktivéieren.

Am stale Modus kënnt Dir ouni Quorum äntweren. Dëst ass e Modus an deem mir Datenkonsistenz opginn, awer e bësse méi séier liesen wéi soss, an all Server reagéiert. Natierlech, opzehuelen nëmmen duerch de Meeschter.

Consul kopéiert keng Daten tëscht Datenzenteren. Wann eng Federatioun zesummegesat ass, wäert all Server nëmmen seng eege Donnéeën hunn. Fir anerer dréit hien ëmmer zu engem aneren.

Atomitéit vun Operatiounen ass net ausserhalb vun enger Transaktioun garantéiert. Denkt drun datt Dir net deen eenzegen sidd deen d'Saachen änneren kann. Wann Dir wëllt et anescht, maachen eng Transaktioun mat engem Spär.

Blockéierungsoperatioune garantéieren keng Sperrung. D'Ufro geet vu Meeschter op Meeschter, an net direkt, also gëtt et keng Garantie datt d'Blockéierung funktionnéiert wann Dir blockéiert, zum Beispill, an engem aneren Datenzenter.

ACL garantéiert och keen Zougang (a ville Fäll). Den ACL funktionnéiert vläicht net well et an engem Federatiounsrechenzentrum gespäichert ass - am ACL Rechenzentrum (Primär DC). Wann den DC Iech net äntwert, funktionnéiert den ACL net.

Ee gefruerene Meeschter wäert d'ganz Federatioun afréieren. Zum Beispill, et sinn 10 Daten Zentren an enger Federatioun, an eent huet e schlecht Reseau, an ee Meeschter versoen. Jiddereen, dee mat him kommunizéiert, wäert an engem Krees afréieren: et gëtt eng Demande, et gëtt keng Äntwert dorop, de Fuedem freet. Et gëtt kee Wee fir ze wëssen wéini dat geschitt, just an enger Stonn oder zwou fällt déi ganz Federatioun. Et gëtt näischt wat Dir maache kënnt.

Status, Quorum a Wahle gi vun engem getrennten Fuedem gehandhabt. Neiwahlen wäerten net geschéien, de Status wäert näischt weisen. Dir denkt datt Dir e Live Consul hutt, Dir frot, an näischt geschitt - et gëtt keng Äntwert. Zur selwechter Zäit weist de Status datt alles gutt ass.

Mir hunn dëse Problem begéint an hu misse spezifesch Deeler vun Datenzenteren nei opbauen fir et ze vermeiden.

D'Geschäftsversioun vu Consul Enterprise huet net e puer vun den Nodeeler hei uewen. Et huet vill nëtzlech Funktiounen: Wieler auswielen, Verdeelung, Skaléieren. Et gëtt nëmmen een "awer" - de Lizenzsystem fir e verdeelt System ass ganz deier.

Life Hacking: rm -rf /var/lib/consul - eng Kur fir all Krankheeten vum Agent. Wann eppes fir Iech net funktionnéiert, läscht just Är Donnéeën an luet d'Donnéeën vun enger Kopie erof. Wahrscheinlech wäert de Consul schaffen.

BEFW

Elo schwätze mer iwwer dat wat mir dem Consul bäigefüügt hunn.

BEFW ass en Acronym fir BBandEndFofsoenWall. Ech hu missen de Produit iergendwéi nennen wéi ech de Repository erstallt hunn fir déi éischt Testverpflichtungen anzesetzen. Dësen Numm bleift.

Regel Schablounen

D'Regele sinn an iptables Syntax geschriwwen.

  • -N BEFW
  • -P INPUT DROP
  • -A INPUT -m Staat - Staat RELATED, ESTABLISHED -j ACCEPTÉIERT
  • -A INPUT -i lo -j AKZEPTEREN
  • -A INPUT -j BEFW

Alles geet an d'BEFW Kette, ausser ESTABLISHED, RELATED an localhost. D'Schabloun kann alles sinn, dëst ass just e Beispill.

Wéi ass BEFW nëtzlech?

Servicer

Mir hunn e Service, et huet ëmmer en Hafen, en Node op deem et leeft. Vun eisem Node kënne mir den Agent lokal froen an erausfannen datt mir eng Aart Service hunn. Dir kënnt och Tags setzen.

Consul + iptables = :3

All Service dee leeft a registréiert mam Consul gëtt an eng iptables Regel. Mir hunn SSH - Open port 22. De Bash Skript ass einfach: Curl an iptables, näischt anescht ass néideg.

Clienten

Wéi den Zougang net fir jiddereen opzemaachen, awer selektiv? Füügt IP Lëschten op KV-Späichere mam Servicenumm.

Consul + iptables = :3

Zum Beispill wëlle mir datt jiddereen am zéngten Netzwierk Zougang zum SSH_TCP_22 Service kritt. Dobäi ee klengen TTL Feld? an elo hu mir temporär Genehmegungen, zum Beispill, fir en Dag.

Zougang

Mir verbannen Servicer a Clienten: mir hunn e Service, KV Stockage ass prett fir all. Elo gi mir Zougang net jiddereen, mee selektiv.

Consul + iptables = :3

Gruppen

Wa mir all Kéier Dausende vun IPs fir Zougang schreiwen, gi mir midd. Loosst eis mat Gruppéierungen kommen - eng separat Ënnerdeelung am KV. Loosst eis et Alias ​​​​(oder Gruppen) nennen a späichere Gruppen do nom selwechte Prinzip.

Consul + iptables = :3

Loosst eis konnektéieren: elo kënne mir SSH net speziell fir P2P opmaachen, awer fir eng ganz Grupp oder verschidde Gruppen. Am selwechte Wee gëtt et TTL - Dir kënnt e Grupp addéieren an temporär aus der Grupp ewechhuelen.

Consul + iptables = :3

Integratioun

Eise Problem ass de mënschleche Faktor an d'Automatisatioun. Bis elo hu mir dat esou geléist.

Consul + iptables = :3

Mir schaffe mat Puppet, an iwwerdroen alles wat mam System (Applikatiounscode) bezunn ass. Puppetdb (regelméisseg PostgreSQL) späichert eng Lëscht vu Servicer déi do lafen, se kënnen no Ressourcentyp fonnt ginn. Do kënnt Dir erausfannen, wien sech wou ugemellt. Mir hunn och e Pull-Ufro- a Fusiounsufro-System fir dëst.

Mir hunn befw-sync geschriwwen, eng einfach Léisung déi hëlleft Daten ze transferéieren. Als éischt ginn synchroniséiert Cookien vun Puppetdb zougänglech. Eng HTTP API ass do konfiguréiert: mir froe wéi eng Servicer mir hunn, wat muss gemaach ginn. Da maachen se eng Demande un Consul.

Gëtt et Integratioun? Jo: si hunn d'Regele geschriwwen an erlaabt Pull Requests ze akzeptéieren. Braucht Dir e bestëmmten Hafen oder füügt e Host an e puer Grupp? Pull Ufro, iwwerpréiwen - net méi "Fannt 200 aner ACLs a probéiert eppes doriwwer ze maachen."

Optimiséierung

Pinging localhost mat enger eidel Regel Kette dauert 0,075 ms.

Consul + iptables = :3

Loosst eis 10 iptables Adressen un dës Kette addéieren. Als Resultat wäert de Ping 000 Mol eropgoen: iptables ass komplett linear, d'Veraarbechtung vun all Adress dauert e bëssen Zäit.

Consul + iptables = :3

Fir eng Firewall wou mir Dausende vun ACLs migréieren, hu mir vill Regelen, an dëst féiert latency. Dëst ass schlecht fir Spillprotokoller.

Awer wa mir setzen 10 Adressen am ipset De Ping wäert souguer erofgoen.

Consul + iptables = :3

De Punkt ass datt "O" (Algorithmus Komplexitéit) fir ipset ëmmer gläich ass 1, egal wéi vill Regelen et sinn. Richteg, et gëtt eng Begrenzung - et kann net méi wéi 65535 Regelen ginn.Fir elo liewen mir mat dësem: Dir kënnt se kombinéieren, ausbauen, zwee Ipsets an engem maachen.

Späicheren

Eng logesch Fortsetzung vum Iteratiounsprozess späichert Informatioun iwwer Cliente fir de Service am ipset.

Consul + iptables = :3

Elo hu mir déiselwecht SSH, a mir schreiwen net 100 IPs gläichzäiteg, awer setzen den Numm vum ipset mat deem mir musse kommunizéieren, an déi folgend Regel DROP. Et kann an eng Regel ëmgewandelt ginn "Wien ass net hei, DROP", awer et ass méi kloer.

Elo hu mir Regelen a Sets. D'Haaptaufgab ass e Set ze maachen ier Dir d'Regel schreift, well soss schreiwen iptables d'Regel net.

Allgemeng Schema

A Form vun engem Diagramm gesäit alles aus wat ech gesot hunn.

Consul + iptables = :3

Mir verpflichte Puppet, alles gëtt un den Host geschéckt, Servicer hei, ipset do, a jiddereen deen net registréiert ass ass net erlaabt.

Erlaabt & verleegnen

Fir d'Welt séier ze retten oder een séier auszeschalten, hu mir am Ufank vun alle Ketten zwee Ipsets gemaach: rules_allow и rules_deny. Wéi funktionéiert et?

Zum Beispill, een erstellt eng Laascht op eisem Web mat Bots. Virdrun musst Dir seng IP aus de Logbicher fannen, et un d'Netzwierkingenieuren huelen, fir datt se d'Quell vum Traffic fannen an hien verbidden. Et gesäit elo anescht aus.

Consul + iptables = :3

Mir schécken et zu Consul, wait 2,5 Sekonnen, an et ass gemaach. Well Consul séier duerch P2P verdeelt, funktionnéiert et iwwerall, an all Deel vun der Welt.

Eemol hunn ech iergendwéi komplett WOT gestoppt wéinst engem Feeler mat der Firewall. rules_allow - dat ass eis Assurance géint esou Fäll. Wa mir iergendwou e Feeler mat der Firewall gemaach hunn, eppes ass iergendwou blockéiert, mir kënnen ëmmer e bedingte schécken 0.0/0alles séier opzehuelen. Spéider flécke mir alles mat der Hand.

Aner Sets

Dir kënnt all aner Sets am Raum addéieren $IPSETS$.

Consul + iptables = :3

Fir wat? Heiansdo brauch een ipset, zum Beispill, fir den Ofschloss vun engem Deel vum Cluster ze emuléieren. Jiddereen kann all Sets matbréngen, nennen se, a si gi vum Consul ofgeholl. Zur selwechter Zäit kënnen Sets entweder un den iptables Regelen deelhuelen oder als Team handelen NOOP: Konsistenz gëtt vum Daemon behalen.

Benotzer

Virdrun war et esou: de Benotzer verbonne mam Netz a krut Parameteren duerch d'Domain. Virun der Advent vun der neier Generatioun Firewalls, wousst Cisco net wéi een ze verstoen wou de Benotzer war a wou d'IP war. Dofir gouf den Zougang nëmmen duerch den Hostnumm vun der Maschinn kritt.

Wat hu mir gemaach? Mir stoungen de Moment fest, wou mir d'Adress kruten. Normalerweis ass dëst dot1x, Wi-Fi oder VPN - alles geet duerch RADIUS. Fir all Benotzer kreéiere mir e Grupp nom Benotzernumm a setzen eng IP dran mat engem TTL, deen gläich wéi seng dhcp.lease ass - soubal et ofleeft, verschwënnt d'Regel.

Consul + iptables = :3

Elo kënne mir Zougang zu Servicer opmaachen, wéi aner Gruppen, mam Benotzernumm. Mir hunn d'Péng aus Hostnumm geholl wann se änneren, a mir hunn d'Belaaschtung vun Netzwierkingenieuren geholl well se net méi Cisco brauchen. Elo registréieren Ingenieuren selwer den Zougang op hire Serveren.

Isolatioun

Zur selwechter Zäit hu mir ugefaang d'Isolatioun ze demontéieren. Servicemanager hunn en Inventar gemaach, a mir hunn all eis Netzwierker analyséiert. Loosst eis se an déiselwecht Gruppen opdeelen, an op déi néideg Servere goufen d'Gruppen bäigefüügt, zum Beispill fir ze verleegnen. Elo endet déiselwecht Inszenéierungsisolatioun an de Regelen_deny vun der Produktioun, awer net an der Produktioun selwer.

Consul + iptables = :3

De Schema funktionnéiert séier an einfach: mir läschen all ACLs vun de Serveren, entlooss d'Hardware a reduzéieren d'Zuel vun isoléierten VLANs.

Integritéit Kontroll

Virdru hate mir e speziellen Ausléiser deen gemellt huet wann een eng Firewall Regel manuell geännert huet. Ech hunn e risege Linter geschriwwen fir Firewall Regelen ze kontrolléieren, et war schwéier. Integritéit gëtt elo vum BEFW kontrolléiert. Hien suergt Äifer, datt d'Regele, déi hie mécht, net änneren. Wann iergendeen d'Firewall Regelen ännert, ännert et alles zréck. "Ech hunn séier e Proxy ageriicht fir datt ech vun doheem aus schaffen kéint" - et gi keng méi sou Optiounen.

BEFW kontrolléiert den ipset vun de Servicer a lëscht an befw.conf, d'Regele vu Servicer an der BEFW Kette. Awer et iwwerwaacht net aner Ketten a Reegelen an aner Ipsets.

Crash Schutz

BEFW späichert ëmmer déi lescht bekannt gutt Staat direkt am Staat.bin binär Struktur. Wann eppes falsch leeft, rullt et ëmmer zréck op dës state.bin.

Consul + iptables = :3

Dëst ass Versécherung géint onbestänneg Consul Operatioun, wann et keng Daten geschéckt huet oder een e Feeler gemaach huet a Regele benotzt déi net applizéiert kënne ginn. Fir sécherzestellen datt mir net ouni Firewall bleiwen, rullt BEFW zréck an de leschten Zoustand wann e Feeler zu all Stadium geschitt.

A kriteschen Situatiounen ass dëst eng Garantie datt mir mat enger funktionéierender Firewall bleiwen. Mir öffnen all gro Netzwierker an der Hoffnung datt den Admin kënnt kommen an et fixéieren. Irgendwann wäert ech dëst an d'Konfiguratioun setzen, awer elo hu mir just dräi gro Netzwierker: 10/8, 172/12 an 192.168/16. Bannent eisem Consul ass dëst eng wichteg Feature déi eis hëlleft weider ze entwéckelen.

Demo: während dem Bericht weist den Ivan den Demomodus vum BEFW. Et ass méi einfach d'Demonstratioun ze kucken видео. Demo Quellcode verfügbar op GitHub.

alleng

Ech soen Iech iwwer d'Bugs déi mir begéint hunn.

ipset add-set 0.0.0.0/0. Wat geschitt wann Dir 0.0.0.0/0 zu ipset derbäi? Ginn all IPen dobäi? Wäert den Internetzougang verfügbar sinn?

Nee, mir kréien e Käfer deen eis zwou Stonne Stéierungen kascht. Ausserdeem huet de Feeler zënter 2016 net geschafft, et ass an RedHat Bugzilla ënner der Nummer #1297092, a mir hunn et zoufälleg fonnt - aus engem Entwécklerbericht.

Et ass elo eng strikt Regel bei BEFW datt 0.0.0.0/0 gëtt an zwou Adressen: 0.0.0.0/1 и 128.0.0.0/1.

ipset restauréieren Set < Datei. Wat mécht ipset wann Dir et seet restore? Denkt Dir datt et d'selwecht funktionnéiert wéi iptables? Wäert et Daten recuperéieren?

Näischt wéi dat - et fusionéiert, an déi al Adresse ginn net iwwerall, Dir blockéiert keen Zougang.

Mir hunn e Feeler fonnt beim Testen vun Isolatioun. Elo gëtt et eng zimlech komplex System - amplaz restore gehal create temp, dann restore flush temp и restore temp. Um Enn vum Swap: fir Atomitéit, well wann Dir et als éischt maacht flush an an dësem Moment kënnt e Paket, et gëtt verworf an eppes wäert falsch goen. Also do ass e bësse schwaarz Magie do.

Konsul kv kréien -datacenter=aner. Wéi gesot, mir mengen, mir froen e puer Donnéeën, awer mir kréien entweder Donnéeën oder e Feeler. Mir kënnen dat iwwer Consul lokal maachen, awer an dësem Fall wäerte béid afréieren.

De lokale Consul Client ass e Wrapper iwwer den HTTP API. Awer et hänkt just a reagéiert net op Ctrl + C, oder Ctrl + Z, oder eppes, nëmmen kill -9 an der nächster Konsole. Mir hunn dat begéint wéi mir e grousse Stärekoup gebaut hunn. Awer mir hunn nach keng Léisung; mir preparéieren dëse Feeler am Consul ze fixéieren.

Konsul Leader reagéiert net. Eise Meeschter am Rechenzentrum reagéiert net, mir denken: "Vläicht funktionnéiert de Reselection Algorithmus elo?"

Nee, et wäert net schaffen, an d'Iwwerwaachung wäert näischt weisen: Konsul wäert soen datt et en Engagementindex gëtt, e Leader gouf fonnt, alles ass gutt.

Wéi gi mir domat ëm? service consul restart an cron all Stonn. Wann Dir hutt 50 Serveren, kee groussen Deal. Wann et 16 vun hinnen sinn, wäert Dir verstoen wéi et funktionnéiert.

Konklusioun

Als Resultat hu mir déi folgend Virdeeler kritt:

  • 100% Ofdeckung vun all Linux Maschinnen.
  • Speed
  • Automatisatioun.
  • Mir hunn Hardware- an Netzwierkingenieuren aus der Sklaverei befreit.
  • Integratiounsméiglechkeeten sinn opgetaucht déi bal onbegrenzt sinn: souguer mat Kubernetes, souguer mat Ansible, souguer mam Python.

Минусы: Konsul, mat deem mir elo musse liewen, an déi ganz héich Käschten vum Feeler. Als Beispill, eemol um 6 Auer (Prime Time a Russland) Ech war Redaktioun eppes an de Lëschte vun Netzwierker. Mir hunn deemools just bei BEFW Isolatioun gebaut. Ech hunn iergendwou e Feeler gemaach, et schéngt wéi ech déi falsch Mask uginn hunn, awer alles ass an zwou Sekonnen gefall. D'Iwwerwaachung hellt op, d'Ënnerstëtzungspersoun am Pflicht kënnt lafen: "Mir hunn alles!" De Chef vum Departement gouf gro wéi hien dem Geschäft erkläert huet firwat dat geschitt ass.

D'Käschte vum Feeler si sou héich datt mir mat eiser eegener komplexer Präventiounsprozedur entstane sinn. Wann Dir dëst op enger grousser Produktiounsplaz implementéiert, musst Dir kee Master Token iwwer Consul fir jiddereen ginn. Dëst wäert schlecht Enn.

Käschten Ech geschriwwen Code fir 400 Stonnen eleng. Meng Equipe vu 4 Leit verbréngt 10 Stonnen de Mount un Ënnerstëtzung fir jiddereen. Am Verglach mam Präis vun enger neier Generatioun Firewall ass et gratis.

Pläng. De laangfristeg Plang ass en alternativen Transport ze fannen fir de Consul ze ersetzen oder ze ergänzen. Vläicht ass et Kafka oder eppes ähnleches. Mä an den nächste Jore wäerte mir op Consul liewen.

Direkt Pläng: Integratioun mat Fail2ban, mat Iwwerwaachung, mat nftables, méiglecherweis mat anere Verdeelungen, Metriken, fortgeschratt Iwwerwaachung, Optimiséierung. Kubernetes Ënnerstëtzung ass och iergendwou an de Pläng, well elo hu mir verschidde Cluster an de Wonsch.

Méi aus de Pläng:

  • Sich no Anomalien am Verkéier;
  • Netz Kaart Gestioun;
  • Kubernetes Ënnerstëtzung;
  • Versammlung Pakete fir all Systemer;
  • Web-UI.

Mir schaffen dauernd un der Erweiderung vun der Konfiguratioun, Erhéijung vun Metriken an Optimisatioun.

Maacht mat beim Projet. De Projet huet sech cool erausgestallt, awer leider ass et nach ëmmer e Projet vun enger Persoun. Kommt bis GitHub a probéiert eppes ze maachen: engagéieren, testen, eppes proposéieren, Är Bewäertung ginn.

Mëttlerweil preparéiere mir eis op Saint HighLoad++, déi den 6. a 7. Abrëll zu St. gëlle fir e Rapport. Erfuerene Spriecher wësse scho wat ze maachen, awer fir déi, déi nei schwätzen, recommandéiere mir op d'mannst versichen. Un der Konferenz deelhuelen als Spriecher huet eng Rei Virdeeler. Wéi eng kënnt Dir zum Beispill um Enn liesen vun dësem Artikel.

Source: will.com

Setzt e Commentaire