Grafické rozhranie na ploche drží správne pripojenie, takže monitorovací skript, ktorý sa pokúsi otvoriť vlastné, nič neprečíta alebo, čo je horšie, rozhranie prestane odpovedať na výzvy. Zvyčajný záver je, že démon je nespoľahlivý. V komunitnom démonovi je obmedzenie zámerné: riadiace rozhranie obsluhuje jedného pripojeného klienta správy naraz a to číslo nemá nič spoločné s tým, koľko používateľov VPN unesie.

Jeden socket, jeden držiteľ

Kanál správy prijíma jedného pripojeného klienta. Keď dorazí druhý, zatiaľ čo prvý je aktívny, čaká alebo je odmietnutý, a neexistuje žiadny paralelný režim odberateľa skrytý za voľbou. Odpojenie aktuálneho držiteľa umožní démonovi prijať ďalšieho, čo je odovzdanie, nie druhý kanál.

To robí z každého ďalšieho nástroja konkurenta. Ak rozhranie vlastní pripojenie, dopytovací skript sa buď nepripojí, alebo uspeje až po tom, čo sa rozhranie vzdá, a sled sa opakuje pri ďalšom pripojení. Ak sa skript pripojí prvý, rozhranie stratí svoju riadiacu cestu a jeho výzvy prestanú fungovať. Ani jeden nástroj konflikt nehlási, pretože každý vidí len svoj vlastný neúspešný príkaz.

What you needMechanism that fitsWhat it cannot do
Periodic list of connected clientsStatus file written on an intervalDeliver events as they happen
Interactive prompts and session controlThe single management connectionServe two controllers at once
Multiple consumers of eitherOne owner process that fans outExist without you writing it

Rozhodnite, ktorý komponent vlastní riadenie

Vyberte jedného držiteľa interaktívneho kanála a nechajte ho byť jediným, kto sa pripája. Rozhranie, ktoré spravuje pripojenie, skript, ktorý odpovedá na overovacie výzvy, a kontrolér, ktorý ukončuje relácie, sa všetci počítajú ako držitelia a rolu môže mať len jeden.

Keď rozhranie vlastní pripojenie, použite integráciu, ktorú toto rozhranie ponúka, namiesto toho, aby ste s ním bojovali. Pretekanie s držiteľom o socket produkuje občasné poruchy, ktoré používateľom pripadajú náhodné, a ten, kto ladí, zvyčajne vidí len druhú polovicu pretekov. Poznamenajte si, ktorý proces sa po reštarte pripojí prvý, pretože toto poradie zakaždým rozhoduje o víťazovi. Monitor, ktorý štartuje pred rozhraním, si kanál podrží, kým sa rozhranie nevzdá.

Používajte snímky stavu pre zberače

Väčšina monitoringu potrebuje zoznam, nie rozhovor. Pravidelný stavový súbor na to odpovedá bez toho, aby sa dotkol riadiaceho kanála, a funguje ďalej, kým rozhranie zostáva pripojené.

status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix

Interval je rozpočet čerstvosti, takže ho nastavte podľa toho, čo panel skutočne potrebuje, a nie na najmenšiu hodnotu, ktorá sa zdá bezpečná. Snímka zapisovaná každých pár sekúnd je lacná; skript, ktorý sa každých pár sekúnd znova pripája k riadiacemu socketu, lacný nie je, pretože každé opätovné pripojenie súťaží s držiteľom.

Snímka nie je história ani prúd udalostí. Pripojenia, ktoré prídu a odídu v rámci jedného intervalu, sa nikdy neobjavia, takže požiadavku na audit nemožno splniť dopytovaním súboru, ktorý prepisuje sám seba. Ak potrebujete vedieť, či sa používateľ vôbec pripojil, je snímka nesprávny nástroj.

Vetvenie je návrh, nie režim

Ak niekoľko spotrebiteľov skutočne potrebuje živé údaje správy, postavte pred socket jeden dôveryhodný komponent a nechajte ho publikovať úzko vybrané pozorovania ostatným. Ten komponent vlastní opätovné pripojenie, overovacie výzvy a rozhodnutie o tom, čo je bezpečné vystaviť.

Postavte ho zámerne: definujte, ktoré dopyty sú povolené, logujte, kto sa pýtal, a vyhnite sa tomu, aby sa z vetviacej vrstvy omylom stal panel diaľkového ovládania. Démon nemá žiadny viacklientsky režim, ktorý by sa dal zapnúť, a žiadny konfiguračný riadok ho nevytvára. Berte držiteľa ako súčasť bezpečnostnej hranice, pretože drží rozhranie, ktoré dokáže odpojiť ľudí. Jeho reštart by mal byť rutinnou operáciou s dokumentovanou cestou obnovy.

Berte socket ako oprávnenie, nie ako metriky

Rozhranie správy môže odpojiť používateľov, zmeniť stav a čítať udalosti, ktoré menujú ľudí. Jeho heslo overuje klienta a nešifruje prenos, takže sieťový poslucháč vystaví rozhovor každému, kto ho môže sledovať.

Preferujte miestny socket alebo prísne obmedzený poslucháč a skontrolujte, na ktorý proces váš zberač skutočne mieri, pretože serverové produkty dodávajú vlastné správne API, ktoré sa správajú inak. Zberač namierený na nesprávneho démona dáva sebavedomé a nesprávne závery. Potvrďte cestu a vlastnícky proces, kým začnete ladiť dopyt, ktorý nič nevracia.

Súvisiace články