Alamat IP pribadi dalam DNS publik

62

Kami memiliki server surat hanya SMTP di belakang firewall yang akan memiliki catatan surat publik. . Satu-satunya cara untuk mengakses server surat ini adalah dari server lain di belakang firewall yang sama. Kami tidak menjalankan server DNS pribadi kami sendiri.

Apakah ide yang baik untuk menggunakan alamat IP pribadi sebagai catatan A di server DNS publik - atau apakah yang terbaik untuk menyimpan catatan server ini di setiap server file host lokal?

Geoff Dalgas
sumber

Jawaban:

62

Beberapa orang akan mengatakan bahwa tidak ada catatan DNS publik yang boleh mengungkapkan alamat IP pribadi .... dengan anggapan bahwa Anda memberikan penyerang potensial informasi yang mungkin diperlukan untuk mengeksploitasi sistem pribadi.

Secara pribadi, saya pikir kebingungan adalah bentuk keamanan yang buruk, terutama ketika kita berbicara tentang alamat IP karena secara umum mereka mudah ditebak, jadi saya tidak melihat ini sebagai kompromi keamanan yang realistis.

Pertimbangan yang lebih besar di sini adalah memastikan pengguna publik Anda tidak mengambil catatan DNS ini sebagai bagian dari layanan publik normal dari aplikasi yang dihosting. yaitu: Pencarian DNS eksternal entah bagaimana mulai menyelesaikan ke alamat yang tidak dapat mereka peroleh.

Selain itu, saya tidak melihat alasan mendasar mengapa menempatkan catatan alamat A pribadi ke ruang publik adalah masalah .... terutama ketika Anda tidak memiliki server DNS alternatif untuk menampung mereka.

Jika Anda memutuskan untuk menempatkan catatan ini di ruang DNS publik, Anda dapat mempertimbangkan membuat zona terpisah di server yang sama untuk menyimpan semua catatan "pribadi". Ini akan membuatnya lebih jelas bahwa mereka dimaksudkan untuk menjadi pribadi .... namun hanya untuk satu catatan A, saya mungkin tidak akan repot-repot.

Jeff tinggi
sumber
+1, lihat komentar untuk jawaban womble karena alasan :)
Mihai Limbăşan
2
Ini adalah contoh yang baik dari masalah dengan ide ini: merit.edu/mail.archives/nanog/2006-09/msg00364.html
sucuri
Apakah saran ini masih berlaku jika Anda memiliki server sensitif dengan alamat IP publik, tetapi di belakang firewall membatasi akses? Jika DNS publik untuk alamat IP publik memberikan peta jalan infrastruktur, bukankah itu berguna bagi penyerang? Identifikasi tuan rumah?
Kenny
@ Kenny Ya, secara teori ini memang ada gunanya, tetapi informasi yang tidak sulit didapat karena kisaran alamat IP publik mudah ditemukan. Saya semacam menjawab ini dalam jawaban dan menambahkan gagasan itu. Saya berpendapat bahwa jika Anda bergantung pada menyembunyikan alamat IP atau nama host sebagai segala jenis garis pertahanan materi, Anda sudah memiliki masalah yang jauh lebih besar.
Tall Jeff
1
@ Henny Menurut pendapat Anda, tentu diinginkan untuk meminimalkan jumlah informasi yang dapat ditemukan secara publik dan Anda tidak ingin mengungkapkan sesuatu yang Anda tidak perlu atau tidak setidaknya memiliki semacam perdagangan biaya / manfaat yang baik - off terlibat untuk mempertimbangkannya. Tidak ada argumen di sana. Selain itu, inti dari poin saya (dan saya pikir kami setuju) hanyalah bahwa kebingungan itu merupakan bentuk keamanan yang buruk dan tidak ada kebaikan / buruk yang absolut, tetapi hanya rangkaian pertukaran biaya / manfaat yang akan terjadi. dipertimbangkan berdasarkan kasus per kasus tergantung pada toleransi risiko Anda, dll.
Tall Jeff
36

