GNU/Linux >> Belajar Linux >  >> Ubuntu

Lindungi Privasi DNS Anda di Ubuntu 20.04/18.04 (DNS melalui TLS)

Tutorial ini akan menunjukkan cara melindungi privasi DNS Anda di desktop Ubuntu 20.04/18.04 dengan DNS melalui TLS . Kami akan menggunakan alat yang disebut stubby untuk mencapai itu. Tapi pertama-tama, izinkan saya memberi tahu Anda mengapa DNS tidak aman.

Kerentanan DNS

DNS tidak aman karena secara default kueri DNS tidak dienkripsi, yang dapat dimanfaatkan oleh entitas menengah. Racun cache DNS adalah salah satu penyalahgunaan DNS yang banyak digunakan oleh Great Firewall of China (GFW) untuk menyensor Internet China. GFW memeriksa setiap permintaan DNS yang dikirim ke server DNS di luar China. Karena protokol DNS teks biasa didasarkan pada UDP, yang merupakan protokol tanpa koneksi, GFW dapat memalsukan IP klien dan IP server. Ketika GFW menemukan nama domain di daftar blokirnya, itu mengubah respons DNS. Misalnya, jika pengguna Internet China ingin mengunjungi google.com, Great firewall of China mengembalikan ke DNS resolver alamat IP yang terletak di China, bukan alamat IP asli Google. Kemudian DNS resolver mengembalikan alamat IP palsu ke komputer pengguna.

Apa itu DNS over TLS? Bagaimana Ini Melindungi Privasi Anda?

DNS melalui TLS berarti bahwa kueri DNS dikirim melalui koneksi aman yang dienkripsi dengan TLS, teknologi yang sama yang mengenkripsi lalu lintas HTTP, sehingga tidak ada pihak ketiga yang dapat melihat kueri DNS Anda. Bersama dengan HTTPS dan SNI (Indikasi Nama Server) terenkripsi, riwayat penjelajahan Anda sepenuhnya terlindungi dari mata-mata ISP.

Stubby adalah resolver rintisan DNS open-source yang dikembangkan oleh tim getdns. Ini menggunakan perpustakaan getdns. Penyelesai rintisan adalah klien DNS kecil di komputer pengguna akhir yang menerima permintaan DNS dari aplikasi seperti Firefox dan meneruskan permintaan ke penyelesai rekursif seperti 1.1.1.1 atau 8.8.8.8. Stubby istimewa karena mendukung DNS melalui TLS. Secara default, itu hanya akan mengirim permintaan DNS terenkripsi. Ada penyelesai rintisan sumber terbuka lain yang disebut cloudflared yang mendukung DNS melalui HTTPS tetapi stubby sudah ada di repositori Ubuntu 20.04/18.04 dan sangat mudah digunakan.

Cara Menginstal dan Menggunakan Stubby di Desktop Ubuntu 20.04/18.04

Stubby ada di repositori Ubuntu 20.04/18.04. Buka jendela terminal dan jalankan perintah berikut untuk menginstalnya.

sudo apt install stubby

Ini akan menginstal stubby dan getdns Perpustakaan. Setelah diinstal, stubby berjalan di latar belakang. Anda Anda memeriksa statusnya dengan:

systemctl status stubby

Stubby mendengarkan TCP dan UDP port 53 dari localhost (127.0.0.1), seperti yang dapat dilihat dengan menjalankan perintah ini:

sudo netstat -lnptu | grep stubby

Penyelesai rintisan default disediakan oleh systemd-resolved mendengarkan pada port TCP dan UDP 53 dari 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Catatan:Jika dnsmasq mendengarkan pada port TCP 53 dari 127.0.0.1, maka Stubby hanya akan mendengarkan pada port UDP 53 dari 127.0.0.1.

File konfigurasi utama adalah /etc/stubby/stubby.yml . Biasanya tidak perlu membuat perubahan kecuali Anda ingin menggunakan resolver rekursif lain atau Anda sendiri. Mari saya jelaskan beberapa konfigurasi default. Anda dapat membuka file dengan:

sudo nano /etc/stubby/stubby.yml

