OpenVPN push-peer-info: kliensek címkézése hozzáférés nélkül
Egy UV_ mező utazik a hitelesített alagúton, de az érték továbbra is a kliens állítása. Kösse be, ellenőrizze, mi érkezett meg, és tartsa az engedélyezést a kiszolgálón.
A telepítési címkék a szokásos ok, amiért az emberek ehhez a funkcióhoz nyúlnak: minden kapcsolatnak hordoznia kell valamit, például egy helyszínt vagy egy szerepkört, és a kiszolgálónak ezt anélkül kell olvasnia, hogy második hitelesítőadat-formátumot találna ki. A közösségi OpenVPN-ben már megvan a mechanizmus, és kicsi. A fájdalmas rész az elvárások. Egy közönséges változó beállítása a kliensprofilban semmit nem tesz a kiszolgálón, és a megérkező érték csak azt bizonyítja, hogy a kliens elküldte.
Ez egy üzemeltetési útmutató a működő úthoz, az ellenőrzési lépéshez, amely megmutatja, mi érkezett meg valójában, és a visszaállításhoz, amely nem hagy maga után félig beállított horgot. Itt semmi nem igényel új tanúsítványt, új beépülő modult vagy protokollbővítést.
Állítsa be a változót, és engedélyezze az utat
Két sor végzi el a munkát a kliensprofilban, és mindkettő szükséges. Az első nélkül nincs mit elküldeni; a második nélkül a kliens egyáltalán nem kínál társinformációt. A sorrend nem számít, és ezt érdemes tudni, mert a két sor gyakran egy generált profil különböző részeibe kerül. Az a fontos, hogy mindkettő túlélje a profil bármilyen újraírását, mielőtt a kliens olvassa.
setenv UV_DEPLOY field-support
push-peer-info
A UV_ előtag nem díszítés. Egy közönséges DEPLOY változó helyben marad a kliensfolyamatban, és soha nem továbbítódik, míg az előtagos forma az a névtér, amelyet a protokoll a felhasználó által meghatározott mezőknek tart fenn. Hagyja érintetlenül a jóváhagyott profil többi részét, és telepítés előtt győződjön meg arról, hogy a telepített kliens build támogatja mindkét utasítást.
Egy gyakorlati ellenőrzés ide tartozik, nem a végére: győződjön meg arról, hogy az utasítás eléri a kliens binárist, és nem nyeli el egy burkoló. Egy grafikus kliens, amely saját parancssort állít elő, vagy egy kezelőfelület, amely újratölt egy mentett profilt, eldobhat olyan sorokat, amelyeket nem ismer fel. Ha a kiszolgáló semmit nem lát, ez az első hely, ahol érdemes keresni.
Olvassa ki a mezőt egy kiszolgálóhorogból
A kiszolgáló oldalán a fogadott társinformációt ellenőrzik, és beillesztik a kapcsolat munkafolyamatának környezetébe, és ez teszi olvashatóvá egy horogból anélkül, hogy Önnek protokollmunkát kellene végeznie. A kiszolgálónak nem kell elemeznie a vezérlőcsatornát, és nem kell semmit tárolnia Önnek; az érték egyszerűen jelen van a kapcsolat létrehozása közben. Egy minimális client-connect szkript, amely a hitelesített név mellé rögzíti a címkét, így néz ki.
#!/bin/sh
# /etc/openvpn/server/hooks/label.sh
printf '%s %s\n' "$common_name" "${UV_DEPLOY:-unset}" \
>> /var/log/openvpn/deploy-labels.log
A változót a környezeten keresztül olvassa ki, ne a napló elemzésével, és mindig adjon neki alapértelmezett értéket. A ${UV_DEPLOY:-unset} működőképesen tartja a szkriptet azoknak a klienseknek, amelyek soha nem küldik a mezőt, ami a fokozatos bevezetés során a normál állapot. Ne öntse a teljes környezetet naplóba a név megtalálásához; sokkal többet tartalmaz a címkénél, beleértve olyan értékeket, amelyeket nem szándékozott megtartani.
Futtassa a szkriptet kézzel, és mindenre unset fog jelenteni, mert egy kézi héj nem hordozza a kapcsolat környezetét. Ez nem hiba a szkriptben, és nem bizonyítja, hogy a mező hiányzik. Tesztelje valódi kapcsolaton keresztül, ami az egyetlen környezet, ahol a változó létezik.
Ellenőrizze, mi érkezett meg valójában
Csatlakoztasson egy klienst a címkével és egyet anélkül, majd olvassa el a fájlt. A pár a teszt: az egyik sornak az értéket kell hordoznia, a másiknak az alapértelmezettet, és mindkettőnek ugyanazt a hitelesített identitást kell megneveznie, amelyet vár.
tail -n 5 /var/log/openvpn/deploy-labels.log
# field-support deployed-client-07
# unset legacy-laptop-02
Azok a megjegyzéssorok a kimenet formáját mutatják, nem a kiszolgáló átiratát; olvassa a saját fájlját. Ha a második kliens is mutat értéket, a változó máshol van beállítva a környezetben, és Ön elavult beállítást olvas a társmező helyett.
Ellenőrizze a kiszolgáló naplóját is a kapcsolathoz. A társinformáció megjelenhet ott, ami kényelmes a hibakereséshez, és ok arra, hogy az értékek unalmasak maradjanak: nevek nélkül, jegyszámok nélkül, semmi olyan nélkül, amit ne szeretne, ha egy naplóolvasó látna.
Kezelje a címkét állításként, ne identitásként
Bárki, aki szerkesztheti a kliensprofilt, megváltoztathatja a címkét, és az, hogy az alagút hitelesített, nem teszi a címkét mérvadóvá. A szállítás védi az értéket útközben; nem tanúsítja az állítást. Az engedélyezés továbbra is a hitelesített identitáshoz és a kiszolgáló tulajdonában lévő regisztrációs rekordhoz tartozik, és a címkét szükség esetén összevetik ezzel a rekorddal.
Ez a megkülönböztetés dönti el, hol használható a címke. Jó felhasználás a munkamenet átirányítása a megfelelő naplófájlba, egy megjelenítési csoport kiválasztása egy irányítópulton, vagy egy támogatási munkamenet címkézése, hogy egy ember később megtalálja. Rossz felhasználás egy eszköz beengedése egy alhálózatba, tűzfal-szabályzat kiválasztása, vagy annak eldöntése, hogy melyik ügyfél adatait olvashatja a munkamenet.
Hitelesítse az értéket, mielőtt elérne egy útvonalat, lekérdezést vagy héjparancsot. Az elvárt karakterláncok engedélyezési listája elegendő egy telepítési címkéhez, és semmibe nem kerül. Soha ne illesszen be egy társ által szolgáltatott karakterláncot héjparancssorba, és minden tárolt megfigyelést a munkamenetre korlátozzon, ne pedig egy alagútcímre, amelyet a következő kliens újrahasznál.
case "${UV_DEPLOY:-}" in
field-support|field-qa|lab) : ;;
*) UV_DEPLOY=unknown ;;
esac
Állítsa vissza tisztán
A funkció eltávolítása két törlés és egy ellenőrzés. Távolítsa el a setenv és push-peer-info sorokat a kliensprofilból, majd távolítsa el vagy tiltsa le a horgot és annak naplócélját a kiszolgálón.
grep -rn 'UV_DEPLOY\|push-peer-info' /etc/openvpn/
tail -n 3 /var/log/openvpn/deploy-labels.log
Ezután csatlakoztasson újra egy klienst, és erősítse meg, hogy a naplósor megszűnik megjelenni. A profilváltozás után is működő horog általában egy második profil, amely még mindig telepítve van egy teszteszközön, és most megtalálni olcsóbb, mint egy audit során.
A végén egy kicsi, korlátozott munkamenet-metaadat marad, amelynek eredete dokumentált: a kliens állítja, a kiszolgáló rögzíti, és a hozzáférés szempontjából semmi nem függ tőle. Ez a funkció hasznos változata, és nincs szükség új hitelesítő adatra, hogy eljusson oda.