Konsul + iptables = :3

Di sala 2010 de şirket wargaming 50 pêşkêşker û modelek torgilokek hêsan hebûn: paşverû, pêşgir û dîwarê agir. Hejmara pêşkêşkeran mezin bû, model tevlihevtir bû: stasyon, VLAN-ên bi ACL-yê veqetandî, paşê VPN-yên bi VRF-an, VLAN-ên bi ACL-yên li ser L2, VRF-yên bi ACL-yên li ser L3-ê. Serî dizivire? Dê paşê bêtir kêfxweş bibe.

Dema ku 16 server hebûn, ne gengaz bû ku bêyî hêsir bi ewqas beşên heterojen re bixebite. Ji ber vê yekê me çareseriyek din peyda kir. Me stûna Netfilter girt, Konsul li wê wekî çavkaniyek daneyê zêde kir, û me dîwarek fireh a zû belavkirî stend. Wan ACL-yên li ser routeran veguheztin û wan wekî dîwarek agirek derveyî û hundurîn bikar anîn. Ji bo birêvebirina dînamîkî ya amûrê, me pergala BEFW pêş xist, ku li her deverê hate bikar anîn: ji birêvebirina gihîştina bikarhêner a tora hilberê heya veqetandina beşên torê ji hevûdu.

Konsul + iptables = :3

Ew ê ji we re vebêje ka ew hemî çawa dixebite û çima divê hûn ji nêz ve li vê pergalê mêze bikin. Ivan Agarkov (annmuor) serokê koma ewlehiya binesaziyê ya beşa Maintenance li navenda pêşkeftina Mînskê ya pargîdanî ye. Ivan fanek SELinux e, ji Perl hez dike, û kodê dinivîse. Wekî serokê koma ewlehiya agahdariyê, ew bi rêkûpêk bi têketin, paşvekêşan û R&D re dixebite da ku Wargaming ji hackeran biparêze û xebata hemî serverên lîstikê yên di pargîdaniyê de misoger bike.

Pirtûka dîrokî

Berî ku ez ji we re vebêjim ka me çawa kir, ez ê ji we re vebêjim ka em di serî de çawa gihîştin vê yekê û çima hewce bû. Ji bo vê yekê, em vegerin 9 salan: 2010, World of Tanks tenê xuya bû. Wargaming bi qasî 50 server hebûn.

Konsul + iptables = :3
Nexşeya mezinbûna servera pargîdanî.

Modela me ya torê hebû. Ji bo wê demê ew çêtirîn bû.

Konsul + iptables = :3
Modela torê di 2010 de.

Li pêşiyê mirovên xerab hene ku dixwazin me bişkînin, lê dîwarek wê heye. Li ser pişta dîwarê dîwar tune, lê li wir 50 server hene, em hemî wan dizanin. Her tişt baş dixebite.

Di 4 salan de, fîloya serverê 100 carî mezin bû, gihîşt 5000. Yekem torên veqetandî xuya bûn - qonaxa: ew nekarîn biçin hilberînê, û pir caran tiştên ku li wir dimeşandin hebûn ku xeternak bûn.

Konsul + iptables = :3
Modela torê di 2014 de.

Ji hêla bêhêziyê ve, me heman perçeyên hardware bikar anîn, û hemî kar li ser VLAN-ên veqetandî hate kirin: ACL ji VLAN-an re têne nivîsandin, ku destûr dide an cûreyek pêwendiyê red dike.

Di 2016-an de, hejmara serveran gihîşt 8000. Wargaming studyoyên din kişand, û torên pêwendiyê yên din xuya bûn. Wusa dixuye ku ew yên me ne, lê ne tam: VLAN bi gelemperî ji bo hevalbendan naxebite, divê hûn VPN bi VRF-ê bikar bînin, veqetandin tevlihevtir dibe. Tevliheviya insulasyona ACL mezin bû.

Konsul + iptables = :3
Modela torê di 2016 de.

Di destpêka sala 2018 de, fîloya makîneyan gihîştibû 16. 000 beş hebûn, û me yên mayî nehesiband, tevî yên girtî yên ku daneyên darayî tê de hatine tomarkirin. Tora konteyner (Kubernetes), DevOps, torên ewr ên ku bi VPN ve girêdayî ne, mînakî, ji IVS-ê, xuya bûne. Gelek qanûn hebûn - ew bi êş bû.

Konsul + iptables = :3
Modela torê û rêbazên tecrîdê di 2018 de.

Ji bo veqetandinê me bikar anî: VLAN bi ACL li ser L2, VRF bi ACL li ser L3, VPN û hêj bêtir. Gelek zêde.