Baris berikut membuat stubby dijalankan sebagai stub resolver alih-alih resolver rekursif penuh, itulah sebabnya dinamai stubby.

resolution_type: GETDNS_RESOLUTION_STUB

Konfigurasi berikut membuat stubby mengirim kueri DNS yang dienkripsi dengan TLS. Itu tidak akan mengirim pertanyaan dalam teks biasa.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

Baris berikut ini memerlukan sertifikat TLS yang valid pada resolver rekursif jarak jauh.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Baris berikut mengatur alamat pendengar untuk daemon gemuk. Secara default, IPv4 dan IPv6 keduanya diaktifkan.

listen_addresses:
- 127.0.0.1
- 0::1

Baris berikut membuat resolver rekursif kueri yang gemuk dengan cara round-robin. Jika diatur ke 0 , Stubby akan menggunakan setiap server upstream secara berurutan hingga menjadi tidak tersedia dan kemudian melanjutkan untuk menggunakan yang berikutnya.

round_robin_upstreams: 1

Secara default ada 3 resolver rekursif yang diaktifkan di file konfigurasi stubby. Mereka dijalankan oleh pengembang yang gemuk dan mendukung DNS melalui TLS. Anda dapat melihat daftar lengkap server yang direkomendasikan di situs web Privasi DNS.

dnsovertls.sinodun.com     145.100.185.15
dnsovertls1.sinodun.com    145.100.185.16
getdnsapi.net              185.49.141.37

Ada server DNS lain di Additional Servers bagian yang dinonaktifkan secara default.

dns.quad9.net
unicast.censurfridns.dk
dnsovertls3.sinodun.com (supporting TLS1.2 and TLS 1.3)
dnsovertls2.sinodun.com
dns.cmrg.net
dns.larsdebruin.net
......

Ada juga server DNS yang mendengarkan pada port 443. Jika port 853 diblokir di jaringan Anda, Anda dapat membatalkan komentar untuk menggunakan server ini.

dnsovertls.sinodun.com
dnsovertls1.sinodun.com
dns.cmrg.net
dns.neutopia.org

Sekarang Anda dapat keluar dari editor teks nano dengan menekan Ctrl+X .

Beralih ke Gemuk

Mengedit /etc/resolve.conf file untuk mengubah server nama tidak disarankan lagi. Ikuti petunjuk di bawah ini untuk membuat systemd-resolved kirim kueri DNS ke stubby.

Desktop GNOME

Klik ikon Network Manager di sudut kanan atas desktop Anda. Kemudian pilih pengaturan kabel. (Jika Anda menggunakan Wi-fi, pilih setelan Wi-fi.)

Klik tombol roda gigi.

Pilih IPv4 tab, lalu di pengaturan DNS, alihkan Automatic ke OFF, yang akan mencegah sistem Ubuntu Anda mendapatkan alamat server DNS dari router Anda. Masukkan 127.0.0.1 di kolom DNS. Klik Apply untuk menyimpan perubahan Anda.

Kemudian mulai ulang NetworkManager agar perubahan diterapkan.

sudo systemctl restart NetworkManager

Setelah Anda terhubung kembali, Anda dapat melihat bahwa sistem Ubuntu Anda sekarang menggunakan 127.0.0.1 sebagai server DNS di Details tab.

Kesatuan Desktop

Bacaan yang disarankan:cara menginstal lingkungan desktop Unity di Ubuntu 20.04/18.04.

Klik ikon Network Manager di pojok kanan atas desktop Anda, lalu klik edit connections .

Pilih nama koneksi Anda dan klik ikon roda gigi.

Pilih tab pengaturan IPv4, ubah metode dari Automatic(DHCP) ke Automatic(DHCP) addresses only , yang akan mencegah sistem Ubuntu Anda mendapatkan alamat server DNS dari router Anda. Kemudian tentukan server DNS (127.0.0.1). Stubby mendengarkan di 127.0.0.1.

Simpan perubahan Anda. Kemudian mulai ulang NetworkManager agar perubahan diterapkan.

sudo systemctl restart NetworkManager

Setelah Anda terhubung kembali, klik ikon Network Manager lagi dan pilih connection information . Anda dapat melihat bahwa sistem Ubuntu Anda sekarang menggunakan 127.0.0.1 sebagai server DNS.

