Catatan dari produksi
DNSSECDNSSecurity

DNSSEC: segel anti-utak-atik untuk DNS

Anda baru menyalakan DNSSEC untuk pangaea.id — Cloudflare kini menandatangani zona-nya, dan Anda menitipkan sebuah DS record kecil ke registrar. Begini manfaat sebenarnya, dan langkah persis yang Anda lakukan — dalam bahasa sederhana.

Masalahnya: DNS memercayai jawaban apa pun

DNS itu buku telepon internet: ia mengubah pangaea.id menjadi alamat IP yang dihubungi browser. Titik lemahnya — DNS biasa tak punya cara membuktikan sebuah jawaban asli. Saat resolver pengunjung bertanya "berapa alamat pangaea.id?", ia memercayai jawaban apa pun yang datang. Penyerang di jaringan — atau yang meracuni cache sebuah resolver — bisa memalsukan jawaban yang mengarahkan domain Anda ke server mereka. Pengunjung tak sadar; browser-nya langsung menyambung ke pemalsu itu.

Di balik layar: bagaimana sebuah jawaban DNS dipalsukan

Kenapa pemalsuan bisa terjadi? Akarnya ada di cara resolver mendapat jawaban. Saat resolver rekursif Anda belum punya pangaea.id di cache, ia bertanya ke jaringan dan menerima jawaban pertama yang tampak benar — yang cocok dengan pertanyaannya, source port-nya, dan sebuah transaction ID 16-bit. DNS klasik berjalan di atas UDP: tanpa koneksi, tanpa handshake, dan yang krusial tanpa bukti siapa sebenarnya yang mengirim jawaban itu.

Penyerang mengejar celah itu:

  1. Mereka memancing resolver agar mencari pangaea.id (atau tinggal menunggu).
  2. Mereka membanjirinya dengan jawaban palsu berisi IP palsu, menebak ID 16-bit (cuma 65.536 kemungkinan) dan source port-nya.
  3. Kalau sebuah jawaban palsu yang cocok mendarat sebelum jawaban asli, resolver memercayainya — dan menyimpannya di cache. (Inilah cache poisoning kelas Kaminsky; pengacakan source-port menaikkan palang, tapi tak pernah menutup pintunya.)
  4. Kini pangaea.id menunjuk ke server penyerang untuk semua orang yang memakai resolver itu, selama TTL berlaku — tanpa malware, tanpa peringatan.

Itu kasus jarak jauh. Penyerang di jalur (on-path) — hotspot Wi-Fi nakal, router yang diretas, ISP yang bermusuhan — bahkan tak perlu menebak: mereka melihat kuerinya dan langsung menyuntikkan jawaban palsu.

resolver: "di mana pangaea.id?"belum ada di cache — ia bertanya ke jaringanjawaban palsu tiba lebih duluID 16-bit ditebak + sumber dipalsukan · yang asli terlambatUDP · tanpa bukti pengirimresolver menerimanya — lalu menyimpan di cacheyang cocok duluan (nama · port · ID) menang✗ pangaea.id → IP penyerangteracuni untuk semua orang, selama TTLtiap pengunjung mendarat di pemalsu
Cache poisoning tanpa DNSSEC: jawaban palsu yang menang balapan tersimpan di cache, jadi resolver — dan semua orang di belakangnya — diarahkan ke penyerang sampai TTL habis. DNSSEC membuat jawaban palsu itu gagal validasi tanda tangan, jadi langsung ditolak.

Benang merahnya: DNS biasa tak bisa membedakan jawaban asli dari yang palsu. Persis celah itulah yang ditutup DNSSEC — jawaban palsu tak bisa membawa tanda tangan yang sah, jadi resolver yang memvalidasi langsung membuangnya.

Apa yang ditambahkan DNSSEC: segel anti-utak-atik

DNSSEC (DNS Security Extensions) memberi segel lilin kriptografis pada tiap entri buku telepon. DNS Anda (Cloudflare) menandatangani tiap record dengan kunci privat; kunci publik yang cocok diterbitkan di DNS. Kini resolver bisa memverifikasi tanda tangannya sebelum memercayai sebuah jawaban — membuktikan jawaban itu (a) benar-benar datang dari yang mengendalikan pangaea.id, dan (b) tak diubah di perjalanan. Jawaban palsu gagal cek itu dan dibuang.