Pirsgirêkên

Her kes bi ACL û VLAN re dijî. Kêşe çîye? Ev pirs dê ji hêla Harold ve were bersivandin, êşê vedişêre.

Konsul + iptables = :3

Gelek pirsgirêk hebûn, lê pênc yên mezin hebûn.

  • Zêdebûna bihayê geometrîkî ji bo qaîdeyên nû. Zêdekirina her qaîdeyek nû ji ya berê dirêjtir digirt, ji ber ku pêdivî bû ku pêşî were dîtin ka jixwe qaîdeyek wusa heye.
  • Di hundurê beşan de dîwarê agir tune. Parçe bi rengekî ji hev hatin veqetandin, û jixwe çavkaniyên têr li hundur tune bûn.
  • Rêgez ji bo demeke dirêj hatin sepandin. Operator dikarin di saetekê de yek qaîdeyek herêmî bi destan binivîsin. Ya cîhanî çend roj girt.
  • Zehmetiyên bi qaîdeyên lênêrînê re. Ya rasttir, ne pêkan bû. Qaîdeyên yekem di sala 2010-an de hatin nivîsandin, û piraniya nivîskarên wan êdî ji pargîdaniyê re xebitîn.
  • Asta kêm a kontrolkirina binesaziyê. Pirsgirêka sereke ev e - me baş nizanibû ku li welatê me çi diqewime.

Bi vî rengî endezyarek torê di sala 2018-an de xuya kir dema ku wî bihîst: "Pêdivî ye ku hinekî din ACL heye."

Konsul + iptables = :3

Rûsya

Di destpêka sala 2018an de biryar hat dayîn ku li ser vê yekê tiştek were kirin.

Bihayê entegrasyonê her ku diçe zêde dibe. Xala destpêkê ev bû ku navendên daneyê yên mezin piştgiriya VLAN û ACL-yên veqetandî rawestandibûn ji ber ku hafizeya amûran qediya.

Çareserî: me faktora mirovî rakir û peydakirina gihîştina herî zêde otomatîk kir.

Rêbazên nû ji bo sepandinê demek dirêj digire. Çareserî: sepana qaîdeyan bilezînin, wê belav bikin û paralel bikin. Ev pêdivî bi pergalek belavkirî heye da ku qaîdeyên xwe, bêyî rsync an SFTP ji hezar pergalê re bêne radest kirin.

Di hundurê beşan de dîwarê agir tune. Dema ku karûbarên cûda di nav heman torê de xuya bûn, dîwarek agir di nav beşan de dest pê kir ku ji me re were. Çareserî: di asta mêvandar de dîwarek agir bikar bînin - dîwarên agir-based mêvan. Hema hema li her devera ku me Linux heye, û li her derê me iptables hene, ev ne pirsgirêk e.

Zehmetiyên bi qaîdeyên lênêrînê re. Çareserî: Hemî qaîdeyan ji bo vekolîn û rêvebirinê li yek cîhek bihêlin, da ku em her tiştî kontrol bikin.

Kêm asta kontrolê li ser binesaziyê. Çareserî: envanterek ji hemî karûbar û gihîştinên di navbera wan de bigirin.

Ev ji pêvajoya teknîkî zêdetir pêvajoyeke îdarî ye. Carinan heftê 200-300 weşanên me yên nû hene, nemaze di dema promosyonên û betlaneyan de. Wekî din, ev tenê ji bo yek tîmek ji DevOps me ye. Digel ewqas berdanan, ne gengaz e ku meriv bibîne ka çi port, IP û entegrasyon hewce ne. Ji ber vê yekê, ji me re rêveberên karûbarê perwerdekirî yên taybetî hewce bûn ku ji tîman pirsîn: "Çi heye û çima we ew anî ziman?"

Piştî her tiştê ku me dest pê kir, endezyarek torê di sala 2019-an de dest bi vî rengî kir.

Konsul + iptables = :3

Sefîr

Me biryar da ku em ê her tiştê ku me dît bi alîkariya rêvebirên karûbarê têxin nav Konsul û ji wir em ê qaîdeyên iptables binivîsin.

Me çawa biryar da ku em vê yekê bikin?

  • Em ê hemî karûbar, toran û bikarhêneran berhev bikin.
  • Ka em li ser bingeha wan qaîdeyên iptables biafirînin.
  • Em kontrolê otomatîk dikin.
  • ....
  • BIRIN.