Ubah Server DNS Dari Baris Perintah

Anda dapat menggunakan metode di bawah ini untuk mengubah server DNS selama lingkungan desktop Anda menggunakan NetworkManager.

Buka jendela terminal dan buka direktori profil koneksi Network Manager.

cd /etc/NetworkManager/system-connections/

Kemudian daftar nama koneksi yang tersedia di sistem Anda.

ls

Seperti yang Anda lihat, saya memiliki beberapa koneksi di sistem saya, salah satunya adalah koneksi kabel. Beberapa koneksi nirkabel dan satu koneksi VPN. Karena komputer desktop saya terhubung ke router saya melalui kabel Ethernet, jadi saya perlu mengedit profil koneksi kabel dengan nano editor teks baris perintah.

sudo nano 'Wired connection 1'

Jika komputer Anda terhubung melalui Wi-fi, maka Anda perlu mengedit profil koneksi nirkabel. Dalam file ini, temukan [ipv4] konfigurasi. Secara default, seharusnya terlihat seperti ini:

[ipv4]
dns-search=
method=auto

Untuk membuat sistem Anda menggunakan Stubby, ubah konfigurasi sebagai berikut.

[ipv4]
dns=127.0.0.1;
dns-search=
ignore-auto-dns=true
method=auto

Untuk menyimpan file di editor teks Nano, tekan Ctrl+O , lalu tekan Enter untuk mengonfirmasi. Tekan Ctrl+X untuk keluar. Kemudian restart Network Manager agar perubahan diterapkan.

sudo systemctl restart NetworkManager

Anda sekarang dapat memeriksa server DNS Anda saat ini dengan menjalankan perintah berikut:

systemd-resolve --status

Contoh keluaran:

