Konsul + iptables = :3

Sa 2010 ang kompanya Wargaming adunay 50 ka mga server ug usa ka yano nga modelo sa network: backend, frontend ug firewall. Ang gidaghanon sa mga server mitubo, ang modelo nahimong mas komplikado: ang dula, nahimulag nga mga VLAN nga adunay mga ACL, unya mga VPN nga adunay mga VRF, mga VLAN nga adunay mga ACL sa L2, mga VRF nga adunay mga ACL sa L3. Nagtuyok ang ulo? Mas makalingaw unya.

Kung adunay 16 nga mga server, nahimo nga imposible nga magtrabaho nga wala’y luha nga adunay daghang mga heterogenous nga mga bahin. Busa nakahimo kami og laing solusyon. Gikuha namo ang Netfilter stack, gidugang ang Consul niini isip tinubdan sa datos, ug nakuha namo ang paspas nga gipang-apod-apod nga firewall. Gipulihan nila ang mga ACL sa mga router ug gigamit kini ingon usa ka eksternal ug internal nga firewall. Aron dinamikong pagdumala sa himan, among gihimo ang BEFW nga sistema, nga gigamit bisan asa: gikan sa pagdumala sa access sa user ngadto sa network sa produkto ngadto sa paglain sa mga bahin sa network gikan sa usag usa.

Konsul + iptables = :3

Isulti niya kanimo kung giunsa kini tanan ug kung ngano nga kinahanglan nimo nga susihon pag-ayo kini nga sistema. Ivan Agarkov (annmuor) mao ang pangulo sa grupo sa seguridad sa imprastraktura sa Maintenance division sa Minsk development center sa kompanya. Si Ivan usa ka fan sa SELinux, nahigugma sa Perl, ug nagsulat og code. Ingon ang pinuno sa grupo sa seguridad sa impormasyon, kanunay siyang nagtrabaho sa mga troso, backup ug R&D aron mapanalipdan ang Wargaming gikan sa mga hacker ug masiguro ang operasyon sa tanan nga mga server sa dula sa kompanya.

Kasaysayan sa Kasaysayan

Sa dili pa nako isulti kanimo kung giunsa namon kini nahimo, isulti ko kanimo kung giunsa namon kini nahimo sa una ug kung ngano nga kinahanglan kini. Aron mahimo kini, mobalik kita sa 9 ka tuig: 2010, bag-o lang nagpakita ang World of Tanks. Ang Wargaming adunay gibana-bana nga 50 ka mga server.

Konsul + iptables = :3
Ang tsart sa pagtubo sa server sa kompanya.

Kami adunay usa ka modelo sa network. Alang niadtong panahona kini mao ang labing maayo.

Konsul + iptables = :3
Modelo sa network kaniadtong 2010.

Adunay dili maayo nga mga tawo sa atubangan nga tumoy nga gusto nga bungkagon kami, apan kini adunay firewall. Wala’y firewall sa backend, apan adunay 50 nga mga server didto, nahibal-an namon silang tanan. Maayo ang tanan.

Sa 4 ka tuig, ang server fleet mitubo sa 100 ka beses, ngadto sa 5000. Ang unang nahilit nga mga network nagpakita - ang pagpahigayon: dili sila makaadto sa produksyon, ug adunay kanunay nga mga butang nga nagdagan didto nga mahimong peligroso.

Konsul + iptables = :3
Modelo sa network kaniadtong 2014.

Pinaagi sa inertia, gigamit namon ang parehas nga mga piraso sa hardware, ug ang tanan nga trabaho gihimo sa nahilit nga mga VLAN: Ang mga ACL gisulat sa mga VLAN, nga nagtugot o nagdumili sa usa ka matang sa koneksyon.

Sa 2016, ang gidaghanon sa mga server miabot sa 8000. Ang Wargaming misuhop sa ubang mga studio, ug ang dugang nga mga network sa kaanib nagpakita. Ingon sila ato, apan dili kaayo: Ang VLAN kanunay nga dili molihok alang sa mga kauban, kinahanglan nimo nga gamiton ang VPN sa VRF, ang pagkalainlain mahimong labi ka komplikado. Ang ACL insulation mixture mitubo.

Konsul + iptables = :3
Modelo sa network kaniadtong 2016.

Sa sinugdanan sa 2018, ang panon sa mga makina mitubo ngadto sa 16. Adunay 000 nga mga bahin, ug wala namo ihap ang uban, lakip ang mga sirado diin ang pinansyal nga datos gitipigan. Ang mga network sa sulud (Kubernetes), DevOps, mga network sa panganod nga konektado pinaagi sa VPN, pananglitan, gikan sa usa ka IVS, nagpakita. Adunay daghang mga lagda - kini sakit.

Konsul + iptables = :3
Ang modelo sa network ug mga pamaagi sa pag-inusara sa 2018.