Konsul ne API-ya dûr e, ew dikare li ser her girêkekê bixebite û li iptables binivîse. Tiştê ku dimîne ev e ku meriv bi kontrolên otomatîkî ve were peyda kirin ku dê tiştên nehewce paqij bike, û piraniya pirsgirêkan dê çareser bibin! Em ê yên mayî jî her ku diçin bixebitin.

Çima Konsul?

Xwe baş îspat kiriye. Di 2014-15-an de, me ew wekî paşvekêşana Vault-ê bikar anî, ku tê de em şîfreyan hilînin.

Daneyên winda nake. Di dema karanîna de, Konsul di yek qezayek de dane winda nekir. Ev ji bo pergalek rêveberiya firewall zêdebûnek mezin e.

Têkiliyên P2P belavbûna guherînê zûtir dike. Bi P2P re, hemî guhertin zû têne, ne hewce ye ku bi demjimêran bisekinin.

REST API-ya hêsan. Me di heman demê de Apache ZooKeeper jî fikir kir, lê ew xwedan API-ya REST-ê tune, ji ber vê yekê hûn neçar in ku kevçîyan saz bikin.

Hem wekî Key Vault (KV) hem jî wekî Rêvebir (Kêşkirina Karûbar) dixebite. Hûn dikarin karûbar, katalog, û navendên daneyê bi yekcarî hilînin. Ev ne tenê ji bo me, lê ji bo tîmên cîran jî hêsan e, ji ber ku dema ku karûbarek gerdûnî ava dikin, em mezin difikirin.

Di Go de hatî nivîsandin, ku beşek ji stacka Wargaming e. Em ji vî zimanî hez dikin, me gelek pêşdebirên Go hene.

Pergala ACL ya hêzdar. Di Konsulê de, hûn dikarin ACL-ê bikar bînin da ku kontrol bikin ka kî çi dinivîse. Em garantî dikin ku qaîdeyên firewallê dê bi tiştek din re nebin hev û em ê bi vê yekê re nebin pirsgirêk.

Lê kêmasiyên Konsolos jî hene.

  • Heya ku we guhertoyek karsaziyê nebe, di nav navendek daneyê de pîvanê nake. Ew tenê ji hêla federasyonê ve tête mezin kirin.
  • Pir bi kalîteya torê û barkirina serverê ve girêdayî ye. Konsul dê wekî serverek li ser serverek mijûl bi rêkûpêk nexebite heke di torê de dereng hebin, mînakî, leza neyeksan. Ev ji ber girêdanên P2P û modelên belavkirina nûvekirinê ye.
  • Zehmetiya çavdêriya hebûna. Di statûya Konsulê de ew dikare bêje ku her tişt baş e, lê ew demek dirêj berê mir.

Me piraniya van pirsgirêkan dema ku Konsul bikar anî çareser kir, ji ber vê yekê me ew hilbijart. Pargîdanî ji bo paşverûyek alternatîf planek heye, lê em fêr bûne ku bi pirsgirêkan re mijûl bibin û niha bi Konsul re dijîn.

Konsul çawa dixebite

Em ê sê-pênc pêşkêşkeran li navendek daneya şertî saz bikin. Dê yek an du server nexebitin: ew ê nikaribin quorumek birêxistin bikin û biryar bidin ka kî rast e û kî xelet e dema ku dane hev nagirin. Zêdeyî pênc bê wate ye, hilberî dê dakeve.

Konsul + iptables = :3

Xerîdar bi her rêzê bi serveran ve girêdidin: heman ajan, tenê bi ala server = false.

Konsul + iptables = :3

Piştî vê yekê, xerîdar navnîşek girêdanên P2P digirin û di nav xwe de pêwendiyan ava dikin.

Konsul + iptables = :3

Di asta gerdûnî de, em gelek navendên daneyê girêdidin. Ew jî P2P ve girêdidin û danûstendinê dikin.

Konsul + iptables = :3

Dema ku em dixwazin daneyan ji navendek daneya din bistînin, daxwaz ji serverek berbi serverê diçe. Ev plan tê gotin Protokola Serf. Protokola Serf, mîna Konsul, ji hêla HashiCorp ve hatî pêşve xistin.

Hin rastiyên girîng li ser Konsul

Konsul belgeyek heye ku diyar dike ka ew çawa dixebite. Ez ê tenê rastiyên bijartî yên ku hêjayî zanînê ne bidim.

Serkêşên konsulê ji nav dengdêran masterek hilbijêrin. Konsul ji navnîşa pêşkêşkeran ji bo her navendek daneyê masterek hildibijêre, û hemî daxwaz tenê jê re diçin, bêyî ku hejmara serveran hebe. cemidandina mamosteyê ji nû ve nayê hilbijartin. Ger master neyê hilbijartin, daxwaz ji hêla kesî ve nayên xizmet kirin.