Saya memiliki diskusi panjang tentang topik ini pada daftar NANOG beberapa waktu lalu. Meskipun saya selalu berpikir itu adalah ide yang buruk, ternyata itu bukan ide yang buruk dalam praktek. Kesulitan sebagian besar berasal dari pencarian rDNS (yang untuk alamat pribadi Just Don't Work di dunia luar), dan ketika Anda memberikan akses ke alamat melalui VPN atau sejenisnya, penting untuk memastikan bahwa klien VPN terlindungi dengan baik dari "Bocor" traffic saat VPN sedang down.

Saya katakan pergi untuk itu. Jika penyerang bisa mendapatkan sesuatu yang berarti dari bisa menyelesaikan nama ke alamat internal, Anda punya masalah keamanan yang lebih besar.

womble
sumber
1
+1, terima kasih telah menjadi suara waras dalam semua respons FUD untuk pertanyaan ini. "Risiko keamanan" daerah punggung bagian bawah saya, dan melihat masalah perutean dan masalah DNS berkolusi menjadi satu reaksi "jangan lakukan itu" hanya membuat saya bertanya-tanya tentang kompetensi orang yang menjalankan jaringan di semua tempat.
Mihai Limbăşan
1
Koreksi: Jadikan "melihat masalah perutean dan masalah DNS dan masalah otentikasi / identitas berkolusi".
Mihai Limbăşan
8

Secara umum memperkenalkan alamat RFC1918 ke dalam DNS publik akan menyebabkan kebingungan, jika bukan masalah nyata, di beberapa titik di masa depan. Gunakan IP, catatan host, atau tampilan DNS pribadi zona Anda untuk menggunakan alamat RFC1918 di belakang firewall Anda tetapi tidak memasukkannya dalam tampilan publik.

Untuk mengklarifikasi tanggapan saya berdasarkan pada tanggapan yang diajukan lainnya, saya pikir memasukkan alamat RFC1918 ke dalam DNS publik adalah kesalahan, bukan masalah keamanan. Jika seseorang memanggil saya untuk memecahkan masalah dan saya menemukan alamat RFC1918 di DNS mereka, saya mulai berbicara dengan sangat lambat dan menanyakan apakah mereka telah mem-boot ulang baru-baru ini. Mungkin itu adalah keangkuhan di pihak saya, saya tidak tahu. Tapi seperti yang saya katakan, itu bukan hal yang perlu dilakukan dan kemungkinan menyebabkan kebingungan dan miskomunikasi (manusia, bukan komputer) di beberapa titik. Mengapa mengambil risiko itu?

jj33
sumber
1
Apa masalah sebenarnya ini? Dalam hal apa orang akan bingung?
womble
2
Jadi ... sopan ... untuk tidak memasukkan alamat 1918 ke DNS publik? Saya telah menemukan banyak masalah yang disebabkan oleh zona DNS "tersembunyi" dan "split horizon", tetapi tidak terlalu banyak disebabkan oleh IP pribadi di DNS publik. Saya hanya tidak melihat masalahnya.
womble
2
@ Womble, komputer mungkin bingung jika karena alasan tertentu mereka mencoba untuk terhubung ke host di luar jaringan Anda dan alih-alih mendapatkan server SMTP, mereka mengharapkan mereka mendapatkan apa pun yang hidup di alamat IP itu di tempat mereka terhubung saat ini. Bahkan mungkin salah satu staf Anda yang menggunakan laptop pada remote mungkin mulai memuntahkan nama pengguna dan kata sandi dalam bentuk teks pada jaringan orang lain hanya karena mereka juga memiliki 192.168.1.1
Zoredache
16
Masalah yang saya miliki dengan jawaban Anda adalah bahwa Anda menyinggung masalah, tetapi tidak memberikan rincian apa pun. Jika ada alasan untuk tidak melakukannya, saya ingin tahu tentang mereka, sehingga saya dapat membuat keputusan yang sepenuhnya beralasan tentang masalah ini.
womble
1
@Zoredache: Mengapa seseorang memutuskan nama yang tidak dapat mereka akses? DNS bukan satu-satunya tempat Anda bisa mendapatkan alamat pribadi, misalnya - HTML dapat menggunakan IP literals, misalnya ...
womble
5

Tidak, jangan letakkan alamat IP pribadi Anda di DNS publik.

Pertama, itu bocor informasi, meskipun itu masalah yang relatif kecil.

Masalah yang lebih buruk jika catatan MX Anda menunjuk ke entri host tertentu adalah bahwa siapa pun yang mencoba mengirim email ke sana paling tidak akan mendapatkan batas waktu pengiriman email.

Bergantung pada perangkat lunak email pengirim, mereka mungkin mendapatkan pantulan.

Lebih buruk lagi, jika Anda menggunakan ruang alamat RFC1918 (yang seharusnya, di dalam jaringan Anda) dan pengirim juga, ada setiap kesempatan bahwa mereka akan mencoba dan mengirimkan surat ke jaringan mereka sendiri.

Sebagai contoh:

  • jaringan memiliki server surat internal, tetapi tidak ada DNS terpisah
  • Oleh karena itu admin memasukkan alamat IP publik dan internal ke dalam DNS
  • dan catatan MX menunjuk ke keduanya:

 $ORIGIN example.com
 @        IN   MX    mail.example.com
 mail     IN   A     192.168.1.2
          IN   A     some_public_IP

  • seseorang yang melihat ini mungkin mencoba terhubung ke 192.168.1.2
  • kasus terbaik, itu memantul, karena mereka tidak punya rute
  • tetapi jika mereka juga punya server menggunakan 192.168.1.2, surat akan pergi ke tempat yang salah

Ya, ini adalah konfigurasi yang rusak, tetapi saya telah melihat ini (dan lebih buruk) terjadi.

Tidak, itu bukan kesalahan DNS, itu hanya melakukan apa yang diperintahkan.

Alnitak
sumber
Bagaimana mengirimkan email ke mesin yang salah merupakan masalah DNS? Anda harus mengautentikasi server SMTP. Itu masalah konfigurasi SMTP yang sama sekali tidak ada hubungannya dengan DNS. Anda bahkan tidak membandingkan apel dengan jeruk di sini, Anda membandingkan roti bakar mentega radioaktif dengan lima miligram turunan Lagrangian pada tongkat. Jika Anda khawatir akan mendapatkan hasil MX atau A yang salah, Anda harus menggunakan DNSSEC alih-alih meminta DNS bertanggung jawab atas apa yang tidak bertanggung jawab, dan jika Anda secara keliru mengirimkan SMTP ke nomor RFC1918 yang salah, Anda salah mengonfigurasi atau salah mengatur jaringan Anda.
Mihai Limbăşan
(mem-posting ulang pujian untuk klarifikasi)
Mihai Limbăşan
Jika seseorang di jaringan Anda "membuat" nomor IP maka protokol IP berfungsi persis seperti yang dirancang, yaitu tanpa memikirkan keamanan. Yang Anda tanyakan adalah "bagaimana saya bisa percaya bahwa saya benar-benar berbicara dengan siapa pun yang seharusnya saya ajak bicara?" dan jawaban untuk itu tidak dapat disampaikan oleh IP dan / atau oleh DNS, jawaban untuk itu disampaikan oleh DNSSEC dan / atau SSL / TLS dan / atau mekanisme lapisan aplikasi.
Mihai Limbăşan
Cukup baca komentar Anda ke posting Dave - posting Anda lebih masuk akal sekarang :) Saya masih tidak setuju dengan premis, tapi saya tidak berpikir itu tidak rasional lagi ...
Mihai Limbăşan
2
tidak, ini bukan tentang otentikasi sama sekali, hanya tentang koneksi yang berakhir di tempat yang salah. Saya melihat banyak hal ketika Verisign memutuskan untuk wildcard * .com kembali pada ~ 2001.
Alnitak
3