Alang sa pag-inusara among gigamit: VLAN nga adunay ACL sa L2, VRF nga adunay ACL sa L3, VPN ug daghan pa. Sobra kaayo.

Mga problema

Ang tanan nagpuyo uban sa ACL ug VLAN. Unsa may problema? Kini nga pangutana tubagon ni Harold, nagtago sa kasakit.

Konsul + iptables = :3

Adunay daghang mga problema, apan adunay lima ka dagkong mga problema.

  • Geometric nga pagtaas sa presyo alang sa bag-ong mga lagda. Ang matag bag-ong lagda mas dugay nga idugang kaysa sa nauna, tungod kay kinahanglan una nga tan-awon kung naa na ba ang ingon nga lagda.
  • Walay firewall sulod sa mga bahin. Ang mga bahin sa usa ka paagi nahimulag gikan sa usag usa, ug wala nay igo nga mga kapanguhaan sa sulod.
  • Ang mga lagda gipadapat sa dugay nga panahon. Ang mga operator makasulat ug usa ka lokal nga lagda pinaagig kamot sulod sa usa ka oras. Ang global nga usa milungtad sa pipila ka mga adlaw.
  • Mga kalisud sa mga lagda sa pag-audit. Sa mas tukma, kini dili mahimo. Ang unang mga lagda gisulat balik sa 2010, ug kadaghanan sa ilang mga tagsulat wala na nagtrabaho sa kompanya.
  • Ubos nga lebel sa pagkontrol sa imprastraktura. Kini ang nag-unang problema - wala kami kahibalo kung unsa ang nahitabo sa among nasud.

Mao kini ang hitsura sa usa ka network engineer sa 2018 sa dihang nakadungog siya: "Need some more ACL."

Konsul + iptables = :3

Mga solusyon

Sa sinugdanan sa 2018, nakahukom nga buhaton ang usa ka butang bahin niini.

Ang presyo sa mga panagsama kanunay nga nagtubo. Ang sinugdanan nga punto mao nga ang dagkong mga sentro sa datos mihunong sa pagsuporta sa nahilit nga mga VLAN ug ACL tungod kay ang mga himan nahutdan sa memorya.

Solusyon: gikuha namo ang hinungdan sa tawo ug gi-automate ang paghatag sa pag-access sa maximum.

Ang bag-ong mga lagda nagkinahanglan og taas nga panahon sa pag-apply. Solusyon: pagpadali sa paggamit sa mga lagda, himoa nga kini maapod-apod ug managsama. Nagkinahanglan kini og usa ka distributed nga sistema aron ang mga lagda mahatag sa ilang kaugalingon, nga walay rsync o SFTP sa usa ka libo nga mga sistema.

Walay firewall sulod sa mga bahin. Usa ka firewall sa sulod sa mga bahin nagsugod sa pag-abut kanamo sa diha nga ang lainlaing mga serbisyo nagpakita sa sulod sa parehas nga network. Solusyon: gamita ang firewall sa lebel sa host - mga firewall nga nakabase sa host. Halos bisan diin kami adunay Linux, ug bisan diin kami adunay mga iptables, dili kini problema.

Mga kalisud sa mga lagda sa pag-audit. Solusyon: Itago ang tanan nga mga lagda sa usa ka lugar alang sa pagrepaso ug pagdumala, aron ma-audit namo ang tanan.

Ubos nga lebel sa kontrol sa imprastraktura. Solusyon: pag-imbentaryo sa tanan nga mga serbisyo ug pag-access sa taliwala nila.

Kini labaw pa sa proseso sa administratibo kaysa usa ka teknikal. Usahay kami adunay 200-300 nga bag-ong pagpagawas sa usa ka semana, labi na sa mga promosyon ug holiday. Dugang pa, kini alang lamang sa usa ka team sa among DevOps. Sa kadaghan sa mga pagpagawas, imposible nga makita kung unsang mga pantalan, IP, ug mga panagsama ang gikinahanglan. Busa, gikinahanglan namo ang espesyal nga nabansay nga mga manedyer sa serbisyo nga nangutana sa mga grupo: "Unsa man ang naa ug nganong inyo kining gipahibalo?"

Pagkahuman sa tanan nga among gilunsad, usa ka network engineer sa 2019 nagsugod nga ingon niini.

Konsul + iptables = :3

Konsul

Kami nakahukom nga among ibutang ang tanan nga among nakit-an sa tabang sa mga tigdumala sa serbisyo ngadto sa Consul ug gikan didto among isulat ang mga lagda sa iptables.

Giunsa namo pagdesisyon nga buhaton kini?

  • Among kolektahon ang tanang serbisyo, network ug tiggamit.
  • Himoon nato ang mga lagda sa iptables base niini.
  • Gi-automate namo ang pagkontrol.
  • ....
  • GANTOS.

