Langkah 05 · Delegasikan
Arahkan ke mesin itu. Lalu baca apa yang baru saja Anda publikasikan.
Delegasi itu sendiri hanya dua record dan lima menit. Atur nameserver di registrar, buat record alamat untuk host tersebut, tunggu perubahan itu merambat ke registry, dan konfirmasikan dari luar jaringan Anda sendiri, bukan dari mesin yang sudah tahu jawabannya. Yang layak mendapat sisa empat puluh menitnya adalah segala sesuatu yang dibuat terlihat oleh delegasi tersebut setelahnya.
dig +short NS example.com @1.1.1.1 # the delegation as the world sees it, not your cache
dig +short A app.example.com # must return the VPS address before you deploy anything
dig +short CAA example.com # empty today; step 05 fills it in
dig +short DS example.com # non-empty only if DNSSEC is actually signed
Soal siapa yang menjalankan server otoritatif, jawaban jujurnya bukan jawaban yang biasanya diberikan seri ini. DNS otoritatif yang dihosting sendiri adalah satu-satunya komponen di mana melakukannya sendiri umumnya justru lebih buruk: ia menuntut dua server atau lebih pada jaringan terpisah, ia harus tetap bekerja justru selama insiden yang membuat mesin utama Anda down, ia memerlukan perhatian berkelanjutan agar tidak disalahgunakan untuk amplifikasi, dan ketika ia gagal, semuanya ikut gagal — termasuk perpanjangan sertifikat yang seharusnya memungkinkan Anda memperbaiki situasi tersebut. Ini juga menciptakan korelasi yang justru sedang Anda hindari, karena nameserver yang dijalankan sendiri dan dipakai bersama oleh dua proyek secara publik mengaitkan keduanya dalam dataset yang dapat dikueri siapa saja. Gunakan operator DNS dengan jaringan anycast, pilih berdasarkan apakah ia mensyaratkan dokumen identitas, bukan berdasarkan daftar fiturnya, dan simpan file zona yang sudah diekspor sehingga berpindah menjadi sekadar tempel, bukan penggalian arkeologi. Ini adalah pekerjaan yang berbeda dari resolver rekursif privat dalam seri ini, yang memindahkan log tentang apa yang Anda cari ke mesin Anda sendiri dan memang layak dilakukan.
Sekarang, kebocoran yang membatalkan lebih banyak pengaturan yang cermat daripada apa pun lain di halaman ini, karena ia beroperasi secara diam-diam dan setelah Anda berhenti memperhatikan. Setiap sertifikat yang diterbitkan oleh otoritas yang dipercaya publik dikirimkan ke log publik tambah-saja, dan browser menolak sertifikat yang tidak demikian. Log-log ini ada agar kesalahan penerbitan dapat terdeteksi, yang memang benar-benar hal yang baik, dan log-log ini diindeks oleh antarmuka pencarian gratis. Konsekuensinya, setiap hostname yang pernah Anda mintakan sertifikatnya hanya berjarak satu pencarian kata kunci, bagi siapa pun, secara permanen — termasuk staging., vpn., backup., dan nama administratif yang Anda kira tidak akan ditebak siapa pun.
# every certificate ever issued under the zone, and every hostname inside each one
curl -s 'https://crt.sh/?q=%25.example.com&output=json' | jq -r '.[].name_value' | sort -u
Mitigasinya adalah satu sertifikat wildcard tunggal untuk zona itu, dilayankan untuk setiap hostname internal di bawahnya. Entri log kemudian hanya mencatat bahwa sebuah sertifikat ada untuk zona itu dan tidak mencatat apa pun tentang apa yang ada di dalamnya. Konsekuensinya adalah wildcard membutuhkan challenge berbasis DNS, bukan yang berbasis file yang lebih sederhana, yang berarti sebuah token API untuk operator DNS Anda di mesin itu — sepuluh menit pengaturan, ditimbang melawan daftar publik permanen dari skema penamaan internal Anda. Terbitkan satu wildcard, simpan di reverse proxy, dan berhenti meminta sertifikat per-hostname.
Dua record menyelesaikan tugas ini. Sebuah record CAA menyatakan otoritas sertifikat mana yang diizinkan menerbitkan sertifikat untuk nama tersebut, sehingga penerbitan yang salah oleh otoritas lain ditolak sejak dari sumbernya, bukan baru terdeteksi setelahnya. Dan DNSSEC, jika registry dan operator DNS Anda sama-sama mendukungnya, menandatangani delegasi sehingga resolver dapat membedakan jawaban palsu dari yang asli — ini hanya satu saklar di kebanyakan operator dan satu record di registrar, dan satu-satunya hal yang perlu diwaspadai adalah bahwa zona yang ditandatangani namun kuncinya salah dikelola akan gagal secara tertutup, yaitu gagal secara menyeluruh.
; in the zone — only this authority may issue, and tell us if anyone tries
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild "letsencrypt.org"
example.com. IN CAA 0 iodef "mailto:abuse@example.com"
Terakhir, lapisan korelasi, yaitu tempat dua kompartemen menjadi satu tanpa seorang pun membuat kesalahan. Dataset passive-DNS mencatat nama mana yang pernah resolve ke alamat mana dan kapan; sebuah alamat yang dipakai bersama, sekelompok nameserver yang dipakai bersama, atau sebuah mail exchanger yang dipakai bersama sudah cukup untuk menautkan dua proyek yang sama sekali tidak memiliki kaitan lain. Jika dua nama harus tetap tidak tertaut, keduanya membutuhkan server terpisah, kelompok nameserver terpisah, dan perutean email terpisah — dan hal yang sama berlaku untuk hal-hal kecil yang tidak pernah dihitung siapa pun, seperti sebuah ID analitik yang dipakai berulang di kedua situs atau sebuah favicon yang identik, yang keduanya dapat dicari dalam skala internet oleh siapa pun yang peduli untuk mencarinya.