Lab

Logá klientov nájdete na domovskej stránke, appky majú vlastnú stránku; toto je iná vec. Máme vlastnú infraštruktúru a prevádzkujeme ju s disciplínou firmy, ktorá je desaťkrát väčšia — lebo je to miesto, kde si všetko otestujeme skôr, než by sme vám to navrhli. Každá z týchto vecí beží práve teraz. Nemenujeme „riešenia“, ale konkrétny softvér — všetko, čo je nižšie, si viete dohľadať a porovnať s tým, čo vám ponúka niekto iný.

Agentizácia · v ostrej prevádzke

Jedna brána, všetky modely, žiadne shadow AI

Situácia

Modely od siedmich rôznych poskytovateľov, niekoľko aplikácií, ktoré ich chcú — a predvolený výsledok: kľúče nakopírované všade, kde bolo treba, žiadny rozpočet, žiadny audit, žiadna predstava o tom, čo odchádza z budovy.

Čo sme urobili

Všetko ide cez LiteLLM. Dvadsaťosem ciest k modelom, kľúče vydané na projekt a viazané na konkrétne modely, rozpočty na projekt, stopa o tom, čo kam odišlo. Lokálne modely bežia na Ollame na vlastnej karte — vrátane bge-m3, ktorý počíta embeddingy pre vyhľadávanie v slovenčine za nejakých stopäťdesiat milisekúnd, takže dokumenty, v ktorých sa hľadá, nikam neodchádzajú. Nad tým agenti, ktorí prácu rovno vykonajú: bežia na pravidelnom rozvrhu, bez dozoru, čítať smú všetko, zapísať až po potvrdení.

Výsledok

Každá aplikácia klope na jedny dvere. Vymeniť poskytovateľa znamená zmeniť konfiguráciu, nie prehrabávať repozitáre. A na otázku „čo sme komu poslali“ existuje odpoveď — presne na tú sa totiž pýta audítor.

Čo nás to naučilo

Skôr než to išlo naostro, dali sme vlastný návrh na adversariálne review štyrom expertom. Našli cestu, ktorou mohol agent vyniesť vlastné prihlasovacie údaje, a overili, že naozaj funguje — v našom nástroji, na ktorý sme sa práve chystali spoľahnúť. Opravili sme to, fix overili a sandbox okolo utiahli: default-deny egress, read-only súborový systém, odobraté právomoci. Poučenie platí všeobecne: allowlist nástrojov, ktorý stráži schopnosť, ale nestráži cestu, je celá trieda zraniteľností. Odvtedy predpokladáme, že každé „prečítaj“ znamená „prečítaj čokoľvek“. Tú dieru u nás nenašiel nikto cudzí. Našli sme ju my, vo vlastnom návrhu, skôr než stihla niečo znamenať.

Ako to vyzerá u vás

Vaši vývojári už teraz lepia kód do chatovacieho okna — len to nevidíte. Jedna brána, kľúče pre každý tím, rozpočty, audit log a citlivá robota pripnutá na model, ktorý zostane vnútri. Prvý krok býva dvojtýždňový audit s písomným verdiktom.

Infraštruktúra · migrácia

Sťahovanie siete za plnej prevádzky

Situácia

Domáci router od operátora, ktorý robil DNS, DHCP aj VPN pre všetko, bez akéhokoľvek prehľadu a bez možnosti čokoľvek segmentovať. Vymeniť ho znamená vymeniť tri služby, na ktorých potichu visí každá ďalšia.

Čo sme urobili

MikroTik RB5009 preberal jednu službu po druhej, každú s cestou späť, počas dvoch dní. Najprv DNS, potom DHCP, potom WireGuard — nikdy naraz. Keď sa na WireGuard presunul posledný klient, starú OpenVPN sme zrušili. WiFi sme skonsolidovali na Omada AP riadené vlastným controllerom a hosťovskú aj IoT prevádzku oddelili do vlastných SSID.

Výsledok

Starý router sme fyzicky odpojili dva dni po spustení nového. Používateľom sme nič neoznamovali, lebo nebolo čo. Stará VPN je preč — nie vypnutá, preč.

Čo nás to naučilo

Nesťahujte DNS, DHCP a VPN naraz. Je to lákavé, lebo je to jeden večer namiesto troch, a je to presne tá cesta, na konci ktorej ladíte resolver cez VPN, ktorá na tom resolveri visí. Poskladajte ich za sebou a starú cestu držte nažive, kým sa nepresunie posledný klient — nie kým si myslíte, že sa presunul. A ešte jedno: keď je router jediný resolver v sieti, je to jediný bod, ktorý zhasne úplne všetko. My na to máme samostatné alert pravidlo, lebo raz nám tichá zmena resolvera odstrihla riadenie domácnosti a hodinu sme hľadali úplne inde.

Ako to vyzerá u vás