Ang Consul dili usa ka hilit nga API, mahimo kini nga modagan sa matag node ug magsulat sa mga iptables. Ang nahabilin mao ang paghimo sa awtomatik nga mga kontrol nga maglimpyo sa wala kinahanglana nga mga butang, ug kadaghanan sa mga problema masulbad! Atong pauswagon ang uban samtang kita moadto.

Nganong Consul?

Napamatud-an nga maayo ang iyang kaugalingon. Sa 2014-15, gigamit namo kini isip backend para sa Vault, diin among gitipigan ang mga password.

Dili mawala ang data. Atol sa panahon sa paggamit, Consul wala mawad-an sa data sa panahon sa usa ka aksidente. Kini usa ka dako nga dugang alang sa usa ka sistema sa pagdumala sa firewall.

Ang mga koneksyon sa P2P nagpadali sa pagkaylap sa pagbag-o. Uban sa P2P, ang tanan nga mga pagbag-o moabut dayon, dili kinahanglan nga maghulat sa daghang oras.

Sayon nga REST API. Gikonsiderar usab namo ang Apache ZooKeeper, apan wala kini REST API, mao nga kinahanglan ka nga mag-install ug crutches.

Nagtrabaho isip Key Vault (KV) ug Directory (Service Discovery). Mahimo nimong tipigan ang mga serbisyo, mga katalogo, ug mga sentro sa datos sa usa ka higayon. Kombenyente kini dili lamang alang kanamo, apan alang usab sa mga silingan nga mga koponan, tungod kay kung magtukod usa ka global nga serbisyo, naghunahuna kami nga dako.

Gisulat sa Go, nga bahin sa stack sa Wargaming. Ganahan mi ani nga lengguwahe, daghan mig Go developers.

Kusog nga sistema sa ACL. Sa Consul, mahimo nimong gamiton ang mga ACL aron makontrol kung kinsa ang nagsulat kung unsa. Gigarantiya namon nga ang mga lagda sa firewall dili mag-overlap sa bisan unsa pa ug wala kami mga problema niini.

Apan ang Consul adunay usab mga kakulian.

  • Wala mag-scale sulod sa usa ka data center gawas kung ikaw adunay bersyon sa negosyo. Kini masukod lamang sa pederasyon.
  • Nagsalig kaayo sa kalidad sa network ug load sa server. Ang Consul dili molihok sa husto ingon usa ka server sa usa ka busy nga server kung adunay bisan unsang mga lags sa network, pananglitan, dili patas nga tulin. Kini tungod sa mga koneksyon sa P2P ug pag-update sa mga modelo sa pag-apod-apod.
  • Kalisud sa pagmonitor sa pagkaanaa. Sa status sa Consul makaingon siya nga okay ra ang tanan, pero dugay na siyang namatay.

Nasulbad namo ang kadaghanan niini nga mga problema samtang naggamit og Consul, mao nga among gipili kini. Ang kompanya adunay mga plano alang sa usa ka alternatibo nga backend, apan nakakat-on kami sa pag-atubang sa mga problema ug karon nagpuyo uban sa Consul.

Giunsa pagtrabaho ang Consul

Mag-instalar kami og tulo ngadto sa lima ka mga server sa usa ka conditional data center. Ang usa o duha ka mga server dili molihok: dili sila makahimo sa pag-organisar sa usa ka korum ug pagdesisyon kung kinsa ang husto ug kinsa ang sayup kung ang datos dili magkatugma. Labaw sa lima wala'y kahulogan, ang produktibo moubos.

Konsul + iptables = :3

Ang mga kliyente nagkonektar sa mga server sa bisan unsang pagkasunod-sunod: ang parehas nga mga ahente, gamit lamang ang bandila server = false.

Konsul + iptables = :3

Pagkahuman niini, ang mga kliyente makadawat usa ka lista sa mga koneksyon sa P2P ug magtukod mga koneksyon sa ilang kaugalingon.

Konsul + iptables = :3

Sa global nga lebel, nagkonektar kami sa daghang mga sentro sa datos. Gikonektar usab nila ang P2P ug nakigsulti.

Konsul + iptables = :3

Kung gusto namong bawion ang datos gikan sa laing data center, ang hangyo moadto gikan sa server ngadto sa server. Kini nga laraw gitawag Serf protocol. Ang Serf protocol, sama sa Consul, gimugna sa HashiCorp.

Pipila ka importante nga kamatuoran mahitungod sa Consul

Ang Consul adunay dokumentasyon nga naghulagway kung giunsa kini paglihok. Ako mohatag lamang ug pinili nga mga kamatuoran nga angay mahibaloan.

Ang mga server sa konsul nagpili usa ka agalon gikan sa mga botante. Gipili sa Consul ang usa ka agalon gikan sa lista sa mga server alang sa matag sentro sa datos, ug ang tanan nga mga hangyo moadto lamang niini, bisan unsa pa ang gidaghanon sa mga server. Ang master freezing dili mosangpot sa re-election. Kung ang agalon wala mapili, ang mga hangyo dili serbisyohan ni bisan kinsa.