Ma we pîvana horizontal dixwest? Mixabin, na.

Daxwazek ji navendek daneya din re ji master berbi master diçe, bêyî ku ew ji kîjan serverê hatî. Serwerê hilbijartî 100% barkirinê distîne, ji bilî barkirina li ser daxwazên pêşwext. Hemî serverên di navenda daneyê de kopiyek nûjen a daneyê heye, lê tenê yek bersiv dide.

Yekane awayê pîvandinê ev e ku meriv moda rawestayî li ser xerîdar çalak bike.

Di moda rawestayî de, hûn dikarin bê quorum bersiv bidin. Ev modek e ku tê de em dev ji hevgirtina daneyê berdidin, lê ji ya berê piçekî zûtir dixwînin, û her serverek bersivê dide. Bi xwezayî, tomarkirin tenê bi riya masterê.

Konsul daneyên di navbera navendên daneyê de kopî nake. Dema ku federasyonek were civandin, her server dê tenê daneyên xwe hebin. Ji bo yên din, ew her gav li yekî din vedigere.

Atomîbûna operasyonan li derveyî danûstendinê nayê garantî kirin. Bînin bîra xwe ku hûn ne tenê ne ku dikarin tiştan biguherînin. Heke hûn cûda dixwazin, bi qeflekê ve danûstendinek bikin.

Operasyonên astengkirinê garantiya qefilandinê nakin. Daxwaz ji masterê diçe master, û ne rasterast, ji ber vê yekê garantiyek tune ku dema ku hûn asteng bikin, wek nimûne, li navendek daneya din, astengkirin kar bike.

ACL jî gihîştina garantî nake (di pir rewşan de). Dibe ku ACL nexebite ji ber ku ew di navendek daneya federasyonê de - li navenda daneya ACL (DC-ya seretayî) tê hilanîn. Ger DC bersiva we nede, ACL dê nexebite.

Yek axayekî cemidî dê bibe sedem ku hemû federasyon bicemide. Mînakî, di federasyonekê de 10 navendên daneyê hene, yek xwedî tora xirab e, û yek master têk diçe. Her kesê ku pê re danûstendinê bike, dê di çemberekê de bicemide: daxwazek heye, bersiv jê re tune, têl dicemide. Nabe ku meriv zanibe kengî dê ev yek çêbibe, tenê di saetek an du saetan de dê tevahî federasyon hilweşe. Tiştek ku hûn li ser wê bikin tune.

Statû, hejmar û hilbijartin ji hêla mijarek cuda ve têne rêve kirin. Ji nû ve hilbijartin çênabe, statû tiştekî nîşan nade. Hûn difikirin ku Konsulek we ya zindî heye, hûn dipirsin, û tiştek nabe - bersiv tune. Di heman demê de, statû nîşan dide ku her tişt baş e.

Me bi vê pirsgirêkê re rû bi rû maye û neçar ma ku beşên taybetî yên navendên daneyê ji nû ve ava bikin da ku jê dûr nekevin.

Guhertoya karsaziyê ya Consul Enterprise hin kêmasiyên jorîn tune. Gelek fonksiyonên wê yên kêrhatî hene: Hilbijartina dengdêran, belavkirin, pîvandin. Tenê yek "lê" heye - pergala lîsansê ji bo pergalek belavkirî pir biha ye.

Life hacking: rm -rf /var/lib/consul - dermanek ji bo hemî nexweşiyên agent. Ger tiştek ji we re nexebite, tenê daneyên xwe jêbirin û daneyan ji kopiyek dakêşin. Bi îhtîmaleke mezin dê Konsul kar bike.

BEFW

Niha em li ser tiştên ku me li Konsulê zêde kirine bipeyivin.

BEFW kurteya wê ye BackEndFezWgişt. Gava ku min depoyek çêkir, neçar ma ku ez hilberê bi rengekî nav bikim da ku yekem ceribandinên ceribandinê têxim nav wê. Ev nav dimîne.

qaîdeyên qaîdeyên

Rêgez bi hevoksaziya iptables têne nivîsandin.

  • -N BEFW
  • -P INPUT DOP
  • -A INPUT -m dewlet-dewlet TÊKIRIN, AVA KIRIN -j QEBÛL
  • -KÊNEKEKE -i lo -j QEBÛL
  • -KEKENEKE -j BEFW

