Az ESP IP 50-es protokoll, nem TCP 50-es port: mit engedélyezzünk
A protokollszámok és a portszámok külön névterek. A TCP 50-es portra vonatkozó szabály semmit nem engedélyez, és a NAT traversal az ESP-t UDP 4500-ra viszi.
A tűzfalűrlapok TCP-portot kérnek, és a kézenfekvő bejegyzés az 50. Ez a bejegyzés semmit nem engedélyez, mert az ESP az 50-es IP-protokoll, a protokollszámok pedig nem portok. A két névtér csak kis egész számokat oszt meg, semmi mást, és a hiba addig láthatatlan, amíg az IKE be nem fejeződik, és a védett forgalom soha nem érkezik meg.
Két névtér, amely kis számokat oszt meg
Az IP-fejléc protokollmezőt hordoz, amely megnevezi, mi következik: 6 a TCP-hez, 17 az UDP-hez, 1 az ICMP-hez, 50 az ESP-hez, 51 az AH-hoz. A TCP- vagy UDP-fejléc portszámokat hordoz, amelyek folyamatot választanak a célgazdagépen. Az 50-es protokoll és a TCP 50-es port független értékek, de egy párbeszédablak felcserélhetőnek látszathatja őket.
Ezért a porttovábbítási szabály nem tudja kifejezni a natív ESP-t. Nincs ESP-célport, amelyet továbbítani lehetne, és a csak portszabályokat értő eszköznek egyáltalán nincs szókészlete erre a csomagra. A helyes szabály ehelyett az IP-protokollt nevezi meg. Bármely portpárbeszéd rossz eszköz ehhez a csomaghoz.
A zavarnak van egy második fele is. Amikor a csomag titkosított, minden benne átlátszatlan, beleértve az eredeti kapcsolat TCP-fejlécét is. A tűzfal, amely ezen a csomagon portokat vizsgál, a külső fejlécet nézi, amelynek natív esetben nincsenek vizsgálható portjai.
Natív ESP, majd a beágyazott változat
A natív ESP-t közvetlenül IP-protokollként szállítják, ami egyszerre hatékony és kényelmetlen. Hatékony, mert nincs extra fejléc, és kényelmetlen, mert a címet és portot fordító eszközök nem tudják követni. A NAT traversal éppen ezt oldja meg azzal, hogy az ESP-csomagot UDP-be csomagolja, hogy a fordítónak legyenek átírható portjai.
| Form on the wire | How it is identified | What the firewall must permit |
|---|---|---|
| IKE negotiation | UDP with a destination port | UDP 500, and 4500 once traversal is detected |
| Native ESP | IP protocol 50 in the outer header | The protocol itself, with no port to name |
| ESP inside UDP | UDP 4500 carrying an ESP payload | The UDP port pair, which translation devices can track |
A két forma ugyanazon adatcsatorna alternatív telepítése, nem egy csatorna rétegei. A natív ESP engedélyezése nem engedélyezi a beágyazott formát, és az UDP 4500 engedélyezése nem engedélyezi a natív forgalmat, ezért a szabálykészletnek a telepítéshez kell illeszkednie, nem pedig véletlenül mindkettőt lefednie.
Az észlelés itt is számít. A végpontok a tárgyalás során döntenek a formák között, és a váltás általában akkor történik, amikor NAT-ot észlelnek közöttük. Ezért az alagút felállítása után megváltozó útvonal olyan névtérbe viheti a forgalmat, amelyet a szabályai soha nem fedtek le.
Olvassa el, melyik formát használja valójában a kapcsolat
Kérdezze a végpontot ahelyett, hogy a tűzfalból találgatna. Linuxon az állapotbejegyzés jelzi, hogy az együttes UDP-beágyazást használ-e, és mely portok érintettek. Egy csomagrögzítés ugyanerre a kérdésre válaszol a vezetékről, és mindkettő gyorsabb, mint szabálykészletet olvasni és reménykedni.
ip xfrm state | grep -A3 encap
tcpdump -ni any 'ip proto 50 or udp port 4500'
Az első parancs beágyazási típust mutat, amikor NAT traversal van használatban, és semmit, amikor nincs. A második megmutatja, melyik forma halad át valójában a csatolón, és ez lezárja a vitákat egy papíron helyesnek látszó konfigurációról.
Az ellenbizonyíték ugyanahhoz a lépéshez tartozik. A nulla egyezést jelentő szabály azt mondja, hogy a csomag soha nem érte el, és ez útválasztási vagy szelektor-kérdés, nem tűzfal-kérdés.
Ezután külön erősítse meg a vezérlőcsatornát. Az IKE-nek saját portjai és saját naplói vannak, és az adat nélkül lezárt tárgyalás pontosan az a szétválás, amelyről ez a cikk szól.
Írja a szabályt a megfelelő névtérbe
A protokollszabály és a portszabály külön utasítások, ezért az eszköznek azt kell kifejeznie, amelyet Ön szeretne. Az nftablesben a protokolleggyezés explicit, és a beágyazott változat saját UDP-szabályt kap. Tartsa a két szabályt egymás mellett, hogy a pár látható legyen az átvizsgáláskor.
nft add rule inet filter input ip protocol esp accept
nft add rule inet filter input udp dport { 500, 4500 } accept
Ne tágítsa egyik szabályt sem egy téves diagnózis kompenzálására. Az ESP-protokoll mindent engedélyezése minden csatolón, vagy az UDP engedélyezése bárhonnan bárhová, tünetet javít és eltávolítja azt a kontrollt, amelyet be akart állítani. A szűk, támogatott folyam szinte mindig elegendő, ha a forma ismert.
Végül, tartsa egyenesen a rétegeket, amikor az alagút működik, az alkalmazás pedig nem. Az átjáróhoz érkező csomagoknak továbbra is kell továbbítás, visszaútvonal és az őket beengedő házirend, és ezek egyikét sem fejezi ki ESP-szabály. A hiányzó port egy konkrét hibát magyaráz, nem minden IPsec-hibát. Tartsa a szabályjavítást és az útválasztás-ellenőrzést két külön következtetésként.
Jegyezze fel a megfigyelt formát, a hozzáadott protokollszabályt és a később látott számlálót. Három sor, és a következő ember egy perc alatt meg tudja különböztetni a névtérhibát az útválasztási hibától egy délután helyett.