Gusto ba nimo ang horizontal scaling? Sorry, dili.

Ang usa ka hangyo sa laing data center gikan sa master ngadto sa master, bisan unsa pa ang server niini. Ang napili nga agalon makadawat sa 100% sa load, gawas sa load sa forward requests. Ang tanan nga mga server sa data center adunay pinakabag-o nga kopya sa datos, apan usa ra ang motubag.

Ang bugtong paagi sa pag-scale mao ang pagpagana sa stale mode sa kliyente.

Sa stale mode, makatubag ka nga walay korum. Kini mao ang usa ka paagi diin kita mohunong data pagkamakanunayon, apan pagbasa sa usa ka gamay nga mas paspas kay sa naandan, ug bisan unsa nga server motubag. Siyempre, ang pagrekord lamang pinaagi sa agalon.

Ang Consul wala magkopya sa datos tali sa mga sentro sa datos. Kung ang usa ka pederasyon magtigum, ang matag server adunay kaugalingon ra nga datos. Alang sa uban, kanunay siyang molingi sa lain.

Ang atomicity sa mga operasyon dili garantiya sa gawas sa usa ka transaksyon. Hinumdomi nga dili lang ikaw ang makausab sa mga butang. Kung gusto nimo kini nga lahi, paghimo usa ka transaksyon nga adunay kandado.

Ang mga operasyon sa pag-block dili makagarantiya sa pagkandado. Ang hangyo gikan sa agalon hangtod sa agalon, ug dili direkta, mao nga wala’y garantiya nga ang pag-block molihok kung imong gibabagan, pananglitan, sa laing sentro sa datos.

Dili usab gigarantiyahan sa ACL ang pag-access (sa daghang mga kaso). Ang ACL mahimong dili molihok tungod kay kini gitipigan sa usa ka federation data center - sa ACL data center (Primary DC). Kung ang DC dili motubag kanimo, ang ACL dili molihok.

Ang usa ka nagyelo nga agalon magpahinabo sa tibuok pederasyon nga magyelo. Pananglitan, adunay 10 ka mga sentro sa datos sa usa ka pederasyon, ug ang usa adunay dili maayo nga network, ug usa ka agalon ang napakyas. Ang tanan nga nakigsulti kaniya mahigot sa usa ka lingin: adunay usa ka hangyo, walay tubag niini, ang hilo nag-freeze. Wala'y paagi nga mahibal-an kung kanus-a kini mahitabo, usa o duha lang ka oras mahulog ang tibuuk nga pederasyon. Wala kay mahimo bahin niini.

Ang kahimtang, korum ug mga eleksyon gidumala sa usa ka lahi nga hilo. Dili mahitabo ang re-election, dili magpakita ang status. Naghunahuna ka nga ikaw adunay usa ka buhi nga Konsul, mangutana ka, ug walay mahitabo - walay tubag. Sa samang higayon, ang status nagpakita nga ang tanan maayo.

Nasinati namo kini nga problema ug kinahanglan nga magtukod pag-usab sa piho nga mga bahin sa mga sentro sa datos aron malikayan kini.

Ang negosyo nga bersyon sa Consul Enterprise walay pipila sa mga disbentaha sa ibabaw. Kini adunay daghang mapuslanon nga mga gimbuhaton: pagpili sa mga botante, pag-apod-apod, pag-scale. Adunay usa lamang ka "apan" - ang sistema sa paglilisensya alang sa usa ka gipang-apod-apod nga sistema mahal kaayo.

Pag-hack sa kinabuhi: rm -rf /var/lib/consul - usa ka tambal alang sa tanan nga mga sakit sa ahente. Kung adunay dili molihok alang kanimo, kuhaa lang ang imong data ug i-download ang datos gikan sa usa ka kopya. Lagmit, motrabaho si Consul.

BEFW

Karon atong hisgutan kung unsa ang atong gidugang sa Consul.

BEFW maoy acronym sa BackEndFireWtanan. Kinahanglan nako nga hinganlan ang produkto bisan unsang paagiha sa dihang gibuhat nako ang repository aron mabutang ang una nga pagsulay nga nahimo niini. Kini nga ngalan nagpabilin.

Mga template sa lagda

Ang mga lagda gisulat sa iptables syntax.

  • -N BEFW
  • -P INPUT DROP
  • -Usa ka INPUT -m estado—estado MAY KAUGNAY, NATUKOD -j DAWAT
  • -A INPUT -i lo -j DAWATON
  • -A INPUT -j BEFW

Ang tanan moadto sa kadena sa BEFW, gawas ESTABLISHED, RELATED ug localhost. Ang template mahimong bisan unsa, kini usa lamang ka pananglitan.