Link 2 (enp5s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 127.0.0.1

Jika 127.0.0.1 terdaftar sebagai server DNS, maka sistem Anda menggunakan Stubby.

Abaikan Pengaturan DNS yang Disediakan oleh Server DHCP

Jika Anda menggunakan Edisi server Ubuntu , Anda dapat mengonfigurasi systemd untuk mengabaikan pengaturan DNS yang disediakan oleh server DHCP, sehingga sistem Anda tidak akan menggunakan server DNS yang salah secara tidak sengaja.

Pertama, periksa status antarmuka jaringan Anda.

networkctl status enp5s0

Ini akan menunjukkan kepada Anda file jaringan untuk antarmuka ini. Edit file jaringan ini.

sudo nano /run/systemd/network/10-netplan-enp5s0.network

Temukan [DHCP] bagian dan tambahkan baris berikut.

UseDNS=false

Seperti ini:

[DHCP]
RouteMetric=100
UseMTU=true
UseDNS=false

Simpan dan tutup file. Kemudian restart systemd-netweorkd.service agar perubahan diterapkan.

sudo systemctl restart systemd-networkd

Jalankan perintah berikut untuk memeriksa server DNS untuk setiap antarmuka jaringan. Jika semuanya benar, Anda tidak akan melihat server DNS yang disediakan oleh server DHCP Anda.

resolvectl status

Perubahan dalam file jaringan dapat ditimpa oleh pembaruan paket baru. Jika server Anda menggunakan netplan untuk mengelola koneksi jaringan, Anda juga dapat mengonfigurasi netplan untuk mengabaikan pengaturan DNS DHCP.

sudo nano /etc/netplan/50-cloud-init.yaml

Tambahkan dua baris berikut ke file.

       dhcp4-overrides:
           use-dns: no

Seperti ini:

network:
    ethernets:
        eth0:
            dhcp4: true
            dhcp4-overrides:
                use-dns: no
            optional: true
            set-name: eth0
            nameservers:
               search: [ invalid ]
               addresses: 127.0.0.1
    version: 2

Simpan dan tutup file. Kemudian terapkan perubahannya.

sudo netplan apply

Cara Memeriksa Apakah Lalu Lintas DNS Anda Dienkripsi

Kita dapat menggunakan WireShark untuk memantau lalu lintas DNS. Instal WireShark dari repositori Ubuntu 20.04/18.04.

sudo apt install wireshark

Jika Anda ditanya “Haruskah non-pengguna super dapat menangkap paket?”, Jawab Ya. Setelah terinstal, jalankan perintah berikut untuk menambahkan akun pengguna Anda ke grup wireshark sehingga Anda dapat menangkap paket.

sudo adduser your-username wireshark

Keluar dan masuk kembali agar perubahan diterapkan. Kemudian buka WireShark dari menu aplikasi Anda, pilih antarmuka jaringan Anda di WireShark. Misalnya, nama antarmuka Ethernet saya adalah enp5s0. Kemudian masukkan port 853 sebagai filter penangkapan. Ini akan membuat WireShark hanya menangkap lalu lintas pada port 853, yang merupakan port yang digunakan oleh DNS melalui TLS.

Klik tombol di sudut kiri atas untuk mulai menangkap. Setelah itu, di jendela terminal, jalankan perintah berikut untuk menanyakan nama domain dengan menggunakan dig kegunaan. Misalnya, saya dapat menanyakan catatan A dari nama domain saya.

dig A linuxbabe.com

Sekarang Anda dapat melihat lalu lintas DNS yang ditangkap di WireShark. Seperti yang Anda lihat, permintaan DNS saya dikirim ke 185.49.141.37 , 145.100.185.15 dan 145.100.185.16 , yang merupakan 3 resolver DNS default yang ditentukan dalam file konfigurasi gemuk. Koneksi dibuat melalui TCP dan dienkripsi dengan TLS, itulah yang saya inginkan.

Jika kueri DNS dikirim tanpa enkripsi, maka komputer akan menghubungi server DNS pada port 53. Anda dapat menangkap paket lagi dengan port 53 sebagai filter pengambilan, tetapi Anda tidak akan melihat paket apa pun di WireShark, yang berarti stubby mengenkripsi kueri DNS Anda.

Cara Menambahkan DNS CloudFlare ke Stubby

Saya menemukan bahwa ada latensi tinggi (lebih dari 200 md) antara komputer saya dan 3 server DNS default, sedangkan server DNS CloudFlare (1.1.1.1, 1.0.0.1) memberi saya latensi yang sangat rendah (di bawah 20 md). CloudFlare juga mendukung DNS melalui TLS. Untuk menambahkan server DNS CloudFlare, edit file konfigurasi stubby.

sudo nano /etc/stubby/stubby.yml

Gulir ke bawah ke upstream_recursive_servers: dan tambahkan teks berikut di atas server DNS lainnya.

#CloudFlare servers
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 1.0.0.1
    tls_auth_name: "cloudflare-dns.com"

Kemudian cari baris berikut:

round_robin_upstreams: 1

Ubah 1 ke 0 . Ini akan membuat gemuk selalu menggunakan server DNS CloudFlare. Jika CloudFlare tidak tersedia, stubby akan menggunakan server DNS lain. Simpan file dan mulai ulang stubby agar perubahan diterapkan.

sudo systemctl restart stubby

DNS melalui Dukungan HTTPS

Stubby akan mendukung DNS melalui HTTPS di versi 0.3. Ubuntu 20.10 dikirimkan dengan versi 0.2.6. Untuk memeriksa versi Stubby, jalankan

stubby -V

Ubuntu
  1. Anggur 6.15 Dirilis! Cara Menginstalnya di Ubuntu 20.04/21.04/18.04

  2. 12 Alat Sederhana untuk Melindungi Privasi Anda

  3. Cara Menginstal Flatpak di Ubuntu 20.04/18.04

  1. Cara Menginstal Kodi Media Center 19.0 di Ubuntu 20.04/18.04

  2. Cara Menginstal KDE Plasma 5.16 di Ubuntu 16.04/Ubuntu 18.04, 19.04

  3. Menyetel ulang kata sandi root MySQL/MariaDB di Ubuntu 16.04/18.04

  1. Cara Menginstal SABnzbd Usenet Client di Ubuntu 16.04/18.04

  2. 2 Cara Menginstal Android Studio di Ubuntu 20.04/Ubuntu 18.04

  3. Siapkan Server VPN WireGuard Anda Sendiri di Ubuntu 20.04/18.04