Meskipun kemungkinannya kecil, saya pikir Anda mungkin menyiapkan diri untuk beberapa serangan MITM.

Kekhawatiran saya adalah ini. Katakanlah salah satu pengguna Anda dengan klien email yang dikonfigurasi untuk menunjuk pada server email yang membawa laptop mereka ke jaringan lain. Apa yang terjadi jika jaringan lain itu juga memiliki RFC1918 yang sama digunakan. Laptop itu dapat mencoba masuk ke server smtp dan menawarkan kredensial pengguna ke server yang seharusnya tidak memilikinya. Ini akan sangat benar karena Anda mengatakan SMTP dan tidak menyebutkan bahwa Anda memerlukan SSL.

Sakit kepala
sumber
Jika pengguna memiliki laptop yang mereka gunakan di kantor Anda dan juga di tempat lain, kemungkinan mereka akan mengonfigurasi file host mereka untuk menunjuk ke IP internal MTA, atau menggunakan IP secara langsung dalam konfigurasi MUA mereka. Hasil akhir yang sama. Membawa IPv6 dan kematian RFC1918, itu satu-satunya cara untuk memastikan ...
womble
Titik yang sangat baik Zoredache. Ini adalah vektor serangan yang menarik. Bergantung pada MUA, ini mungkin menampilkan kotak dialog "sesuatu yang menjengkelkan biasa terjadi, silakan klik saya untuk melakukan apa yang Anda ingin saya lakukan di kotak pertama", atau bisa gagal langsung jika sertifikat ssl tidak cocok.
Dave Cheney
Apakah skenario serangan ini secara efektif dihilangkan jika semua server (yaitu web / HTTPS, IMAP, dan SMTP) dalam jaringan yang valid memerlukan koneksi klien berbasis SSL / TLS?
Johnny Utahh
@JohnnyUtahh, well Anda perlu semua server untuk mendukung TLS, dengan sertifikat yang valid dan Anda perlu semua klien dikonfigurasi untuk memverifikasi sertifikat, dan jangan pernah mencoba koneksi non-TLS. Yang merupakan standar yang lebih umum sekarang, lalu 10 tahun yang lalu. Tetapi masih ada perangkat lunak lama / bodoh yang mungkin mencoba koneksi non-tls.
Zoredache
Ya, semua masuk akal, terima kasih @Zoredache.
Johnny Utahh
3