Sa unsang paagi mapuslanon ang BEFW?

Mga Serbisyo

Kami adunay usa ka serbisyo, kini kanunay adunay usa ka pantalan, usa ka node diin kini nagdagan. Gikan sa among node, mahimo namon nga lokal nga pangutan-on ang ahente ug mahibal-an nga kami adunay usa ka matang sa serbisyo. Mahimo usab nimo ibutang ang mga tag.

Konsul + iptables = :3

Ang bisan unsang serbisyo nga nagdagan ug narehistro sa Consul nahimo nga usa ka lagda sa iptables. Naa mi SSH - open port 22. Simple ra ang Bash script: curl ug iptables, wala nay laing gikinahanglan.

Mga kliyente

Giunsa ang pag-abli sa pag-access dili sa tanan, apan pilion? Idugang ang mga lista sa IP sa pagtipig sa KV pinaagi sa ngalan sa serbisyo.

Konsul + iptables = :3

Pananglitan, gusto namo nga ang tanan sa ikanapulo nga network maka-access sa SSH_TCP_22 nga serbisyo. Pagdugang usa ka gamay nga TTL field? ug karon kami adunay temporaryo nga mga permit, pananglitan, alang sa usa ka adlaw.

Mga access

Gikonektar namo ang mga serbisyo ug mga kliyente: kami adunay serbisyo, ang KV storage andam na alang sa matag usa. Karon naghatag kami og access dili sa tanan, apan gipili.

Konsul + iptables = :3

Mga Grupo

Kung magsulat kita og liboan ka mga IP para ma-access matag higayon, kapoyon kita. Maghimo kita og mga grupo - usa ka bulag nga subset sa KV. Tawgon nato kini nga Alias ​​​​(o mga grupo) ug tipigan ang mga grupo didto sumala sa samang prinsipyo.

Konsul + iptables = :3

Magkonektar ta: karon mahimo na naton maablihan ang SSH dili espesipiko alang sa P2P, apan alang sa usa ka tibuuk nga grupo o daghang mga grupo. Sa parehas nga paagi, adunay TTL - mahimo nimong idugang sa usa ka grupo ug temporaryo nga tangtangon gikan sa grupo.

Konsul + iptables = :3

Integration

Ang atong problema mao ang human factor ug automation. Sa pagkakaron nasulbad na namo kini niining paagiha.

Konsul + iptables = :3

Nagtrabaho kami kauban ang Puppet, ug gibalhin ang tanan nga adunay kalabotan sa sistema (code sa aplikasyon) sa kanila. Ang Puppetdb (regular nga PostgreSQL) nagtipig sa usa ka lista sa mga serbisyo nga nagdagan didto, kini makit-an pinaagi sa tipo sa kapanguhaan. Didto nimo mahibal-an kung kinsa ang nag-aplay kung asa. Adunay usab kami usa ka pull request ug merge request system alang niini.

Gisulat namon ang befw-sync, usa ka yano nga solusyon nga makatabang sa pagbalhin sa datos. Una, ang mga cookies sa pag-sync ma-access sa puppetdb. Usa ka HTTP API ang gi-configure didto: among gihangyo kung unsang mga serbisyo ang naa namo, kung unsa ang kinahanglan buhaton. Unya naghangyo sila sa Consul.

Aduna bay integrasyon? Oo: gisulat nila ang mga lagda ug gitugutan ang mga Pull Request nga dawaton. Kinahanglan ba nimo ang usa ka piho nga pantalan o pagdugang usa ka host sa usa ka grupo? Pagbitad sa Paghangyo, pagrepaso - wala na "Pangita og 200 ka ubang mga ACL ug sulayi nga buhaton ang usa ka butang bahin niini."

Pag-optimize

Ang pag-ping sa localhost nga adunay walay sulod nga kadena sa lagda nagkinahanglan og 0,075 ms.

Konsul + iptables = :3

Atong idugang ang 10 ka iptables nga mga adres niini nga kadena. Ingon usa ka sangputanan, ang ping modaghan sa 000 ka beses: ang mga iptables hingpit nga linear, ang pagproseso sa matag adres nagkinahanglag panahon.

Konsul + iptables = :3

Alang sa usa ka firewall diin kami molalin sa liboan ka mga ACL, kami adunay daghang mga lagda, ug kini nagpaila sa latency. Kini dili maayo alang sa mga protocol sa pagdula.

Pero kung atong ibutang 10 ka adres sa ipset Mokunhod pa gani ang ping.

Konsul + iptables = :3

Ang punto mao nga ang "O" (algorithm complexity) alang sa ipset kanunay nga katumbas sa 1, bisan unsa pa kadaghan ang mga lagda. Tinuod, adunay limitasyon - dili mahimo nga labaw pa sa mga lagda sa 65535. Sa pagkakaron nagpuyo kami uban niini: mahimo nimong ikombinar sila, palapdan kini, paghimo og duha ka ipset sa usa.