Vo firme s dvesto ľuďmi to vyzerá rovnako: riziko nie je v migrácii, ale v závislosti, ktorú si nikto nenakreslil. Skôr než sa niečoho dotkneme, zmapujeme, čo na čom visí, a prechod poskladáme tak, aby sa každý jeden krok dal vrátiť za pár minút.

Monitoring · od nuly

Monitoring, ktorému sa dá veriť o tretej ráno

Situácia

Kopa systémov a žiadna odpoveď na jedinú otázku, na ktorej záleží: beží to celé, a ak nie, čo spadlo prvé?

Čo sme urobili

Prometheus, Grafana a Alertmanager, postavené od nuly. Devätnásť zberných úloh, stotri alert pravidiel, sedemnásť dashboardov. Exportéry na všetko vrátane železa: node_exporter, cAdvisor, smartctl na disky, blackbox na sondy, mktxp na router a exportér na WiFi controller. DNS kontrola sa pýta resolvera na reálnu rekurziu, takže prejde len vtedy, keď naozaj odpovie. Alerty sa navzájom tlmia a chodia do Signalu cez vlastný most, takže mŕtvy resolver zavolá raz, nie štyridsaťkrát.

Výsledok

Pod dohľadom je každá služba — vrátane teploty GPU a dní do expirácie certifikátu. A keď niečo spadne, prvý alert pomenuje príčinu; hlásenia o následkoch sa potlačia. A nad všetkým je status stránka, ktorá na otázku „beží to celé?" odpovie za tri sekundy z mobilu, bez prehrabávania sa dashboardmi.

Čo nás to naučilo

Audit, ktorý k tomu patril, odhalil, že časť našich záloh bola len atrapa — spustila sa a neobnovila nič. Prišli sme si na to sami, opravili to a odvtedy testujeme obnovy, nie zálohy. Záloha, ktorú ste nikdy neobnovili, nie je záloha — je to presvedčenie. Nás to poučenie nestálo nič, lebo sme si poň išli. Väčšinou stojí všetko.

Ako to vyzerá u vás

Otázka nie je, či máte Grafanu. Otázka je, či alert o tretej ráno niečo znamená a či ho ešte vôbec niekto číta. Staviame alert pravidlá s tlmením, aby vás jedna mŕtva závislosť nezobudila štyridsaťkrát a nenaučila tím ignorovať všetky.

Zálohy · odmerané

Zálohy, ktoré prežijú aj útočníka s právami roota

Situácia

Zálohy na disku vedľa servera sú zálohy dovtedy, kým niekto nezašifruje aj ten disk. Pravidlo 3-2-1 — tri kópie, dve rôzne médiá, jedna mimo budovy — pozná každý; dodržané ho vidno málokedy, lebo tá jedna mimo budovy znamená buď mesačný účet u cloudu, alebo krabicu u niekoho, komu musíte veriť.

Čo sme urobili

Offsite prijímač je jednodoskový ARM počítač s externým diskom, fyzicky v inom meste, dosiahnuteľný výhradne cez WireGuard. Beží na ňom rest-server v režime append-only a restic šifruje ešte u klienta — takže ten vzdialený disk je z pohľadu dôvernosti hlúpe úložisko a heslo k repozitáru je jediné, čo treba chrániť. Jedenásť pravidelných jobov, GFS retencia, a každý z nich má vlastné alert pravidlo v Prometheu.

Výsledok

Append-only znamená, že kompromitovaný zdrojový server nevie prepísať ani zmazať históriu záloh. Môže pridať nové dáta. K starým sa už nedostane. Prune beží z tretieho stroja v krátkom okne, takže právo mazať existuje pár minút denne a nie je na tom stroji, na ktorý sa útočí.

Čo nás to naučilo

Merali sme, lebo sme si mysleli, že nočný beh je pomalý kvôli linke. Nebol. Deväť desatín nočného behu je skenovanie miliónov nezmenených súborov na zdroji; samotný prenos je zlomok, lebo hore ide rádovo gigabajt zmien. Keby sme neboli merali, boli by sme mesiac ladili prijímač, ktorý sa nudí. Druhá vec je rovnako dôležitá: táto zostava prežije kompromitáciu jadra siete, ale neprežije kompromitáciu stroja, z ktorého sa zálohy riadia. Hranicu systému treba napísať rovnako presne ako jeho schopnosti, inak si ju čitateľ domyslí väčšiu, než je.

Ako to vyzerá u vás

Dve otázky, na ktorých sa to láme, a ani jedna nie je o softvéri: kedy ste naposledy skutočne obnovili súbor zo zálohy, a vie váš zálohovací systém prežiť útočníka, ktorý získa práva na zálohovanom stroji? Ak je odpoveď na prvú „nepamätám sa“, druhú už netreba riešiť.

Začnite hodinou

Žiadna prezentácia, žiadne úvodné analýzy, žiadna faktúra. Jedna hodina a rovná odpoveď: toto by sme spravili, toľko to stojí — alebo na toto nás nepotrebujete.

Ozvite sa