Saya telah menghabiskan sedikit waktu meneliti topik ini dan sepertinya tidak dapat menemukan jawaban yang tepat, jadi saya cukup yakin itu bukan duplikat, dan sementara pertanyaan saya didasarkan pada kebutuhan keamanan, saya pikir masih aman untuk tanyakan di sini tetapi beri tahu saya jika saya perlu memindahkannya ke komunitas keamanan.
Pada dasarnya, apakah permintaan DNS pernah menggunakan TCP (jika demikian, skenario apa yang bisa terjadi)? Sekali lagi, saya hanya berbicara tentang pertanyaan. Apakah mungkin bagi mereka untuk melakukan perjalanan melalui TCP? Jika domain hanya panjang maksimal 253 byte, dan paket UDP dapat sebesar 512 byte, bukankah kueri selalu keluar sebagai UDP? Saya tidak berpikir permintaan dapat diselesaikan cukup besar untuk memerlukan penggunaan TCP. Jika server DNS pernah mendapatkan permintaan untuk domain yang lebih besar dari 253 byte, apakah server akan menjatuhkannya / tidak mencoba dan menyelesaikannya? Saya yakin saya telah membuat beberapa asumsi yang salah di sini.
Untuk beberapa konteks, saya bekerja dengan grup keamanan untuk memasukkan permintaan DNS ke dalam alat pemantauan keamanan mereka, dan untuk berbagai alasan kami telah memutuskan kami akan menangkap lalu lintas ini melalui penangkapan paket standar pada server DNS dan pengontrol domain. Persyaratan inti adalah untuk menangkap semua permintaan DNS sehingga mereka dapat mengidentifikasi apa yang dicoba klien untuk menyelesaikan domain yang diberikan. Berdasarkan persyaratan ini, kami tidak peduli dengan menangkap respons DNS atau lalu lintas lain seperti transfer zona, yang juga didorong oleh kenyataan bahwa kami perlu membatasi volume log sebanyak mungkin. Karena itu, kami berencana untuk menangkap hanya permintaan DNS yang ditujukan untuk server DNS dan dikirim melalui UDP. Untuk lebih banyak konteks (semacam ruang lingkup pertanyaan merayap di sini), sekarang telah diangkat bahwa kita mungkin perlu memperluas keamanan ' Visibilitas sehingga mereka dapat memantau aktivitas seperti saluran terselubung yang berjalan di atas DNS (yang akan menghadirkan kebutuhan untuk menangkap respons DNS juga, dan selanjutnya trafik TCP). Tetapi bahkan dalam skenario semacam itu, saya pikir setiap lalu lintas DNS keluar akan dalam bentuk pencarian / permintaan, dan bahwa ini akan selalu lebih dari UDP, bahkan jika dari sumber jahat (karena alasan saya pada paragraf pertama). Jadi ini memunculkan beberapa pertanyaan tambahan:
Bukankah kita setidaknya akan menangkap setengah dari percakapan dengan pendekatan yang saya uraikan? Atau apakah klien pernah mengirimkan lalu lintas DNS yang tidak dalam bentuk kueri? (mungkin seperti semacam balasan untuk respons server DNS, dan mungkin berakhir melalui TCP)
Bisakah DNS query dimodifikasi untuk menggunakan TCP? Apakah server DNS menerima dan menanggapi permintaan DNS yang datang melalui TCP?
Tidak yakin apakah itu relevan, tapi kami membatasi permintaan DNS ke server DNS resmi dan memblokir semua lalu lintas keluar lainnya melalui port 53. Saya jelas pemula, jadi saya minta maaf jika pertanyaan saya tidak sesuai, dan beri tahu saya bagaimana saya harus memodifikasi.
sumber
Jawaban:
Kueri DNS normal menggunakan port UDP 53, tetapi kueri yang lebih lama (> 512 oktet) akan menerima balasan 'terpotong', yang menghasilkan percakapan TCP 53 untuk memfasilitasi pengiriman / penerimaan seluruh kueri. Juga, server DNS mengikat port 53, tetapi permintaan itu sendiri berasal dari port acak nomor tinggi (49152 atau lebih tinggi) yang dikirim ke port 53. Respons akan dikembalikan ke port yang sama dari port 53.
Port Jaringan Digunakan oleh DNS | Microsoft Documents
Jadi, jika Anda berencana melakukan pengintaian keamanan pada permintaan DNS dari jaringan Anda, Anda harus mempertimbangkan hal di atas.
Adapun lalu lintas non-pencarian, pertimbangkan bahwa DNS juga menggunakan transfer zona (tipe permintaan AXFR) untuk memperbarui server DNS lainnya dengan catatan baru. Seorang pria di serangan tengah dapat mulai dengan transfer seperti itu, DDOS server nama Primer sehingga terlalu sibuk untuk menanggapi permintaan Sekunder meminta catatan diperbarui. Peretas kemudian menipu tipuan yang sama itu untuk memberi makan catatan 'beracun' ke Sekunder, yang mengarahkan domain DNS populer ke host yang dikompromikan.
Jadi audit keamanan Anda harus memperhatikan jenis permintaan AXFR, dan sistem DNS Anda hanya harus menerima pertukaran AXFR dari alamat IP tertentu.
Ruang Baca InfoSec SANS Institute | sans.org
sumber
Ini dimulai sebagai komentar atas jawaban George, tapi itu sudah lama. Gambaran yang lebih besar agak rumit, karena membutuhkan pemahaman tentang sejarah.
RFC 1035 awalnya disebut untuk batas 512 byte untuk menghindari fragmentasi UDP. Datagram UDP dan TCP yang terfragmentasi dipilih sebagai opsi terakhir untuk meminimalkan overhead transaksi DNS. Transfer zona selalu menggunakan TCP, karena transfer zona mengambil> 512 byte sesuai sifatnya. (Ini akan menjadi pemborosan bandwidth untuk memulai dengan UDP sama sekali)
Retry TCP pada pemotongan banyak didukung karena telah ditentukan dalam RFC 1123 sejak 1989.
EDNS (0) didefinisikan oleh RFC 6891 (2013), dan sebelum itu ada sebagai Usulan Standar sejak tahun 1999 . Ini mendefinisikan mekanisme di mana klien dan server dapat menegosiasikan ukuran UDP lebih besar dari 512. Karena kebaruan EDNS (0), banyak peralatan perangkat keras membuat asumsi tentang struktur paket DNS yang menyebabkan paket yang sesuai paket dibuang. Alasan yang paling sering adalah asumsi bahwa pesan DNS lebih dari 512 byte tidak valid, tetapi ini adalah satu di antara beberapa.
Jika kita memecahnya menjadi perilaku yang diamati:
Anda juga harus ingat bahwa RFC 7766 memungkinkan koneksi digunakan kembali melalui TCP , dan dimungkinkan untuk menemukan pipelining query melalui TCP di alam liar. Beberapa alat tidak mendeteksi permintaan DNS di luar yang pertama kali terlihat dalam sesi TCP, dnscap menjadi contohnya.
sumber
Ada adalah RFC 7766, DNS Transportasi melalui TCP - Persyaratan Implementasi .
sumber
INTERNET STANDARD
RFC adalah tools.ietf.org/html/rfc1034 . Anda mengutipPROPOSED STANDARD
untuk membutuhkan TCP.Anda seharusnya tidak memfilter TCP / 53 ke segala arah. Misalnya,
nsupdate
kueri dapat menggunakan TCP segera setelah permintaan terlalu besar (yang dapat terjadi dengan cepat). Jadi, Anda harus membiarkan UDP dan TCP untuk port 53 (dalam IPv4 & V6!) Mengalir ke semua arah.Juga ada lebih banyak pekerjaan ke arah DNS melalui TLS, sehingga TCP akan dibutuhkan di kedua arah. Lihat RFC7858.
sumber