Pagtipig

Ang usa ka lohikal nga pagpadayon sa proseso sa pag-uli mao ang pagtipig sa kasayuran bahin sa mga kliyente alang sa serbisyo sa ipset.

Konsul + iptables = :3

Karon kami adunay parehas nga SSH, ug wala kami magsulat sa 100 ka mga IP sa usa ka higayon, apan gibutang ang ngalan sa ipset nga kinahanglan namon nga makigsulti, ug ang mosunod nga lagda DROP. Mahimo kini nga mabag-o sa usa ka lagda "Kinsa ang wala dinhi, DROP", apan mas klaro.

Karon kita adunay mga lagda ug mga set. Ang panguna nga buluhaton mao ang paghimo usa ka set sa wala pa isulat ang lagda, tungod kay kung dili ang mga iptables dili magsulat sa lagda.

General scheme

Sa porma sa usa ka diagram, ang tanan nga akong gisulti ingon niini.

Konsul + iptables = :3

Kami nagpasalig sa Puppet, ang tanan gipadala sa host, mga serbisyo dinhi, ipset didto, ug bisan kinsa nga wala marehistro didto dili tugutan.

Allow & deny

Aron dali nga maluwas ang kalibutan o dali nga ma-disable ang usa ka tawo, sa sinugdanan sa tanan nga mga kadena naghimo kami duha ka ipset: rules_allow и rules_deny. Giunsa kini paglihok?

Pananglitan, adunay naghimo og load sa among Web gamit ang mga bot. Kaniadto, kinahanglan nimo nga pangitaon ang iyang IP gikan sa mga troso, dad-a kini sa mga inhenyero sa network, aron makit-an nila ang gigikanan sa trapiko ug i-ban siya. Lahi na ang hitsura karon.

Konsul + iptables = :3

Gipadala namo kini sa Consul, paghulat sa 2,5 segundos, ug nahuman na. Tungod kay ang Consul dali nga nag-apod-apod pinaagi sa P2P, kini molihok bisan diin, sa bisan unsang bahin sa kalibutan.

Sa higayon nga ako sa usa ka paagi bug-os nga mihunong WOT tungod sa usa ka sayop sa firewall. rules_allow - kini ang among paniguro batok sa ingon nga mga kaso. Kung nasayop kami sa usa ka lugar nga adunay firewall, adunay gibabagan sa usa ka lugar, mahimo kami kanunay magpadala usa ka kondisyon 0.0/0para dali kuhaa ang tanan. Sa ulahi atong ayuhon ang tanan pinaagi sa kamot.

Uban pang mga set

Mahimo nimong idugang ang bisan unsang ubang mga set sa kawanangan $IPSETS$.

Konsul + iptables = :3

Para unsa? Usahay adunay kinahanglan nga ipset, pananglitan, aron masundog ang pagsira sa pipila ka bahin sa cluster. Bisan kinsa mahimong magdala ug bisan unsang mga set, nganlan kini, ug sila kuhaon gikan sa Consul. Sa parehas nga oras, ang mga set mahimong makaapil sa mga lagda sa iptables o molihok isip usa ka team NOOP: Ang pagkamakanunayon ipadayon sa daemon.

Mga tiggamit

Kaniadto, kini sama niini: ang tiggamit konektado sa network ug nakadawat mga parameter pinaagi sa domain. Sa wala pa ang pag-abut sa bag-ong henerasyon nga mga firewall, ang Cisco wala mahibal-an kung giunsa ang pagsabut kung diin ang tiggamit ug kung diin ang IP. Busa, ang pag-access gihatag lamang pinaagi sa hostname sa makina.

Unsa may atong nabuhat? Kami natanggong sa higayon nga among nadawat ang adres. Kasagaran kini mao ang dot1x, Wi-Fi o VPN - ang tanan moagi sa RADIUS. Para sa matag user, maghimo mig grupo pinaagi sa username ug magbutang ug IP niini nga adunay TTL nga katumbas sa dhcp.lease niini - sa diha nga kini ma-expire, ang lagda mawala.

Konsul + iptables = :3

Karon mahimo na namon maablihan ang pag-access sa mga serbisyo, sama sa ubang mga grupo, pinaagi sa username. Gikuha namo ang kasakit sa mga hostname sa dihang nag-ilis sila, ug among gikuha ang palas-anon sa mga network engineer tungod kay wala na nila kinahanglana ang Cisco. Karon ang mga inhenyero mismo nagparehistro sa pag-access sa ilang mga server.

Pagbulag

Sa samang higayon, gisugdan namo ang pagbungkag sa insulasyon. Ang mga manedyer sa serbisyo mikuha ug imbentaryo, ug among gisusi ang tanan namong mga network. Atong bahinon sila sa parehas nga mga grupo, ug sa kinahanglan nga mga server ang mga grupo gidugang, pananglitan, aron malimud. Karon ang parehas nga pagbulag sa dula natapos sa mga lagda_pagdumili sa produksiyon, apan dili sa produksiyon mismo.