Kuncinya: siapa yang menjamin kunci tersebut. DNSSEC itu rantai kepercayaan (chain of trust), satu mata rantai per tingkat: root menjamin .id, dan .id menjamin pangaea.id. Tiap induk menerbitkan sidik jari kecil — sebuah DS record (Delegation Signer) — dari kunci penanda-tangan anaknya. Itulah record yang Anda tambahkan di registrar: mata rantai yang menyambung zona .id ke zona Anda, sehingga resolver bisa menyusuri root → .id → pangaea.id, mengecek tanda tangan di tiap langkah.

Jadi saat jawaban palsu tadi muncul lagi, kini ia harus lolos satu pemeriksaan — dan itulah inti pertahanannya:

jawaban palsuIP palsu · tanpa tanda tangan sahjawaban tertandaIP asli + tanda tangan RRSIGvalidasi DNSSECcek tanda tangan: root → .id → pangaea.id✗ ditolaktanpa tanda tangan sah —jawaban palsu dibuang✓ diterimadi-cache → pengunjung sampaike server asli
Serangan vs pertahanan: jawaban palsu dan jawaban asli tertanda sama-sama sampai ke resolver, tapi DNSSEC mengecek tiap tanda tangan terhadap rantainya. Yang palsu tak punya → ditolak; hanya jawaban tertanda yang dipercaya dan di-cache.

Cara menyiapkannya — langkah demi langkah

1 · Cloudflare → DNS → aktifkan DNSSECCloudflare mulai menandatangani zona Andamenampilkan DS record →DS record — sidik jari kunci Andatag 12345 · algo 13 · digest 2 · 49FD…7C3D2 · salin3 · Hostinger (registrar) → DNSSECtempel DS record di siniregistrar meneruskan →4 · registry .id menerbitkan DS-nyadi zona induk (.id)5 · rantai kepercayaan lengkaproot → .id → pangaea.id · ditandatangani + terverifikasi
Lima langkah: aktifkan DNSSEC di Cloudflare → ia menandatangani zona dan memberi Anda DS record → tempel DS itu di registrar (Hostinger) → registry .id menerbitkannya di zona induk → rantai root → .id → pangaea.id tersegel.
  1. Cloudflare → domain Anda → DNS → Settings → Enable DNSSEC. Cloudflare langsung mulai menandatangani zona Anda dan menampilkan sebuah DS record.

  2. Salin DS record-nya yang ditampilkan Cloudflare — empat nilai (contoh di bawah; digest Anda sendiri berupa hash 64 karakter yang unik):

    Key Tag:      12345
    Algorithm:    13       (ECDSA P-256 / SHA-256)
    Digest Type:  2        (SHA-256)
    Digest:       49FD2A8C…E1B07C3D   (hash SHA-256 dari kunci Anda)
    
  3. Di registrar — Hostinger → domain → DNS / Nameservers → DNSSEC — tambahkan sebuah DS record dan tempel keempat nilai itu.

  4. Registrar meneruskan DS-nya ke registry .id, yang menerbitkannya di zona induk — melengkapi rantainya.

  5. Selesai: "pangaea.id is protected with DNSSEC." Cloudflare menandatangani; registry menjamin kuncinya; resolver memverifikasi.

Arti tiap kolom, sederhananya:

  • Key Tag (12345) — angka ID yang menunjuk kunci penanda-tangan yang mana.
  • Algorithm (13) — cara menandatanganinya: ECDSA P-256 / SHA-256, modern dan cepat.
  • Digest Type (2) — hash di balik sidik jarinya: SHA-256.
  • Digest (49FD…7C3D) — sidik jarinya sendiri, sebuah hash dari kunci publik Cloudflare. Inilah yang disimpan registry .id untuk mengenali kunci Anda.

Verifikasi sendiri