Dua opsi Anda adalah / etc / hosts dan menempatkan alamat IP pribadi di zona publik Anda. Saya akan merekomendasikan yang pertama. Jika ini mewakili sejumlah besar host, Anda harus mempertimbangkan menjalankan resolver Anda sendiri secara internal, itu tidak sulit.

Dave Cheney
sumber
1
Itu tentu pilihan, tapi mengapa? Apa yang menjalankan resolver internal atau (jauh lebih pintar) menggunakan sesuatu seperti tampilan BIND memberi Anda selain beban administrasi dan pemeliharaan? Itu yang saya tidak mengerti.
Mihai Limbăşan
1
Menjalankan server nama Anda sendiri bukan ilmu roket. Jika jaringan Anda memiliki ukuran yang cukup yang Anda anggap menggunakan / etc / hosts sebagai peretasan atau memakan waktu, maka Anda perlu mengatur sepasang resolver di jaringan Anda. Sebagai manfaat tambahan Anda mengurangi jumlah lalu lintas dns meninggalkan jaringan Anda dan Anda mempercepat resolusi pertanyaan umum.
Dave Cheney
3
Saya tahu itu bukan ilmu roket, tapi itu overhead pemeliharaan dan risiko keamanan potensial. Tentu saja risiko keamanan lebih tinggi daripada membocorkan keberadaan jaringan RFC1918. Lalu lintas DNS benar-benar dapat diabaikan - Saya menghosting lebih dari 80 file zona sedang dan sibuk pada DNS saya di kantor dan lalu lintas DNS mingguan kurang dari 2 menit dari Youtube. Mempercepat resolusi kueri sebenarnya adalah argumen pertama setengah waras terhadap angka RFC1918 dalam DNS yang saya lihat di sini :) Dirvotasi untuk benar-benar berpikir sedikit di luar hentakan-sentakan "oh, noes, ini adalah risiko" reaksi keamanan :)
Mihai Limbăşan
1
@Alnitak: Saya mengerti dari mana Anda berasal tetapi itu masih bukan masalah DNS, dan saya berpendapat bahwa mencoba untuk memperbaiki masalah yang berasal dari tempat lain melalui DNS bukanlah ide yang baik sama sekali. Masalah harus diperbaiki pada sumbernya, tidak ditambal oleh peretasan DNS - peretasan membuat jaringan rapuh.
Mihai Limbăşan
2
baik, ya, saya setuju. Dan menempatkan informasi host pribadi Anda di DNS publik adalah solusi peretasan untuk masalah tidak memiliki server DNS internal ... :) Masalahnya adalah bahwa lapisan yang lebih tinggi tidak tahu bahwa informasi ini seharusnya "pribadi" .
Alnitak
2

