Nega tcpdump IPsec ochiq matnini faqat bitta yo'nalishda ko'rsatadi
Bu asimmetriya ushlash nuqtasining artefakti, buzilgan javob yo'li emas. Linux IPsec shlyuzida ichki va tashqi trafikni qayerdan ko'rish kerakligi shu yerda.
Siz Linux IPsec shlyuzining tashqi interfeysida tcpdump ishga tushirasiz va bir vaqtning o'zida ikki narsani ko'rasiz: kiruvchi ESP kadrlarini va ulardan keyin darhol shifri ochilgan ichki paketlarni. Chiquvchi yo'nalishda faqat ESP ko'rinadi. Tabiiy xulosa — javoblar yuborilmayapti yoki IPsec bir yo'nalishni shifrlab, ikkinchisini unutadi. Ikkalasi ham to'g'ri emas.
Siz ko'rayotgan narsa — ushlash nuqtasi. Yadro chiquvchi paketlarni qurilmaning uzatish yo'li ularni paket soketiga berishidan oldin o'zgartiradi, shuning uchun soket chiqib borayotgan ichki shaklni hech qachon ko'rmaydi. Kirishda paket avval ESP sifatida ushlanadi va dekapsulyatsiyalangan nusxa u yana stekka kirganda ko'rinadi. Xuddi shu trafik, ikki xil kuzatuv oynasi.
Ushlash nuqtasi nima ko'rishingizni belgilaydi
Oddiy interfeysda AF_PACKET soketi qurilma qatlamiga yaqin joylashadi. Xostdan chiqadigan paketlar avval IPsec chiqish ishlovidan o'tadi, u ichki TCP segmentini ESP yoki UDP-4500 datagrammasiga aylantiradi va shundan keyingina o'sha qatlamga yetadi. Kelayotgan paketlar simdan chiqqan zahoti, hali shifrlangan holatda soketga nusxalanadi, shifri ochilgan natija esa stek uni mahalliy yetkazganda yoki uzatganda keyinroq ko'rinadi.
Bu tartib asimmetriyani to'liq tushuntiradi. Bu yo'nalish, siyosat yoki ilova xatti-harakati haqida dalil emas va uni shunday qabul qilish odamlarni boshidan to'g'ri yuborilgan javob ortidan quvishga majbur qiladi. Bu anomaliyani tarmoq emas, asbob yaratadigan sanoqli tarmoq topishmoqlaridan biri.
Filtrni ko'zda tutgan qatlamingizga moslang
tcp port 443 kabi ifoda ichki TCP ulanishini tanlaydi. Chiquvchi yo'nalishda soketdan so'ralgan paytga kelib bu ulanish allaqachon ESP bo'lib bo'lgan, shuning uchun filtr hech narsaga mos kelmaydi. Agar himoyalangan trafikni sanamoqchi bo'lsangiz, uning o'rniga tashqi shakl bo'yicha filtrlang: xom ESP uchun 50 protokoli yoki NAT o'tishi ishlatilsa, UDP 4500 porti. Ikkala filtr ham ikki tomon o'rtasida solishtirish mumkin bo'lgan paketlar sonini beradi, odatda sanashning sababi ham shu. Ikkalasi ham ichki so'rovga javob berilganini aytmaydi.
UDP 4500 sonini ESP paketlar soni deb qabul qilmang. IKE bu portni NAT-T tiriklik xabarlari va kapsulalangan almashinuv uchun ham ishlatadi, shuning uchun son o'lchamoqchi bo'lgan ma'lumot bo'lmagan trafikni ham o'z ichiga oladi. UDP 500 dagi dastlabki IKE almashinuvi, agar savol shu bo'lsa, o'z filtrini talab qiladi. Boshqaruv trafigini ma'lumot bilan aralashtirgan son har qanday o'tkazish qobiliyati bahosini ham noma'lum miqdorda xato qiladi. Alohida sanashlar alohida savollarga javob beradi.
Filtrni u javob beradigan savolning yoniga yozib qo'ying. «Qutidan qancha ESP chiqdi» va «veb so'rov qutidan chiqdimi» — turli filtrlar bilan qilingan turli o'lchovlar, bir ushlash ikkalasini ham hal qila olmaydi. O'sha yozuv bo'lmasa, ikki kishi hech qachon bir xil narsani sanamagan sonlarni solishtiradi.
O'zgartirishdan oldin kuzating, keyin emas
Agar chiquvchi ochiq matnni ko'rishingiz kerak bo'lsa, kuzatuv nuqtasini avvalroq, IPsec chiqish ishlovidan oldin ko'chiring. NFLOG sizga Netfilter ilgagini beradi, u yerda qoida tanlangan paketlarni foydalanuvchi maydonidagi soketga nusxalashi mumkin, tcpdump uni o'qiy oladi. strongSwan trafik dump qo'llanmasi bu yondashuvni aynan shu sababga ko'ra hujjatlashtiradi.
Siyosat mosligi qoidani tunnelga kirmoqchi bo'lgan trafik bilan cheklaydi. -m policy --pol ipsec --dir out qutining yuboradigan har bir paketini jurnalga yozish o'rniga qoidani aniq qiladigan narsa. Keyin jurnal guruhini cheklangan ushlash bilan o'qing: kichik snapshot soni va o'lcham chegarasi diagnostika trafik arxiviga aylanishining oldini oladi. Cheklangan ushlashni taqrizchiga topshirish ham osonroq, aloqasiz yukni sudrab yurmasdan. Sonni boshlashdan oldin hal qiling, qancha kelganini ko'rgandan keyin emas.
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'Oqimga mos ilgakni tanlang. OUTPUT shlyuzning o'zi yaratadigan trafikni qamrab oladi; LAN mijozidan o'tish uning o'rniga FORWARD zanjiridan o'tadi va OUTPUT dagi qoida uni hech qachon ko'rmaydi. Yuqoridagi manzil va port tasdiqlangan sinov manzili uchun o'rin egallovchilar.
Kuzatuv nimani isbotlaydi
NFLOG jurnalga yozish maqsadi, qabul qilish qarori emas. U yerda paydo bo'lgan paket uning ilgakka yetib, qoidaga mos kelganini ko'rsatadi. Keyingi filtr ruxsat berganini, qurilma uni yuborganini yoki boshqa tomon biror narsa olganini ko'rsatmaydi.
Bo'sh jurnal ham xuddi shunday noaniq. Qoidaning paket hisoblagichini tekshiring, yo'nalishni tasdiqlang, oqim haqiqatan IPsec siyosatiga mos kelganini tasdiqlang va manzilni tasdiqlang. Faqat ikkala tomonda mos keladigan hisoblagich kuzatuvni xulosaga aylantiradi. Keyin o'sha boshqariladigan urinish uchun ikkala tomondagi xavfsizlik assotsiatsiyasi hisoblagichlarini solishtiring, chunki SA hisoblagichlari nima himoyalangan va yuborilgani haqidagi ishonchli yozuv.
Yana bir tuzoq: bu kontekstda «ochiq matn» IPsec shifrlash qatlamidan tashqarida degani. Ichki HTTPS sessiyasining hali o'z TLS'i bor. Dekapsulyatsiyalangan paketni ushlash ilovaning TLS ini ochmaydi va u yerda o'qiladigan HTTP ko'rinishi ilova boshidan HTTPS ishlatmaganini bildiradi.
Tozalang va ikki uchini solishtiring
Kuzatuv tugashi bilan siz kiritgan aynan o'sha qoidani, uning egasiga ko'ra olib tashlang. Jurnal qoidasini qoldirish har bir mos keladigan paketda CPU sarflaydi va jimgina ma'lumot saqlash muammosini yaratadi. O'zingizga tegishli bo'lmagan zanjirni tozalash o'rniga qoidani -D bilan takrorlab o'chiring.
iptables -D OUTPUT -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5Agar joylashtirish foydalanuvchi maydonidagi IPsec, XFRM interfeysi yoki apparat yukini yengillashtirishdan foydalansa, kuzatuv nuqtalari siljiydi va bu retsept umuman qo'llanilmasligi mumkin. libipsec bilan ichki trafikni kuzatishning hujjatlashtirilgan joyi TUN qurilmasi. Avval yo'lni aniqlang, keyin savolga javob beradigan nuqtani tanlang va ikki yo'nalish faqat o'zgartirishning noto'g'ri tomoniga qaraganingizda boshqacha ko'rinishini kuting.