Dalam log firewall ada satu baris yang anda tidak jangkakan: paket ACK, keadaan conntrack NEW, alamat sumber yang bukan milik anda, port destinasi terbuka. Godaannya ialah membacanya sebagai sambungan masuk baharu yang tiada siapa memberi kebenaran. Apa yang baris itu sebenarnya katakan lebih sempit: apabila paket itu sampai ke hook ini, penjejak tidak mempunyai keadaan yang sepadan, dan paket itu membawa ACK. Itu dua fakta tentang dua perkara berbeza, dan kedua-duanya bukan transkrip penuh satu jabat tangan. Berikut ialah urutan yang saya lalui sebelum membuat kesimpulan.

Mulakan dengan paket, bukan penghakiman

Asingkan pemerhatian sebelum mentafsirnya. Bendera TCP menerangkan paket ini, keadaan penjejak menerangkan apa yang diketahuinya pada hook itu, dan tangkapan anda hanya menerangkan tetingkap yang anda rakam.

Mencampurkan ketiga-tiganya ialah cara satu ACK menjadi “pembekal membenarkan seseorang masuk”.

Apa sebenarnya NEW bermakna pada hook

padanan conntrack iptables mendokumenkan NEW sebagai paket yang memulakan sambungan, atau paket yang berkaitan dengan sambungan yang belum melihat trafik dalam kedua-dua arah. ESTABLISHED bermaksud penjejak telah melihat paket dalam kedua-dua arah. Tiada satu pun takrif itu mengatakan paket itu SYN, atau ia tiba tanpa sejarah.

Penjejak yang mula memerhati aliran dari tengah mengelaskan paket seterusnya mengikut apa yang diketahuinya, dan itu mungkin tiada apa-apa. Itu kenyataan tentang memori penjejak, bukan tentang niat hos jauh.

Penjejakan longgar menerangkan kebanyakan kejutan ACK

Kernel mendokumenkan nf_conntrack_tcp_loose, yang membolehkan penjejak mengambil sambungan TCP yang tidak dilihat permulaannya. Dengan tetapan pada nilai lalainya, ACK dari tengah aliran boleh diterima sebagai aliran yang telah mantap. Matikannya dan paket yang sama lebih mungkin dikelaskan sebagai INVALID dan bukan NEW. Kedua-dua hasil menerangkan peraturan penjejak, bukan sejarah aplikasi.

Jadi semak tetapan itu sebelum membina teori atas label.

Ketepikan punca membosankan dalam urutan ini

Kebanyakan peristiwa NEW-pada-ACK yang saya buru berakhir dengan salah satu daripada ini, dan semuanya murah untuk disemak:

  • Jadual conntrack telah dikosongkan, atau penjejak dimulakan semula.
  • Hos dimulakan semula, atau aliran berpindah ke namespace atau peranti lain.
  • Penghalaan tidak simetri menghantar SYN keluar melalui laluan yang anda tidak tangkap.
  • NAT menulis semula tuple, jadi entri itu tidak lagi sepadan dengan apa yang anda baca.
  • Tangkapan bermula lewat dan tidak pernah melihat permulaannya.

Setiap satunya menyingkirkan paket terdahulu daripada pandangan penjejak sambil membiarkan paket kemudian utuh. But semula atau pengosongan jadual paling mudah disahkan daripada uptime dan log. Penghalaan tidak simetri kelihatan sebagai tangkapan sehala. NAT ialah yang licik, kerana tuple yang disimpan penjejak bukan tuple yang dicetak dalam log.

Catat yang mana anda ketepikan, dan bagaimana, sebelum meneruskan.

Baca tuple, antara muka dan hook

Entri conntrack dikunci oleh alamat, port dan protokol, jadi apa-apa terjemahan mengubah entri mana yang sepadan. Catat juga antara muka dan hook, kerana paket yang dilihat pada antara muka yang salah atau selepas rantaian lain memberitahu anda laluan itu bukan seperti dalam rajah. Apabila peristiwa melibatkan VPN, tentukan sama ada anda melihat paket dalam atau pembawa luar. Kemudian bandingkan dengan apa yang dicatat oleh get laluan untuk tuple lima bahagian yang sama.

Dua pandangan tentang satu aliran yang tidak sependapat lebih bermaklumat daripada mana-mana satu daripadanya sahaja.

Bila patut dieskalasi

Eskalasi apabila anda dapat menunjukkan perkhidmatan yang boleh dicapai dan sepatutnya tidak, bersama aliran, dasar yang membenarkannya dan bukti daripada kedua-dua hujung. Jangan laporkan kecacatan pembekal berdasarkan satu label keadaan atau satu tangkapan separa, kerana laporan itu akan ditutup dengan penjelasan yang baru anda baca. Jika perkhidmatan itu benar-benar terdedah, pemilik sempadan itulah orang yang betul untuk membetulkannya, dan pemetaan port yang diwakilkan atau pendengar tidak sengaja lebih mungkin menjadi punca daripada pepijat.

Kemudian tutup jurang keterlihatan yang membolehkan satu paket kelihatan seperti sesi penuh.

Artikel berkaitan