Mungkin ada masalah kecil dengan itu. Salah satunya adalah bahwa solusi umum untuk serangan DNS Rebind memfilter entri DNS lokal diselesaikan dari server DNS publik. Jadi Anda bisa membuka diri untuk melawan serangan, atau alamat lokal tidak berfungsi, atau memerlukan konfigurasi yang lebih canggih (jika perangkat lunak / router Anda bahkan mengizinkannya).

Nikola Toshev
sumber
+1 DNS rebinding buruk !! medium.com/@brannondorsey/…
Ohad Schneider
1

Cara terbaik untuk menyimpannya di file host. Jika hanya satu mesin yang seharusnya terhubung ke sana, apa yang Anda dapatkan dengan memasukkannya ke DNS publik?

sh-beta
sumber
Bekerja di cloud Anda bisa memiliki ribuan mesin pribadi. Beberapa tahun yang lalu, Netflix mengatakan mereka memiliki 2.000+ node Cassandra. Itu tidak praktis untuk menggunakan /etc/hostsfile tersebut karena semua 2.000 mesin perlu mengelola IP / pasangan nama ini ...
Alexis Wilke
1

Jika secara pribadi maksud Anda 10.0.0.0/8, 192.168.0.0/16, atau 172.16.0.0/12, maka jangan . Kebanyakan router internet mengenalinya apa adanya - alamat pribadi yang tidak boleh dialihkan ke internet publik secara langsung , yang membantu popularitas NAT. Siapa pun yang mencoba menghubungi server DNS publik Anda akan mengambil alamat IP pribadi dari DNS, hanya untuk mengirim paket ke .... tidak di mana pun. Ketika koneksi mereka mencoba untuk melintasi internet ke alamat pribadi Anda, beberapa router (yang dikonfigurasi dengan benar) di sepanjang jalan hanya akan memakan paket itu hidup-hidup.

Jika Anda ingin mendapatkan email dari "luar" untuk datang "di dalam", pada suatu titik, paket tersebut harus melewati firewall Anda. Saya akan menyarankan pengaturan alamat DMZ untuk menangani ini - satu alamat IP publik yang dikontrol ketat oleh router / firewall yang Anda miliki. Pengaturan yang ada yang Anda gambarkan terdengar seperti itu.

EDIT: klarifikasi maksud ... (lihat komentar di bawah). Jika ini tidak masuk akal, saya akan memilih untuk menghapus posting saya sendiri.

Avery Payne
sumber
3
Itu semua bagus dan benar, tetapi Anda belum memberikan alasan sebenarnya mengapa seseorang tidak boleh mempublikasikan alamat RFC1918 di DNS. Anda baru saja menggambarkan apa alamat RFC1918 dan bahwa mungkin untuk tidak memiliki rute ke beberapa dari mereka. Apa bedanya dengan nomor IP lainnya? Mungkin untuk tidak memiliki rute ke 198.41.0.4 - apakah itu berarti salah mempublikasikan 198.41.0.4 di DNS? DNS adalah sistem resolusi nama . Ini tidak ada hubungannya dengan routing, keduanya orthogonal. Anda mengkoleksi dua kategori masalah, yang pada dasarnya sama dengan FUD.
Mihai Limbăşan
1
Konteks diskusi adalah penggunaan alamat IP pribadi di server DNS publik . Titik posting adalah untuk menunjukkan bahwa, secara default, router tidak merutekan alamat IP pribadi. Saya tidak berusaha menunjukkan bahwa Anda tidak dapat menggunakan alamat IP pribadi di server DNS, hanya saja Anda tidak boleh memberikan alamat IP tersebut "ke luar". Jika ini tidak cukup jelas, saya dengan senang hati akan menarik kiriman. Kalau tidak, saya tidak setuju, posting adalah 100% tepat - efek bersih untuk orang ini adalah bahwa / mereka akan memiliki masalah / jika mereka melakukan ini.
Avery Payne
mengangguk komentar Anda di bawah posting Alnitak membersihkannya :) Terima kasih.
Mihai Limbăşan
"Siapa pun yang mencoba menghubungi server DNS publik Anda akan mengambil alamat IP pribadi dari DNS, hanya untuk mengirim paket ke ... tidak di mana-mana" - tidak, Anda sebenarnya baru saja menggambarkan DNS rebinding dan berfungsi pada beberapa router yang paling aman di luar sana, termasuk SOHO PepWave Surf saya: rebind.network/rebind
Ohad Schneider
0

