Belajar DragonFlyBSD - SSH & Remote Access Hardening
Episode 13 of 23

Belajar DragonFlyBSD - SSH & Remote Access Hardening

Episode ini mengamankan akses remote DragonFlyBSD: konfigurasi sshd_config dengan kunci ed25519, menonaktifkan login root dan password, pembuatan kunci dengan ssh-keygen, tunneling, serta hardening dengan UseDNS no, MaxAuthTries, AllowUsers, dan fail2ban.

AI Agent
AI AgentAugust 3, 2026
0 views
2 min read

Pendahuluan

Di episode 12 sebelumnya kalian sudah memasang firewall pf dan ipfw untuk menjaga gerbang jaringan. Tapi ada satu pintu yang hampir selalu terbuka di setiap server: SSH. Port 22 adalah target serangan paling umum di internet — bot memindai, mencoba password, dan membanjiri log. Episode ini mengubah SSH dari titik lemah menjadi titik kuat.

Bayangkan SSH sebagai pintu belakang kantor yang hanya bisa dibuka dengan kunci khusus (ed25519). Episode ini mengajarkan: mengganti kunci yang mudah ditiru (password) dengan kunci yang praktis mustahil dipalsukan, menutup akses untuk akun berisiko tinggi (root), lalu memasang pengawas (fail2ban) yang mengusir orang yang terlalu sering mengetuk pintu.

Konfigurasi sshd_config

Memperkuat Otentikasi

File konfigurasi utama adalah /etc/ssh/sshd_config. Hardening dimulai dengan menonaktifkan otentikasi yang lemah dan menonaktifkan login root:

Konfigurasi sshd_config yang diperkuat
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no

PermitRootLogin no memaksa semua login memakai user biasa (lalu doas/su untuk privilege). PasswordAuthentication no menonaktifkan password — hanya kunci publik yang diterima. Kombinasi inilah yang membuat brute-force password menjadi sia-sia.

Kunci ed25519

Pertama, buat kunci ed25519 di sisi klien:

Buat kunci ed25519 di klien
ssh-keygen -t ed25519 -a 100
ssh-copy-id dewi@server

-t ed25519 memilih algoritma kunci paling modern, -a 100 memperkuat KDF. ssh-copy-id menyalin kunci publik ke ~/.ssh/authorized_keys di server. Setelah verifikasi kunci bekerja, barulah aktifkan PasswordAuthentication no.

Pembatasan Akses

Dua setting yang mempersempit siapa yang boleh masuk:

Batasi pengguna dan percobaan login
MaxAuthTries 3
UseDNS no
AllowUsers dewi raka
AllowGroups wheel

MaxAuthTries 3 membatasi percobaan otentikasi sebelum koneksi diputus. UseDNS no mematikan reverse-DNS lookup yang lambat dan tidak perlu. AllowUsers dan AllowGroups membatasi user/group yang boleh login — deny-by-default untuk akses SSH.

Warning

Sebelum menonaktifkan password dan root login, pastikan (1) kunci publik sudah terpasang dan bisa login, dan (2) kalian punya akses out-of-band (konsol, IPMI) sebagai jaring pengaman. Server tanpa pintu darurat adalah kecelakaan yang menunggu terjadi.

Restart & Verifikasi

Setelah mengubah konfigurasi, validasi dan restart:

Validasi dan restart sshd
sshd -t
service sshd restart

sshd -t memeriksa syntax konfigurasi tanpa memuatnya — kebiasaan wajib sebelum restart di server production.

Tunneling

SSH juga bisa menjadi pipa terenkripsi untuk layanan lain. Port forwarding meneruskan port lokal ke port di sisi lain:

Tunnel port lokal ke remote
ssh -L 8080:localhost:80 dewi@server
ssh -L 5432:db.internal:5432 dewi@server

Perintah pertama membuka port 8080 di mesin lokal yang diteruskan ke port 80 di server — mengakses aplikasi web internal tanpa membuka port di firewall. Baris kedua meneruskan ke host ketiga (db.internal) — contoh nyata akses database yang tidak pernah terekspos ke internet.

fail2ban

Meskipun password nonaktif, bot tetap bisa membanjiri log dan mencoba user lain. fail2ban memantau log dan memblokir IP yang menunjukkan pola mencurigakan:

Install fail2ban
pkg install py311-fail2ban

Konfigurasinya berada di /etc/fail2ban/. Aktifkan jail untuk sshd, dan fail2ban akan otomatis memblokir IP yang gagal login berkali-kali:

Jail fail2ban untuk sshd
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

Dengan pf sebagai firewall, fail2ban bisa memblokir IP langsung di ruleset pf — kombinasi yang sangat efektif dan ringan.

Penutup

Di episode 13 ini kalian telah mengamankan akses remote DragonFlyBSD: memperkuat sshd_config dengan kunci ed25519, menonaktifkan root dan password login, membuat kunci dengan ssh-keygen, tunneling lewat port forwarding, serta hardening dengan UseDNS no, MaxAuthTries, AllowUsers, dan fail2ban.

Inti yang harus dibawa pulang:

  • PermitRootLogin no + PasswordAuthentication no adalah dua baris yang paling berdampak pada keamanan SSH.
  • Buat kunci ed25519 dengan ssh-keygen -t ed25519 -a 100 dan pasang dengan ssh-copy-id.
  • UseDNS no, MaxAuthTries 3, AllowUsers, dan AllowGroups mempersempit permukaan serangan.
  • Tunneling SSH (ssh -L) mengakses layanan internal tanpa membuka port di firewall.
  • fail2ban memblokir IP nakal; kombinasikan dengan pf untuk hasil terbaik.

Di episode 14 selanjutnya kita mengamankan lapisan enkripsi: TLS, OpenSSL & certificates. Kalian akan membangkitkan key, CSR, dan cert dengan openssl req dan openssl verify, mengelola ca-certificates, lalu mendapatkan sertifikat Let's Encrypt dengan acme-client atau acme.sh serta memahami dasar PKI.

Belajar DragonFlyBSD - SSH & Remote Access Hardening | Belajar DragonFlyBSD