Mengapa tcpdump hanya menunjukkan teks biasa IPsec dalam satu arah
Asimetri ini ialah artifak titik tangkapan, bukan laluan balasan yang rosak. Berikut tempat untuk mencari trafik dalam dan luar pada gerbang IPsec Linux.
Anda menjalankan tcpdump pada antara muka luar gerbang IPsec Linux dan melihat dua perkara serentak: bingkai ESP masuk dan, sejurus selepasnya, paket dalam yang dinyahsulit. Pada arah keluar hanya ESP muncul. Kesimpulan semula jadinya ialah balasan tidak dihantar atau IPsec menyulitkan satu arah dan melupakan arah yang lain. Kedua-duanya tidak benar.
Apa yang anda lihat ialah titik tangkapan. Kernel mengubah paket keluar sebelum laluan penghantaran peranti menyerahkannya kepada soket paket, jadi soket tidak pernah melihat bentuk dalam yang keluar. Pada arah masuk, paket ditangkap dahulu sebagai ESP dan salinan yang dinyahkapsul kelihatan apabila ia masuk semula ke tindanan. Trafik yang sama, dua tetingkap pemerhatian berbeza.
Titik tangkapan menentukan apa yang anda lihat
Pada antara muka biasa, soket AF_PACKET terletak hampir dengan lapisan peranti. Paket yang meninggalkan hos melalui pemprosesan keluaran IPsec dahulu, yang menukar segmen TCP dalam kepada datagram ESP atau UDP-4500, dan hanya selepas itu sampai ke lapisan tersebut. Paket yang tiba disalin ke soket semasa ia keluar dari kabel, masih disulitkan, dan hasil yang dinyahsulit kelihatan kemudian apabila tindanan menghantarnya secara setempat atau memajukannya.
Urutan itu menjelaskan asimetri sepenuhnya. Ia bukan bukti tentang arah, dasar atau tingkah laku aplikasi, dan memperlakukannya begitu membuat orang mengejar balasan yang sebenarnya dihantar dengan betul sepanjang masa. Ini salah satu daripada beberapa teka-teki rangkaian di mana instrumen, bukan rangkaian, mencipta anomali.
Padankan penapis dengan lapisan yang dimaksudkan
Ungkapan seperti tcp port 443 memilih sambungan TCP dalam. Pada arah keluar, sambungan itu sudah menjadi ESP apabila soket ditanya, jadi penapis tidak sepadan dengan apa-apa. Jika anda mahu mengira trafik yang dilindungi, tapis pada bentuk luar: protokol 50 untuk ESP mentah, atau port UDP 4500 apabila lintasan NAT digunakan. Kedua-dua penapis menghasilkan bilangan paket yang boleh dibandingkan antara kedua-dua rakan, yang biasanya menjadi sebab pengiraan. Tiada satu pun memberitahu anda sama ada permintaan dalam dijawab.
Jangan anggap kiraan UDP 4500 sebagai kiraan paket ESP. IKE juga menggunakan port itu untuk mesej kekal hidup NAT-T dan untuk pertukaran berkapsul, jadi bilangannya termasuk trafik yang bukan data yang anda mahu ukur. Pertukaran IKE awal pada UDP 500 memerlukan penapisnya sendiri jika itulah persoalannya. Nombor yang mencampurkan trafik kawalan dengan data juga menjadikan sebarang anggaran lebar jalur salah dengan margin yang tidak diketahui. Kiraan berasingan menjawab soalan berasingan.
Tuliskan penapis di sebelah soalan yang dijawabnya. «Berapa banyak ESP keluar dari kotak» dan «adakah permintaan web keluar dari kotak» ialah ukuran berbeza dengan penapis berbeza, dan satu tangkapan tidak dapat menyelesaikan kedua-duanya. Tanpa nota itu, dua orang akan membandingkan nombor yang tidak pernah mengira perkara yang sama.
Perhati sebelum transformasi, bukan selepasnya
Jika anda perlu melihat teks biasa keluar, gerakkan titik pemerhatian lebih awal, sebelum pemprosesan keluaran IPsec. NFLOG memberi anda cangkuk Netfilter di mana peraturan boleh menyalin paket terpilih ke soket ruang pengguna, yang boleh dibaca tcpdump. Panduan buang trafik strongSwan mendokumenkan pendekatan ini tepat atas sebab itu.
Padanan dasar mengehadkan peraturan kepada trafik yang akan masuk ke terowong. -m policy --pol ipsec --dir out itulah yang menjadikan peraturan khusus dan bukannya merekod setiap paket yang dihantar oleh kotak. Kemudian baca kumpulan log dengan tangkapan terhad: bilangan syot kilat yang kecil dan had saiz menghalang diagnosis daripada menjadi arkib trafik. Tangkapan terhad juga lebih mudah diserahkan kepada penyemak tanpa menyeret muatan yang tidak berkaitan. Tentukan bilangannya sebelum bermula, bukan selepas melihat berapa banyak yang tiba.
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'Pilih cangkuk yang sepadan dengan aliran. OUTPUT meliputi trafik yang dihasilkan oleh gerbang sendiri; transit daripada klien LAN melalui rantai FORWARD sebaliknya, dan peraturan pada OUTPUT tidak akan pernah melihatnya. Alamat dan port di atas ialah pemegang tempat untuk destinasi ujian yang diluluskan.
Apa yang dibuktikan oleh pemerhatian
NFLOG ialah sasaran pengelogan, bukan keputusan penerimaan. Paket yang muncul di situ menunjukkan ia sampai ke cangkuk dan sepadan dengan peraturan. Ia tidak menunjukkan bahawa penapis kemudian membenarkannya, bahawa peranti menghantarnya atau bahawa rakan menerima apa-apa.
Log kosong juga sama samar. Periksa pembilang paket peraturan, sahkan arah, sahkan aliran benar-benar sepadan dengan dasar IPsec, dan sahkan destinasi. Hanya pembilang yang sepadan pada kedua-dua rakan menukar pemerhatian menjadi kesimpulan. Kemudian bandingkan pembilang persatuan keselamatan pada kedua-dua rakan untuk percubaan terkawal yang sama, kerana pembilang SA ialah rekod berautoriti tentang apa yang dilindungi dan dihantar.
Satu lagi perangkap: «teks biasa» dalam konteks ini bermaksud di luar lapisan penyulitan IPsec. Sesi HTTPS dalam masih mempunyai TLS sendiri. Menangkap paket yang dinyahkapsul tidak menyahsulit TLS aplikasi, dan melihat HTTP yang boleh dibaca di situ bermaksud aplikasi itu tidak pernah menggunakan HTTPS.
Bersihkan dan bandingkan kedua-dua hujung
Alih keluar peraturan tepat yang anda masukkan, mengikut pemiliknya, sebaik sahaja pemerhatian selesai. Membiarkan peraturan pengelogan di tempatnya menggunakan CPU pada setiap paket yang sepadan dan diam-diam mencipta masalah penyimpanan data. Hapus dengan mengulang peraturan dengan -D dan bukannya membilas rantai yang bukan milik anda.
iptables -D OUTPUT -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5Jika penggunaan menggunakan IPsec ruang pengguna, antara muka XFRM atau pemunggahan perkakasan, titik pemerhatian bergerak dan resipi ini mungkin tidak terpakai sama sekali. Dengan libipsec, tempat berdokumen untuk memerhati trafik dalam ialah peranti TUN. Kenal pasti laluan dahulu, kemudian pilih titik yang menjawab soalan, dan jangkakan kedua-dua arah kelihatan berbeza hanya apabila anda melihat sisi transformasi yang salah.