Kodėl tcpdump rodo IPsec atvirą tekstą tik viena kryptimi
Šis asimetriškumas yra fiksavimo taško artefaktas, o ne sugedęs atsakymo kelias. Štai kur ieškoti vidinio ir išorinio srauto Linux IPsec šliuze.
Paleidžiate tcpdump išoriniame Linux IPsec šliuzo sąsajos taške ir matote du dalykus vienu metu: gaunamus ESP kadrus ir iškart po jų iššifruotus vidinius paketus. Išeinant matomas tik ESP. Natūrali išvada — atsakymai nesiunčiami arba IPsec šifruoja vieną kryptį ir pamiršta kitą. Nė viena netiesa.
Tai, ką matote, yra fiksavimo taškas. Branduolys pertvarko išeinančius paketus prieš tai, kai įrenginio perdavimo kelias perduoda juos paketo lizdui, todėl lizdas niekada nemato išeinančios vidinės formos. Gaunant paketas pirmiausia užfiksuojamas kaip ESP, o dekapsuliuota kopija tampa matoma, kai jis vėl patenka į kamino struktūrą. Tas pats srautas, du skirtingi stebėjimo langai.
Fiksavimo taškas nusprendžia, ką matote
Įprastoje sąsajoje AF_PACKET lizdas yra arti įrenginio sluoksnio. Paketai, paliekantys mazgą, pirmiausia praeina IPsec išvesties apdorojimą, kuris vidinį TCP segmentą paverčia ESP arba UDP-4500 datagrama, ir tik tada pasiekia tą sluoksnį. Ateinantys paketai kopijuojami į lizdą jiems ateinant iš laido, dar užšifruoti, o iššifruotas rezultatas tampa matomas vėliau, kai kamino struktūra jį pristato vietoje arba persiunčia.
Ši tvarka visiškai paaiškina asimetriškumą. Tai nėra įrodymas apie kryptį, politiką ar programos elgesį, o traktuojant tai kaip įrodymą, žmonės ima vytis atsakymą, kuris visą laiką buvo siunčiamas teisingai. Tai viena iš nedaugelio tinklo mįslių, kai anomaliją sukuria priemonė, o ne tinklas.
Suderinkite filtrą su sluoksniu, kurį turite omenyje
Išraiška, pavyzdžiui, tcp port 443 parenka vidinį TCP ryšį. Išeinant šis ryšys jau yra tapęs ESP tuo metu, kai klausiama lizdo, todėl filtras nieko neatitinka. Jei norite skaičiuoti apsaugotą srautą, filtruokite pagal išorinę formą: 50 protokolas neapdorotam ESP arba UDP 4500 prievadas, kai naudojamas NAT perėjimas. Abu filtrai duoda paketų skaičių, kurį galima palyginti tarp dviejų partnerių, ir dažniausiai tai ir yra skaičiavimo priežastis. Nė vienas nepasako, ar vidinė užklausa buvo atsakyta.
Nelaikykite UDP 4500 skaičiaus ESP paketų skaičiumi. IKE taip pat naudoja šį prievadą NAT-T gyvybingumo pranešimams ir inkapsuliuotam mainams, todėl skaičius apima srautą, kuris nėra duomenys, kuriuos norėjote išmatuoti. Pradinis IKE mainas per UDP 500 reikalauja savo filtro, jei tai ir yra klausimas. Skaičius, kuris maišo valdymo srautą su duomenimis, taip pat daro bet kokį pralaidumo vertinimą neteisingą nežinoma paklaida. Atskiri skaičiavimai atsako į atskirus klausimus.
Užsirašykite filtrą šalia klausimo, į kurį jis atsako. „Kiek ESP paliko dėžę“ ir „ar interneto užklausa paliko dėžę“ yra skirtingi matavimai su skirtingais filtrais, ir vienas fiksavimas negali išspręsti abiejų. Be tos pastabos du žmonės lygins skaičius, kurie niekada neskaičiavo to paties.
Stebėkite prieš transformaciją, o ne po jos
Jei reikia matyti išeinantį atvirą tekstą, perkelkite stebėjimo tašką anksčiau, prieš IPsec išvesties apdorojimą. NFLOG suteikia jums Netfilter kabliuką, kuriame taisyklė gali kopijuoti pasirinktus paketus į vartotojo erdvės lizdą, kurį tcpdump gali skaityti. strongSwan srauto iškvietimo vadovas dokumentuoja šį metodą būtent dėl šios priežasties.
Politikos atitikimas apriboja taisyklę srautu, kuris ruošiasi įeiti į tunelį. -m policy --pol ipsec --dir out yra tai, kas padaro taisyklę konkrečią, o ne registruoja kiekvieną dėžės siunčiamą paketą. Tada skaitykite žurnalo grupę su ribotu fiksavimu: mažas momentinių nuotraukų skaičius ir dydžio riba neleidžia diagnostikai tapti srauto archyvu. Ribotą fiksavimą taip pat lengviau perduoti recenzentui nevelkant nesusijusio krūvio. Nuspręskite skaičių prieš pradėdami, o ne pamatę, kiek atvyko.
iptables -I OUTPUT 1 -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5
tcpdump -ni nflog:5 -s 128 -c 20 'host 10.83.0.44 and tcp port 8443'Pasirinkite kabliuką pagal srautą. OUTPUT apima srautą, kurį generuoja pats šliuzas; tranzitas iš LAN kliento eina per FORWARD grandinę, o OUTPUT taisyklė jo niekada nematys. Aukščiau nurodytas adresas ir prievadas yra vietaženkliai patvirtintam bandymo tikslui.
Ką įrodo stebėjimas
NFLOG yra registravimo tikslas, o ne priėmimo sprendimas. Ten pasirodęs paketas rodo, kad jis pasiekė kabliuką ir atitiko taisyklę. Tai neparodo, kad vėlesnis filtras jį praleido, kad įrenginys jį perdavė arba kad partneris ką nors gavo.
Tuščias žurnalas taip pat dviprasmiškas. Patikrinkite taisyklės paketų skaitiklį, patvirtinkite kryptį, patvirtinkite, kad srautas tikrai atitiko IPsec politiką, ir patvirtinkite paskirties vietą. Tik abiejuose partneriuose sutampantis skaitiklis paverčia stebėjimą išvada. Tada palyginkite saugumo asociacijos skaitiklius abiejuose partneriuose tam pačiam kontroliuojamam bandymui, nes SA skaitikliai yra autoritetingas įrašas apie tai, kas buvo apsaugota ir išsiųsta.
Dar viena spąsta: „atviras tekstas“ šiame kontekste reiškia už IPsec šifravimo sluoksnio ribų. Vidinė HTTPS sesija vis dar turi savo TLS. Dekapsuliuoto paketo fiksavimas neiššifruoja programos TLS, o matomas perskaitomas HTTP reiškia, kad programa niekada nenaudojo HTTPS.
Sutvarkykite ir palyginkite abu galus
Pašalinkite tiksliai tą taisyklę, kurią įterpėte, pagal jos savininką, kai tik stebėjimas baigtas. Palikta registravimo taisyklė kainuoja CPU kiekvienam atitinkančiam paketui ir tyliai sukuria duomenų saugojimo problemą. Ištrinkite kartodami taisyklę su -D, o ne išleisdami grandinę, kuri jums nepriklauso.
iptables -D OUTPUT -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5Jei diegimas naudoja vartotojo erdvės IPsec, XFRM sąsają arba aparatinį perkėlimą, stebėjimo taškai pasislenka ir šis receptas gali visai netikti. Su libipsec dokumentuota vieta vidiniam srautui stebėti yra TUN įrenginys. Pirmiausia nustatykite kelią, tada pasirinkite tašką, kuris atsako į klausimą, ir tikėkitės, kad dvi kryptys atrodys skirtingai tik tada, kai žiūrite į neteisingą transformacijos pusę.