Jangan cuma percaya dashboard — tanyakan ke internet. Dari terminal mana pun:

dig pangaea.id DNSKEY +dnssec     # kunci tertanda Anda + tanda tangan RRSIG
dig pangaea.id +dnssec            # flag `ad` = resolver pemvalidasi sudah mengecek rantainya

Zona yang tertanda mengembalikan kunci-kuncinya plus record RRSIG, dan resolver yang memvalidasi menyetel flag ad (Authenticated Data) pada jawabannya. Versi ramahnya: pakai analyzer DNSSEC seperti dnsviz.net — tempel pangaea.id dan cari rantai utuh dari root sampai domain Anda.

Yang TIDAK dilakukan DNSSEC

Jebakannya: matikan dulu sebelum memindahkan DNS

Jangan ganti nameserver saat DNSSEC masih aktif

  • DS record di registrar terikat ke kunci Cloudflare. Kalau suatu saat Anda memindahkan DNS keluar dari Cloudflare tanpa lebih dulu menghapus DS record di registrar, resolver akan terus menuntut tanda tangan yang tak bisa dibuat nameserver baru → mereka membalas SERVFAILseluruh domain mati di mana-mana. Menghapus DS itu langkah pertama tiap perpindahan DNS ke depan — bukan urusan belakangan. (Ini sepupu DNSSEC dari jebakan CAA di artikel SSL.)

Pertanyaan umum

DNSSEC sebenarnya melindungi dari apa?

Jawaban DNS palsu — cache poisoning dan penyadapan di jalur, saat penyerang membuat resolver memercayai alamat palsu untuk domain Anda. Tanda tangan DNSSEC membuat resolver bisa mendeteksi pemalsuan itu dan menolaknya, jadi pengunjung tak bisa diam-diam dialihkan ke server pemalsu.

Apakah DNSSEC sama dengan HTTPS?

Bukan — keduanya mengamankan lapisan yang berbeda. DNSSEC mengamankan lookup-nya (membuktikan Anda dapat alamat yang asli); HTTPS/TLS mengamankan koneksi-nya (mengenkripsi yang Anda pertukarkan dengan server). Anda butuh keduanya: DNSSEC mengantar Anda ke server yang benar, HTTPS melindungi percakapannya begitu sampai.

Apakah DNSSEC membuat DNS saya privat?

Tidak. Ini soal keaslian, bukan kerahasiaan — DNSSEC membuktikan sebuah jawaban asli tapi tak menyembunyikan nama apa yang Anda cari. Mengenkripsi kueri itu sendiri adalah hal terpisah (DNS-over-HTTPS atau DNS-over-TLS).

DS record yang saya tambahkan di registrar itu apa?

DS record (Delegation Signer) adalah sidik jari kunci penanda-tangan zona Anda, dititipkan ke registry .id lewat registrar. Itulah mata rantai yang membuat zona induk (.id) bisa menjamin kunci Anda, melengkapi rantai kepercayaan dari root sampai pangaea.id. Tanpanya, resolver tak punya cara memercayai tanda tangan Anda.

Apa yang terjadi kalau nanti saya ganti penyedia DNS?

Hapus dulu DS record di registrar. DS itu terikat ke kunci penyedia Anda sekarang; kalau Anda memindahkan nameserver saat ia masih ada, resolver menuntut tanda tangan yang tak bisa dibuat penyedia baru dan domain gagal resolve (SERVFAIL) di mana-mana. Hapus DS-nya, pindahkan DNS, lalu aktifkan lagi DNSSEC di penyedia baru.

Posisinya di mana

DNSSEC menyegel lookup-nya; SSL & keamanan cepat-aman di edge menyegel koneksi-nya, dan Arahkan domain ke Cloudflare adalah tempat nameserver-nya dipindahkan sejak awal. Cerita bahasa-sederhana dari seluruh proses pengerasan ini ada di catatan diary Bikin cepat dan aman.

Sources

  1. Cloudflare — DNSSEC
  2. Cloudflare — Cara kerja DNSSEC
  3. ICANN — DNSSEC: apa itu dan kenapa penting