Miért változnak a portszkennelés eredményei egy VPN-kijárat mögött?
Változtassa meg a kijáratot, és egy port másképp válaszolhat anélkül, hogy a szolgáltatás mozdulna. Válassza külön az útvonal megfigyelését attól a leltártól, amelyre valóban szüksége van.
Futtassa ugyanazt a portellenőrzést egy irodai vonalról és egy VPN-kijáratról, és a két válasz ellentmondhat egymásnak egy olyan címről, amelyet senki sem változtatott meg. Ez a rés az útvonalból és abból ered, hogy melyik gazdagép válaszolt, nem abból, hogy a szolgáltatás fut-e. Három kérdés választja szét ezeket a magyarázatokat: mit kérdezett valójában a szonda, melyik gazdagép válaszolt rá, és mit rögzített a saját kiszolgálója. Ebben a sorrendben haladjon végig rajtuk, és minden választ írjon le, mielőtt a következőre lép.
Javítsa meg a szondát, mielőtt két futást összehasonlít
Egy állapotszó csak akkor hasonlítható össze egy másik állapotszóval, ha mindkettő ugyanabból a kísérletből származik. Öt mező rögzíti ezt: a forráscím, amelyet a távoli oldal látott, a feloldott cél, a port, a szkennelés típusa és az idő. Változtasson meg bármelyiket, és egy második kísérletet végzett ahelyett, hogy az elsőt kétszer mérte volna.
Ellenőrizze a forrást minden más előtt, mert a VPN-kliens futhat, miközben a forgalom még mindig a fizikai interfészen hagyja el a gépet. Kérdezze meg a távoli oldalt, mit lát, majd kérdezze meg a kernelt, melyik interfészt választotta:
curl -s https://ifconfig.me
ip route get 203.0.113.20Két cím különböző hálózatokon azt jelenti, hogy a magyarázat már a kezében van, és a többi ellenőrzés csak megerősíti azt. Ha megegyeznek, rögzítse a szondát bekapcsolt ok-jelzővel, hogy az állapot magyarázathoz kötve térjen vissza, ne pedig önmagában álljon csupasz szóként. A szkennelés típusa is ehhez a rekordhoz tartozik, mert azt írja le, mit kérdeztek, nem azt, mi jött vissza. Forrás, módszer és időbélyeg nélküli állapot semmivel sem hasonlítható össze:
nmap -sT -p 443,8443 --reason 203.0.113.20Tartsa ezt a kimenetet a rekord mellett, ne egy görgetőpufferben, amelyet a következő ember nem lát. Két őszinte szkennelés, amelyek ellentmondanak egymásnak, csak akkor vita, ha senki nem írta le a feltételeket. A feltételek rögzítésével vagy megegyeznek az eredmények, és a kérdés lezárul, vagy eltérnek, és az eltérés tény az útvonalról.
Tudja meg, melyik gazdagép fejezte be a kézfogást
Egy befejezett kézfogás bizonyítja, hogy valamelyik gazdagép befejezte, és annak a gazdagépnek nem kell annak a folyamatnak lennie, amelyre gondol. Egy terheléselosztó, egy fordított proxy vagy egy SYN-proxy válaszolhat, mielőtt a valódi kiszolgáló részt vesz, ami szokásos tervezés, nem tünet. Az elvárt névre érvényes tanúsítvány sem szűkíti ezt, mert a tanúsítvány szolgáltatáskapcsolatot ír le, és semmit sem mond arról, melyik gép zárta le a kapcsolatot.
A Nmap portállapot-referenciája ezt alapvetőnek tartja: az állapot azt rögzíti, mit figyelhetett meg a szonda onnan, ahonnan elküldték, nem a port tulajdonságát. Olvassa így az állapotszót, és a két egymásnak ellentmondó futás következetesnek látszik majd ellentmondásos helyett, miközben a kérdés arról, hogy nyitott-e a port, arra tolódik, ki állt előtte.
A második kérdésre a backendben válaszoljon, ne kívülről. Az a frontend, amely elfogadja a kapcsolatokat, majd nem éri el a felsőbb szintjét, pontosan egy egészséges szolgáltatás külső képét állítja elő lassú alkalmazással. Csak a felsőbb szint saját rekordja választja szét a két esetet:
tail -n 5 /var/log/nginx/access.log
ss -ltnp 'sport = :443'A naplósor mutatja az ügyfélcímét, amelyet az alkalmazás valóban látott, a második parancs pedig azt, hogy a 443-as portot tartó folyamat a saját alkalmazása-e vagy valami előtte. Ha a kettő ellentmond egymásnak abban, melyik cím kapcsolódott, akkor egyetlen kérés két lábát nézi, és a jegynek ezt meg kellene mondania.
Ellenőrizze a saját szabályait, mielőtt az alagutat hibáztatja
A szándékos házirend a leggyakoribb oka annak, hogy egy port az egyik hálózaton válaszol, a másikon nem, és ez a legkevésbé érdekes elérhető magyarázat. A hozzáférési szabályok azért léteznek, hogy egy forrást engedjenek át és a többit eldobják, így a kijárat változása pontosan az az esemény, amelyre írták őket. Ezért a VPN-en át tapasztalt eltérő állapot nem mutatja, hogy a szolgáltató vizsgálja a forgalmat. Azt mutatja, hogy a forráscíme most más, ami sokkal kisebb állítás.
Ezek a szabályok olvashatók a kiszolgálón, tehát olvassa el őket, ahelyett hogy a hálózat közepéről találgatna. Listázza azokat a szűrőszabályokat, amelyek bármelyik cím tartományt említik, majd ellenőrizze, eljutott-e egyáltalán a kapcsolat a démonhoz:
nft list ruleset | grep -n -e 203.0.113 -e 198.51.100
journalctl -u sshd -n 50 | grep 203.0.113Az üres második eredmény tanulságos, mert semmi sem ért el a démonhoz, és a kérdés egy szűrőhöz, egy biztonsági csoporthoz vagy magához az útvonalhoz tartozik. A találat azt jelenti, hogy a szolgáltatás látta a forrását, és kiválasztotta a válaszát, és ezt a döntést általában egy olvasható szabály rögzíti. Egyik eredmény sem támogat történetet a szolgáltatóról, és mindkettő olcsóbban ellenőrizhető, mint egy csomagrögzítés.
Olvassa a szállítást, a tanúsítványt és a választ külön
Három réteg három megfigyelést ad, és egy szonda, amely ezek egyikét teszteli, nem tud beszámolni a másik kettőről. Tartsa őket külön sorokként a rekordban, ahelyett hogy egyetlen ítéletbe hajtaná őket, mert minden sor a maga módján hibázik, és a hiba módja megmondja, hova nézzen legközelebb.
| Observation | What it settles | What it leaves open |
|---|---|---|
| Connection completed | A host on the path accepted the handshake | Which host, and whether its upstream is reachable |
| Certificate valid for the name | The endpoint holds a credential for that name | Whether the process behind it is the one you meant |
| Expected response body | The application handled the request | Anything about other ports or other paths |
| Connection refused | A host replied and nothing was listening | Whether a filter sits ahead of the refused port |
| Timeout | No reply arrived before the deadline | Drop, blackhole route or an overloaded host |
Egyetlen parancs állítja elő az első három sort egy általa vezérelt szolgáltatással szemben. Tegye a kimenetét a rekordba a szkennelés mellé, ne egy csevegőüzenetbe:
curl -v --resolve office.example:443:203.0.113.20 https://office.example/Olvassa a kimenetet sorrendben: a kézfogás válaszol a szállítási kérdésre, a tanúsítvány tárgya a név kérdésére, a válasz törzse pedig az alkalmazás kérdésére. Amikor a kézfogás sora sikerül, a válaszé nem, akkor egy törött felsőbb szintű frontendje van, nem egy blokkolt port. Az más jegy, mint amelyet megnyitott, és érdemes ezt egyenesen kimondani.
Fejezze be azzal, hogy négy tényt ír a jegybe: forráscím, szkenneléstípus, a válaszoló gazdagép és az idő. Minden, amire egy későbbi összehasonlításnak szüksége lehet, ebben a négyben él, és aki következőnek átveszi az esetet, nem fogja látni a terminálja előzményeit. Ha nem tudja mind a négyet kitölteni, a futás nem fejeződött be.