Her tişt diçe nav zincîra BEFW, ji bilî ESTABLISHED, RELATED û localhost. Şablon dikare her tişt be, ev tenê mînakek e.

BEFW çawa bikêr e?

Xizmet

Xizmetek me heye, ew her gav portek, girêkek ku li ser dimeşe heye. Ji nodeya xwe, em dikarin herêmî ji ajanê bipirsin û fêr bibin ku me celebek karûbar heye. Hûn dikarin etîketan jî bixin.

Konsul + iptables = :3

Her karûbarek ku bi Konsul re tê xebitandin û qeydkirî dibe qaîdeyek iptables. Me SSH heye - porta vekirî 22. Skrîpta Bash hêsan e: curl û iptables, tiştek din ne hewce ye.

Clients

Meriv çawa ne ji her kesî re, lê bi bijartî vekir? Lîsteyên IP-ê li hilanîna KV-ê bi navê karûbarê zêde bikin.

Konsul + iptables = :3

Mînakî, em dixwazin her kes li ser tora dehemîn bikaribe xwe bigihîne karûbarê SSH_TCP_22. Zeviyek piçûk a TTL zêde bikin? û niha destûrên me yên demkî hene, wek nimûne, ji bo rojekê.

Gihîştin

Em karûbar û xerîdaran girêdidin: karûbarek me heye, hilanîna KV ji bo her yekê amade ye. Naha em ne ji her kesî re, lê bi bijartî destûr didin.

Konsul + iptables = :3

Kom

Ger em her carê bi hezaran IP-yan ji bo gihîştinê binivîsin, em ê westayî bibin. Ka em werin koman - di KV de binekomek cihê. Ka em jê re binav bikin (an koman) û li gorî heman prensîbê koman li wir hilînin.

Konsul + iptables = :3

Ka em werin girêdan: naha em dikarin SSH ne bi taybetî ji bo P2P, lê ji bo grûpek tevahî an çend koman vekin. Bi heman awayî, TTL heye - hûn dikarin li komekê zêde bikin û bi demkî ji komê derxînin.

Konsul + iptables = :3

Têkilî

Pirsgirêka me faktora mirovî û otomasyon e. Heta niha me bi vî awayî çareser kiriye.

Konsul + iptables = :3

Em bi Puppet re dixebitin, û her tiştê ku bi pergalê (koda serîlêdanê) ve girêdayî ye ji wan re vediguhezînin. Puppetdb (PostgreSQL-ya birêkûpêk) navnîşek karûbarên ku li wir têne xebitandin hilîne, ew dikarin li gorî celebê çavkaniyê werin dîtin. Li wir hûn dikarin fêr bibin ka kî li ku serlêdan dike. Di heman demê de ji bo vê yekê me daxwazek kişandin û pergala daxwaza yekbûnê jî heye.

Me befw-sync nivîsî, çareseriyek hêsan e ku alîkariya veguhastina daneyan dike. Pêşîn, cookies hevdemkirinê ji hêla puppetdb ve têne gihîştin. HTTP API li wir tê mîheng kirin: em daxwaz dikin ka kîjan karûbarên me hene, çi hewce dike ku were kirin. Paşê daxwazekê ji Konsulê dikin.

Ma entegrasyon heye? Erê: wan qaîdeyên nivîsand û destûr da ku Daxwazên Bikişînê bêne pejirandin. Ma hûn hewceyê portek diyarkirî ne an mêvandarek li hin komê zêde bikin? Daxwazê ​​bikişînin, binirxînin - êdî ne "200 ACL-yên din bibînin û hewl bidin ku li ser wê tiştek bikin."

Çêkirin

Pinging localhost bi zincîrek qaîdeyek vala 0,075 ms digire.

Konsul + iptables = :3

Ka em 10 navnîşanên iptables li vê zincîrê zêde bikin. Wekî encamek, ping dê 000 carî zêde bibe: iptables bi tevahî rêzik e, pêvajokirina her navnîşan hin dem digire.

Konsul + iptables = :3

Ji bo dîwarek dîwarê ku em bi hezaran ACL koç dikin, gelek rêgezên me hene, û ev dereng destnîşan dike. Ev ji bo protokolên lîstikê xirab e.

Lê eger em deynin 10 navnîşan di ipset de Ping jî dê kêm bibe.

Konsul + iptables = :3

Mesele ev e ku "O" (tevliheviya algorîtmayê) ji bo ipset her gav bi 1-ê re ye, çiqas qaîdeyên wan hene. Rast e, tixûbek heye - ji 65535 qaîdeyan zêdetir nikarin hebin. Heya nuha em bi vê yekê dijîn: hûn dikarin wan berhev bikin, berfireh bikin, du ipset di yek de çêbikin.