Konsul + iptables = :3

Ang laraw dali ug yano nga molihok: among gitangtang ang tanan nga mga ACL gikan sa mga server, gidiskarga ang hardware, ug gipakunhuran ang gidaghanon sa mga nahilit nga VLAN.

Pagkontrol sa integridad

Kaniadto, kami adunay usa ka espesyal nga trigger nga nagtaho kung adunay usa nga nagbag-o sa usa ka lagda sa firewall nga mano-mano. Nagsulat ako usa ka dako nga linter alang sa pagsusi sa mga lagda sa firewall, lisud kini. Ang integridad kontrolado na karon sa BEFW. Makugi niyang giseguro nga ang mga lagda nga iyang gihimo dili mausab. Kung adunay magbag-o sa mga lagda sa firewall, kini magbag-o sa tanan. “Nag-set up dayon ko og proxy para makatrabaho ko gikan sa balay”—wala nay ingon niana nga mga opsyon.

Gikontrol sa BEFW ang ipset gikan sa mga serbisyo ug gilista sa befw.conf, ang mga lagda sa mga serbisyo sa kadena sa BEFW. Apan wala kini nag-monitor sa ubang mga kadena ug mga lagda ug uban pang mga ipset.

Proteksyon sa pagkahagsa

Ang BEFW kanunay nga nagtipig sa katapusang nahibal-an nga maayong estado direkta sa state.bin binary nga istruktura. Kung adunay mahitabo nga sayup, kini kanunay nga gibalik sa kini nga estado.bin.

Konsul + iptables = :3

Kini usa ka seguro batok sa dili lig-on nga operasyon sa Consul, kung wala kini nagpadala mga datos o adunay usa nga nasayop ug gigamit ang mga lagda nga dili magamit. Aron masiguro nga dili kami mabiyaan nga walay firewall, ang BEFW mobalik sa pinakabag-o nga estado kung adunay sayup nga mahitabo sa bisan unsang yugto.

Sa kritikal nga mga sitwasyon, kini usa ka garantiya nga kita mabiyaan sa usa ka nagtrabaho nga firewall. Among giablihan ang tanan nga mga gray nga network sa paglaum nga ang admin moabut ug ayohon kini. Sa pila ka adlaw ibutang ko kini sa mga config, apan karon aduna na lang kami tulo ka gray nga network: 10/8, 172/12 ug 192.168/16. Sulod sa atong Consul, kini usa ka importante nga bahin nga makatabang kanato nga molambo pa.

Demo: atol sa report, gipakita ni Ivan ang demo mode sa BEFW. Mas sayon ​​ang pagtan-aw sa demonstrasyon video. Demo source code anaa sa GitHub.

Lit-ag

Isulti ko kanimo ang bahin sa mga bug nga among nasugatan.

ipset add set 0.0.0.0/0. Unsa ang mahitabo kung imong idugang ang 0.0.0.0/0 sa ipset? Madugang ba ang tanan nga IP? Magamit ba ang Internet?

Dili, makakuha kami usa ka bug nga naggasto kanamo og duha ka oras nga downtime. Dugang pa, ang bug wala molihok sukad sa 2016, kini nahimutang sa RedHat Bugzilla ubos sa numero #1297092, ug nakit-an namon kini nga aksidente - gikan sa taho sa usa ka developer.

Kini karon usa ka estrikto nga lagda sa BEFW nga 0.0.0.0/0 nahimong duha ka adres: 0.0.0.0/1 и 128.0.0.0/1.

ipset ibalik set <file. Unsa ang buhaton sa ipset kung gisultihan nimo kini restore? Sa imong hunahuna parehas ba kini nga nagtrabaho sa mga iptables? Mabawi ba niini ang datos?

Wala'y ingon niana - kini naghiusa, ug ang daan nga mga adres dili moadto bisan asa, dili nimo babagan ang pag-access.

Nakit-an namon ang usa ka bug sa pagsulay sa pag-inusara. Karon adunay usa ka medyo komplikado nga sistema - sa baylo nga restore gihuptan create tempunya restore flush temp и restore temp. Sa katapusan sa swap: alang sa atomicity, tungod kay kung buhaton nimo kini una flush ug niining higayona may moabot nga pakete, kini ilabay ug adunay dili maayo. Busa adunay gamay nga black magic didto.

consul kv get -datacenter=other. Sama sa akong giingon, naghunahuna kami nga nangayo kami og pipila ka datos, apan makakuha kami og datos o sayup. Mahimo namon kini pinaagi sa lokal nga Konsul, apan sa kini nga kaso ang duha mag-freeze.