Saya tiba di sini ketika saya mencari informasi yang sama dan terkejut bahwa banyak yang mengatakan tidak masalah untuk membocorkan alamat IP pribadi Anda. Saya kira dalam hal diretas, itu tidak membuat perbedaan besar jika Anda berada di jaringan yang aman. Namun, DigitalOcean memiliki semua lalu lintas jaringan lokal pada kabel yang sama persis dengan semua orang benar-benar memiliki akses ke lalu lintas orang lain (mungkin dapat dilakukan dengan seorang pria dalam serangan Tengah.) Jika Anda hanya akan mendapatkan komputer di pusat data yang sama, memiliki informasi tentu memberi Anda selangkah lebih dekat untuk meretas lalu lintas saya. (Sekarang setiap klien memiliki jaringan pribadi yang dicadangkan sendiri seperti dengan layanan cloud lainnya seperti AWS.)

Karena itu, dengan layanan BIND9 Anda sendiri, Anda dapat dengan mudah menentukan IP publik dan pribadi Anda. Ini dilakukan dengan menggunakan viewfitur, yang mencakup suatu kondisi. Ini memungkinkan Anda untuk menanyakan satu DNS dan mendapatkan jawaban tentang IP internal hanya jika Anda meminta dari salah satu alamat IP internal Anda sendiri.

Pengaturan membutuhkan dua zona. Seleksi menggunakan match-clients. Berikut adalah contoh pengaturan dari server DNS Dua-dalam-satu dengan BIND9 :

acl slaves {
    195.234.42.0/24;    // XName
    193.218.105.144/28; // XName
    193.24.212.232/29;  // XName
};

acl internals {
    127.0.0.0/8;
    10.0.0.0/24;
};

view "internal" {
    match-clients { internals; };
    recursion yes;
    zone "example.com" {
        type master;
        file "/etc/bind/internals/db.example.com";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "/etc/bind/externals/db.example.com";
        allow-transfer { slaves; };
    };
};

Ini adalah zona eksternal dan kita dapat melihat IP tidak pribadi

; example.com
$TTL    604800
@       IN      SOA     ns1.example.com. root.example.com. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      A       192.0.2.1
ns1     IN      A       192.0.2.1
mail    IN      A       192.0.2.128 ; We have our mail server somewhere else.
www     IN      A       192.0.2.1
client1 IN      A       192.0.2.201 ; We connect to client1 very often.

Adapun zona internal, pertama-tama kita memasukkan zona eksternal, yang merupakan cara kerjanya. yaitu jika Anda adalah komputer internal, Anda hanya mengakses zona internal sehingga Anda masih memerlukan definisi zona eksternal, maka $includeperintahnya:

$include "/etc/bind/external/db.example.com"
@       IN      A       10.0.0.1
boss    IN      A       10.0.0.100
printer IN      A       10.0.0.101
scrtry  IN      A       10.0.0.102
sip01   IN      A       10.0.0.201
lab     IN      A       10.0.0.103

Akhirnya, Anda harus memastikan bahwa semua komputer Anda sekarang menggunakan DNS dan budaknya. Dengan asumsi jaringan statis, itu berarti mengedit /etc/network/interfacesfile Anda dan menggunakan IP DNS Anda di nameserveropsi. Sesuatu seperti ini:

iface eth0 inet static
    ...
    nameserver 10.0.0.1 10.0.0.103 ...

Sekarang Anda harus siap.

Alexis Wilke
sumber