Storage

Berdewamek mentiqî ya pêvajoya dubarekirinê ev e ku agahdariya li ser xerîdaran ji bo karûbarê di ipset de hilîne.

Konsul + iptables = :3

Naha me heman SSH heye, û em bi yekcarî 100 IP-yan nanivîsin, lê navê ipset-a ku divê em pê re têkilî daynin destnîşan dikin, û qaîdeya jêrîn DROP. Ew dikare bibe yek qaîdeyek "Kî ne li vir e, DOP", lê ew zelaltir e.

Niha rê û rêbazên me hene. Karê sereke ev e ku meriv berî nivîsandina qaîdeyê komek saz bike, ji ber ku wekî din iptables qaîdeyê nanivîsin.

Nexşeya gelemperî

Di forma diagramê de, her tiştê ku min got wiha xuya dike.

Konsul + iptables = :3

Em soz didin Puppet, her tişt ji mêvandar re tê şandin, karûbar li vir, ipset li wir, û kesê ku li wir ne qeydkirî ye destûr nayê dayîn.

Destûr û înkar kirin

Ji bo ku cîhan zû xilas bike an zû kesek neçalak bike, di destpêka hemî zincîran de me du ipset çêkirin: rules_allow и rules_deny. Çawa dixebite?

Mînakî, kesek li ser malpera me bi botan barek çêdike. Berê, diviya bû ku hûn IP-ya wî ji têketinê bibînin, wê bigihînin endezyarên torê, da ku ew çavkaniya seyrûseferê bibînin û wî qedexe bikin. Niha cuda xuya dike.

Konsul + iptables = :3

Em wê ji Konsulê re dişînin, 2,5 çirkeyan bisekinin, û ew pêk tê. Ji ber ku Konsul bi P2P-ê zû belav dike, ew li her deverê, li her devera cîhanê dixebite.

Carekê min bi rengekî bi tevahî WOT ji ber xeletiyek dîwarê agir rawestand. rules_allow - ev sîgortaya me ya li hember rewşên wiha ye. Ger me li cîhek bi dîwarê agir re xeletiyek kir, tiştek li cîhek hate asteng kirin, em her gav dikarin şertek bişînin 0.0/0ku zû her tiştî hilde. Piştre em ê her tiştî bi destê xwe rast bikin.

Komên din

Hûn dikarin li cîhê komek din zêde bikin $IPSETS$.

Konsul + iptables = :3

Bo çi? Carinan kesek hewceyê ipset e, mînakî, da ku girtina hin perçeyek komê bişopîne. Her kes dikare her setê bîne, navê wan bike, û ew ê ji konsulê were hildan. Di heman demê de, set dikarin di qaîdeyên iptables de beşdar bibin an jî wekî tîmek tevbigerin NOOP: Lihevhatî dê ji hêla daemon ve were domandin.

Bikarhêner

Berê, bi vî rengî bû: bikarhêner bi torê ve girêdayî bû û bi navgîniya domainê ve parametre wergirt. Berî hatina firewalên nifşê nû, Cisco nizanibû ku meriv çawa fam bike ku bikarhêner li ku ye û IP li ku ye. Ji ber vê yekê, gihîştin tenê bi navê mêvandarê makîneyê hate dayîn.

Me çi kiriye? Dema ku me navnîşan wergirt em asê man. Bi gelemperî ev dot1x, Wi-Fi an VPN e - her tişt bi RADIUS re derbas dibe. Ji bo her bikarhênerek, em komek bi navê bikarhêner diafirînin û IP-yek tê de bi TTL-yek ku bi dhcp.lease-ya wê re wekhev e bi cîh dikin - gava ku ew biqede, qaîdeyek dê winda bibe.

Konsul + iptables = :3

Naha em dikarin bi navê bikarhêner, wekî komên din, gihîştina karûbaran vekin. Me êşa navên mêvandar dema ku ew diguhezin hildan, û me bar ji ser endezyarên torê girt ji ber ku ew êdî hewcedarê Cisco ne. Naha endezyar bixwe gihîştina ser serverên xwe tomar dikin.

Insulasyon

Di heman demê de me dest bi hilweşandina însulasyonê kir. Rêvebirên karûbar envanterek girtin, û me hemî torên xwe analîz kirin. Ka em wan di heman koman de parve bikin, û li ser serverên pêwîst kom hatine zêdekirin, mînakî, ji bo înkarkirinê. Niha jî heman îzolekirina sehneyê di qaîdeyên_înkarkirina hilberînê de diqede, lê ne di hilberînê de bixwe.