Ang lokal nga kliyente sa Consul kay usa ka wrapper sa HTTP API. Apan nagbitay lang kini ug wala motubag sa Ctrl+C, o Ctrl+Z, o bisan unsa, lamang kill -9 sa sunod nga console. Among nasugatan kini sa dihang nagtukod mi ug dakong pungpong. Apan wala pa kami'y solusyon; nangandam kami nga ayohon kini nga sayup sa Consul.

Ang lider sa konsul wala motubag. Ang among agalon sa data center wala motubag, kami naghunahuna: "Tingali ang reselection algorithm magamit na karon?"

Dili, dili kini molihok, ug ang pag-monitor dili magpakita bisan unsa: Ang Consul moingon nga adunay indeks sa pasalig, usa ka lider ang nakit-an, ang tanan maayo.

Unsaon nato pag-atubang niini? service consul restart sa cron kada oras. Kung ikaw adunay 50 nga mga server, wala’y hinungdan. Kung adunay 16 niini, masabtan nimo kung giunsa kini molihok.

konklusyon

Ingon nga resulta, nakadawat kami sa mosunod nga mga bentaha:

  • 100% nga sakup sa tanan nga mga makina sa Linux.
  • Kusog
  • Automation.
  • Gipagawas namo ang mga inhenyero sa hardware ug network gikan sa pagkaulipon.
  • Ang mga posibilidad sa paghiusa nagpakita nga halos walay kinutuban: bisan sa Kubernetes, bisan sa Ansible, bisan sa Python.

Минусы: Konsul, diin kita karon kinahanglan nga mabuhi, ug ang taas kaayo nga gasto sa sayop. Ingon usa ka pananglitan, kausa sa 6 pm (prime time sa Russia) nag-edit ako usa ka butang sa mga lista sa mga network. Nagtukod lang kami og insulasyon sa BEFW niadtong panahona. Nasayop ko sa usa ka dapit, ingon og gipakita nako ang sayup nga maskara, apan ang tanan nahulog sa duha ka segundo. Nagsiga ang pagmonitor, nagdagan ang tigsuporta nga nag-duty: "Naa namo ang tanan!" Ang kadagkoan sa departamento nahimong ubanon sa dihang iyang gipasabot sa negosyo kon nganong nahitabo kini.

Taas kaayo ang gasto sa kasaypanan nga nakahimo kami sa among kaugalingon nga komplikado nga pamaagi sa pagpugong. Kung imong ipatuman kini sa usa ka dako nga site sa produksiyon, dili nimo kinahanglan nga hatagan ang usa ka master token sa Consul sa tanan. Kini matapos nga dili maayo.

Gasto Nagsulat ko og code sulod sa 400 ka oras nga nag-inusara. Ang akong team sa 4 ka tawo mogugol ug 10 ka oras kada bulan sa suporta para sa tanan. Kung itandi sa presyo sa bisan unsang bag-ong henerasyon nga firewall, libre kini.

Mga plano. Ang long-term nga plano mao ang pagpangita og alternatibong transportasyon aron ilisan o makadugang sa Consul. Tingali kini mahimong Kafka o usa ka butang nga susama. Apan sa umaabot nga mga tuig kita magpuyo sa Consul.

Diha-diha nga mga plano: pag-integrate sa Fail2ban, uban ang pagmonitor, uban ang mga nftable, posible sa ubang mga distribusyon, metrics, advanced monitoring, optimization. Ang suporta sa Kubernetes naa usab sa usa ka lugar sa mga plano, tungod kay karon kami adunay daghang mga kumpol ug gusto.

Dugang pa gikan sa mga plano:

  • pagpangita sa mga anomaliya sa trapiko;
  • pagdumala sa mapa sa network;
  • Suporta sa Kubernetes;
  • assembling packages alang sa tanang sistema;
  • Web-UI.

Kami kanunay nga nagtrabaho sa pagpalapad sa configuration, pagdugang sa metrics ug optimization.

Apil sa proyekto. Ang proyekto nahimo nga cool, apan, sa kasubo, kini usa pa ka proyekto sa usa ka tawo. Halika sa GitHub ug pagsulay sa pagbuhat og usa ka butang: pasalig, pagsulay, pagsugyot og usa ka butang, paghatag sa imong assessment.

Samtang nag-andam kami alang sa Saint HighLoad++, nga mahitabo sa Abril 6 ug 7 sa St. Petersburg, ug among gidapit ang mga developers sa high-load system pag-aplay alang sa usa ka report. Ang mga eksperyensiyado nga mga mamumulong nahibal-an na kung unsa ang buhaton, apan alang sa mga bag-o sa pagsulti among girekomenda labing menos sa pagsulay. Ang pag-apil sa komperensya isip usa ka mamumulong adunay daghang mga bentaha. Mahimo nimong basahon kung hain, pananglitan, sa katapusan niini nga artikulo.

Source: www.habr.com

Idugang sa usa ka comment