Að keyra nc -uz gegn OpenVPN þjóni mælir nánast ekkert, og OpenBSD-handbókin segir það í fyrirvörum sínum: UDP-skannanir í þeim ham tilkynna árangur hvort sem eitthvað hlustar eða ekki. Útgöngustaðan endurspeglar staðbundna sendingu, ekki fjarlæga stöðu, svo eftirlitsaðili sem treystir henni heldur dauðum þjóni merktum sem heilbrigðum svo lengi sem ferlataflan virðist trúverðug. Að skipta henni út byrjar á að ákveða hvaða spurningu prófunin eigi að svara, því ferli, hlustandi, auðkenning og aðgengi forritsins eru fjórar mismunandi athuganir. Prófun sem nefnir eina þeirra er gagnleg; prófun sem gefur í skyn allar fjórar er byrði.

Hvað UDP-prófun getur og getur ekki séð

nc -uz sendir gagnagrunn og hættir, og staðan sem hún skilar lýsir staðbundinni sendingu. Lokuð gátt getur svarað með ICMP port unreachable, en skjalfest hegðun þessa skönnunarhams breytir því ekki í mistök, og síað port gefur alls ekkert svar. Þögn og árangur þýða því það sama fyrir kallandann.

Það gerir prófunina að prófun á staðbundnum stakki, ekki þjóninum. Hún staðfestir ekki að hýsillinn sé aðgengilegur, að gáttin sé bundin, að OpenVPN-ferlið sé í gangi eða að biðlari gæti auðkennt sig. TCP-tengingarpróf er sterkara því handabandið gefur skýrt svar, en aðeins þegar uppsetningin hlustar í raun á TCP. Að færa prófunina yfir á TCP á sama númeri prófar hlustanda sem er kannski ekki til, og gegn þjóni sem aðeins notar UDP mun það fella heilbrigða þjónustu.

Að laga prófunina að skilgreindri flutningi kemur á undan trausti á öðru hvoru niðurstöðunni. UDP-uppsetning þarf annað merki, ekki annað samskiptareglur.

Þrír kallendur, þrjár mismunandi spurningar

Tilbúinn háttur fer eftir því hver spyr. Þjónustustjóri sem endurræsir hrunið ferli þarf að vita að eintakið byrjaði og batt hlustandann sinn. Hleðslujafnari þarf að vita að biðlari sem kemur núna yrði tekinn. Vöktunarkerfi þarf að vita að leiðin frá raunverulegu neti beri enn lotu að leyfðri auðlind.

Þetta er ekki sama prófunin, og ein prófun getur ekki með heiðarleika þakið allar þrjár. Veldu fyrst kallandann, síðan sönnunina.

Byggðu prófunina á núverandi eintaki

OpenVPN skrifar ræsingarlínu þegar eintak lýkur frumstillingu, og sú lína er gagnleg sönnun um staðbundna ræsingu. Lestu hana frá núverandi ræsingu frekar en úr stéli á viðbættri skrá, því árangur frá síðustu viku lesest nákvæmlega eins og árangur frá því fyrir mínútu. Þjónn getur líka lokið frumstillingu áður en nokkur biðlari hefur nokkurn tíma tengst, svo línan segir ekkert um auðkenningu.

Fyrir ræsingarprófun skaltu para ferlisstöðu við núverandi loggsönnun og hlustanda sem passar við skilgreindan flutning. Prófunin á að mistakast þegar ferlið er í gangi en hefur ekki lokið frumstillingu, sem þýðir að fyrirspurn í loggið verður að takmarkast við þessa ræsingu og þessa einingu.

systemctl is-active openvpn@server
sudo journalctl -u openvpn@server -b --no-pager | grep "Initialization Sequence Completed"
ss -lunp | grep 1194

Þrjú úttök, þrjár fullyrðingar: einingin er virk, þessi ræsing framleiddi frumstillingarlínuna, og eitthvað heldur UDP-gáttinni. Ekkert þeirra segir að biðlari geti tengst. Haltu þeim aðskildum á stöðusíðunni svo atvik hrynji ekki í einn grænan punkt.

Brotnu það viljandi og fylgstu með prófuninni

Prófun er aðeins áreiðanleg þegar þú hefur séð hana mistakast. Stöðvaðu þjóninn, keyrðu prófunina og staðfestu niðurstöðuna sem þú býst við. Ræstu hann svo aftur og staðfestu að prófunin nái sér án nokkurrar annarrar breytingar.

sudo systemctl stop openvpn@server
nc -uz 203.0.113.10 1194; echo "exit=$?"
ss -lunp | grep 1194
sudo systemctl start openvpn@server
ss -lunp | grep 1194

Lestu blokkið línu fyrir línu. Netcat-skipunin prentar exit=0 á meðan ekkert er bundið, og það er allt vandamálið í einni línu. Fyrsta ss prentar ekkert, endurræsingin tekst, og önnur ss sýnir hlustandann aftur. Ef prófunin þín stenst gegn stöðvuðum þjóni mælir hún staðbundna stakkinn og ekkert annað.

Hið gagnstæða mistök skipta líka máli. Prófun sem mistekst gegn heilbrigðum þjóni veldur endurræsingum sem aldrei voru nauðsynlegar, og endurræsingarlykkja er í sjálfu sér truflun. Prófaðu báðar áttir áður en þú tengir prófunina við eitthvað sem getur brugðist við henni.

Hvað stöðulínan ætti að segja

Skráðu hvaða mörk hver prófun nær yfir: ferli, hlustandi, auðkenning eða forrit. Ein prófun nær sjaldan yfir fleiri en eitt, og stöðusíða sem þjappar þeim í “up” felur muninn sem skiptir máli í atviki. Fyrir netleiðina skaltu nota raunverulegan biðlara með sérstaka auðkenni, láta hann ljúka handabandinu og einni skaðlausri leyfðri aðgerð, og aftengja svo. Það æfir stýrirásina, auðkenningarstefnuna og hlustandann í einu skrefi.

Haltu þessu auðkenni aðskildu frá raunverulegum notendum og gefðu því lágmarksheimildir sem prófunin þarf. Tilbúinleikaprófun með víðtækum aðgangi er nýtt árásarflötur sem bætt var við vegna þæginda. Snúðu skírteinum hennar eins og hvaða öðrum reikningi sem er, því prófun sem hættir að auðkenna lítur nákvæmlega út eins og þjónn sem hætti að taka við biðlurum.

Nefndu mörkin í viðvörunartextanum, svo fyrsti viðbragðsaðili viti hvort hann eigi að skoða eininguna, sokkinn, skírteinið eða leiðina. Prófun sem getur ekki sagt hvað hún sannaði verður treyst af rangri ástæðu, og þannig lifði netcat-prófunin af í fyrsta lagi.

Tengdir greinar