Konsul + iptables = :3

Plan zû û bi hêsanî dixebite: em hemî ACL-yên ji pêşkêşkeran derdixin, hardware dakêşin, û hejmara VLAN-ên veqetandî kêm dikin.

Kontrola yekitiyê

Berê, me tetikek taybetî hebû ku dema ku kesek qaîdeyek dîwarê agir bi destan diguhezand ragihand. Min ji bo kontrolkirina qaîdeyên firewall lînterek mezin dinivîsî, ew dijwar bû. Yekitî niha ji hêla BEFW ve tê kontrol kirin. Ew bi çavnebarî piştrast dike ku qaîdeyên ku ew çêdike nayên guhertin. Ger kesek qaîdeyên firewallê biguhezîne, ew ê her tiştî vegerîne. "Min zû proxy saz kir da ku ez ji malê bixebitim" - vebijarkên wusa zêde tune.

BEFW ipset ji karûbar û navnîşa befw.conf, qaîdeyên karûbarên di zincîra BEFW de kontrol dike. Lê ew zincîre û qaîdeyên din û ipsetên din çavdêrî nake.

Parastina Crash

BEFW her gav rewşa baş a herî dawî ya naskirî rasterast di strûktûra dewletê.binary de hilîne. Ger tiştek xelet bibe, ew her gav vedigere vê rewşê.bin.

Konsul + iptables = :3

Ev sîgorteya li dijî operasyona Konsulê ne aram e, dema ku ew dane neşand an kesek xeletiyek kir û qaîdeyên ku nayên sepandin bikar anîn. Ji bo ku em bê dîwar nemînin, heke di her qonaxê de xeletiyek çêbibe BEFW dê vegere rewşa herî dawî.

Di rewşên krîtîk de, ev garantiyek e ku em ê bi firewallek xebitandinê re bimînin. Em hemî torên gewr vekin bi hêviya ku admin were û wê rast bike. Rojekê ez ê vê yekê têxim nav mîhengan, lê naha me tenê sê torên gewr hene: 10/8, 172/12 û 192.168/16. Di nav Konsulê me de, ev taybetmendiyek girîng e ku ji me re dibe alîkar ku bêtir pêşde biçin.

Demo: di dema raporê de, Ivan moda demo ya BEFW nîşan dide. Temaşekirina xwenîşandanê hêsantir e видео. Koda çavkaniya Demo heye li ser GitHub.

dahfikên

Ez ê ji we re behsa xeletiyên ku em pê re rû bi rû mane.

ipset lê zêde bike set 0.0.0.0/0. Ger hûn 0.0.0.0/0 li ipset zêde bikin çi dibe? Ma dê hemî IP-ê werin zêdekirin? Dê gihîştina Înternetê hebe?

Na, em ê xeletiyek bi dest bixin ku du demjimêrên domdariya me lêçû. Wekî din, xelet ji sala 2016-an vir ve nexebitî, ew li RedHat Bugzilla di bin hejmara #1297092 de ye, û me ew bi tesadufî dît - ji raporek pêşdebiran.

Naha ew li BEFW qaîdeyek hişk e 0.0.0.0/0 dibe du navnîşan: 0.0.0.0/1 и 128.0.0.0/1.

ipset restore set <pel. Dema ku hûn jê re dibêjin ipset çi dike restore? Ma hûn difikirin ku ew eynî wekî iptables dixebite? Ma ew ê daneyan vegerîne?

Tiştek wusa tune - ew yekbûnek dike, û navnîşanên kevin naçin cîhekî, hûn gihîştinê asteng nakin.

Dema ceribandina tecrîdê me xeletiyek dît. Niha pergalek pir tevlihev heye - li şûna restore girtin create temp, paşê restore flush temp и restore temp. Di dawiya guheztinê de: ji bo atomîbûnê, ji ber ku heke hûn pêşî bikin flush û di vê gavê de hin pakêt tê, ew ê were avêtin û tiştek dê xelet bibe. Ji ber vê yekê li wir piçek efsûna reş heye.

konsul kv get -datacenter=din. Wekî ku min got, em difikirin ku em hin daneyan dipirsin, lê em ê an daneyan an xeletiyek bistînin. Em dikarin vê yekê bi rêya Konsulê herêmî bikin, lê di vê rewşê de dê her du jî bicemidînin.

Muwekîlê Konsulê herêmî li ser API-ya HTTP-ê pêça ye. Lê ew tenê disekine û tenê bersivê nade Ctrl + C, an Ctrl + Z, an tiştek, kill -9 di konsolê de next. Dema ku me komek mezin ava dikir, em bi vê yekê re rû bi rû man. Lê hê çareseriyek me tune ye, em xwe amade dikin ku vê xeletiyê li Konsulusê rast bikin.

Serkonsolos bersiv nade. Mamosteyê me di navenda daneyê de bersiv nade, em difikirin: "Dibe ku algorîtmaya ji nû ve bijartinê naha bixebite?"

Na, ew ê nexebite, û çavdêrî dê tiştek nîşan nede: Konsul dê bêje ku pêwendiyek pabendbûnê heye, rêberek hate dîtin, her tişt baş e.

Em çawa bi vê yekê re mijûl bibin? service consul restart li cron her saet. Ger 50 serverên we hebin, tiştek mezin tune. Gava ku 16 ji wan hene, hûn ê fêm bikin ka ew çawa dixebite.

encamê

Di encamê de, me avantajên jêrîn wergirtin:

  • 100% vegirtina hemî makîneyên Linux.
  • Lez
  • Otomatîkî.
  • Me endezyarên hardware û torê ji koletiyê azad kir.
  • Derfetên entegrasyonê derketine ku hema hema bêsînor in: Tewra bi Kubernetes, tewra bi Ansible, tewra bi Python re jî.

Минусы: Konsul, ku em niha pê re dijîn, û xercê xeletiyê pir giran. Mînakî, carekê saet 6:XNUMX (dema sereke li Rûsyayê) min tiştek di navnîşên torê de sererast dikir. Me wê demê tenê li BEFW îzolasyonê ava dikir. Min li deverek xeletiyek kir, wusa dixuye ku min maskek xelet destnîşan kir, lê her tişt di du çirkeyan de ket. Çavdêrî ronî dibe, kesê piştgiriyê yê li ser peywirê dibezî: "Tiştê me heye!" Serokê beşê gewr bû dema ku wî ji karsaziyê re diyar kir ku çima ev yek çêbû.

Mesrefa xeletiyê ew qas zêde ye ku me prosedûra xweya pêşîlêgirtinê ya tevlihev derxistiye holê. Ger hûn vê yekê li ser malperek hilberîna mezin bicîh bikin, ne hewce ye ku hûn nîşanek masterê li ser Konsulê bidin her kesî. Ev ê xirab bi dawî bibe.

Bihayê Min bi tenê 400 saetan kod nivîsand. Tîma min a ji 4 kesan pêk tê mehê 10 saetan ji bo her kesî piştgirî dide. Li gorî bihayê dîwarê dîwarê nifşê nû, ew belaş e.

Plans. Plana demdirêj ev e ku meriv veguheztina alternatîf bibîne ku li şûna an temamkirina Konsulê. Dibe ku ew ê Kafka an tiştek mîna wê be. Lê di salên pêş de em ê li ser Konsulê bijîn.

Planên tavilê: entegrasyona bi Fail2ban, bi çavdêrîkirinê, bi nftables, dibe ku bi belavkirinên din, metrîk, çavdêriya pêşkeftî, xweşbîn. Piştgiriya Kubernetes jî di planan de cîhek heye, ji ber ku naha me çend kom û xwestek hene.

Zêdetir ji planan:

  • lêgerîna anomalî di trafîkê de;
  • rêveberiya nexşeya torê;
  • Piştgiriya Kubernetes;
  • berhevkirina pakêtan ji bo hemî pergalan;
  • Web-UI.

Em bi berdewamî li ser berfirehkirina veavakirinê, zêdekirina metrîkan û xweşbîniyê dixebitin.

Tevlî projeyê bibin. Proje xweş derket, lê mixabin, ew hîn jî projeyek yek-kesî ye. Werin GitHub û hewl bidin ku tiştek bikin: bipejirînin, ceribandin, tiştek pêşniyar bikin, nirxandina xwe bidin.

Di vê navberê de em amadekariyê dikin Saint HighLoad ++Petersburgê, ku dê di 6 û 7ê Avrêlê de li St. serî li raporekê bidin. Axaftvanên bi ezmûn jixwe dizanin ku çi bikin, lê ji bo kesên ku nû diaxivin em bi kêmanî pêşniyar dikin cerribanî. Beşdarbûna konferansê wek axaftvan çend avantajên xwe hene. Ji bo nimûne, hûn dikarin di dawiyê de bixwînin vê gotarê.

Source: www.habr.com

Add a comment