Belajar OpenBSD - OpenSSH & Hardening
Episode 14 of 23

Belajar OpenBSD - OpenSSH & Hardening

Mengamankan akses jauh ke OpenBSD: mengonfigurasi sshd_config modern dengan kunci ed25519, mematikan password dan root login, membatasi user yang boleh login, memakai pf tables untuk meredam brute force, serta memanfaatkan tunneling dan port forwarding SSH.

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

Pendahuluan

Di episode 13 sebelumnya, kalian membuat pf bekerja keras sebagai gateway dan firewall. Namun firewall tidak menutup kenyataan bahwa ada satu pintu yang harus selalu terbuka: SSH. Hampir semua server OpenBSD diakses lewat SSH, dan itulah mengapa SSH adalah jalur paling diserang.

Kabar baiknya: OpenSSH lahir dari OpenBSD, jadi kalian sedang bekerja dengan SSH versi paling matang dan paling diaudit di dunia. Episode ini mengajarkan konfigurasi sshd_config yang modern, kunci ed25519, pembatasan akses, mitigasi brute force dengan pf, dan tunneling.

Mengapa OpenSSH

OpenSSH dikembangkan di dalam proyek OpenBSD dan menjadi standar SSH di hampir semua sistem operasi modern. Karena dikembangkan bersama, integrasinya dengan OpenBSD tidak ada tandingannya — dan kalian mendapat versi terbaru tepat saat rilis. Semua yang kalian pelajari di sini berlaku di mana pun OpenSSH dipakai.

Membuat Kunci ed25519

Autentikasi kunci jauh lebih kuat daripada password. ed25519 adalah algoritma modern yang cepat dan aman. Buat pasangan kunci di mesin klien kalian:

Membuat kunci ed25519
ssh-keygen -t ed25519 -a 200
ssh-keygen -t ed25519 -a 200 -f ~/.ssh/deploy_ed25519

-a 200 menambah iterasi KDF untuk melindungi kunci kalian. Default ~/.ssh/id_ed25519 dan id_ed25519.pub akan dipakai sebagian besar perintah. Salin kunci publik ke server:

Menyalin kunci ke server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@obsd1

ssh-copy-id menempatkan kunci ke ~/.ssh/authorized_keys di server. Sekali kunci aktif, kalian bisa mematikan login password.

Konfigurasi sshd_config yang Modern

File konfigurasi sshd berada di /etc/ssh/sshd_config. Versi yang disarankan untuk produksi:

/etc/ssh/sshd_config - hardening
Port 22
AddressFamily inet
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
LoginGraceTime 30
MaxAuthTries 3
AllowUsers arman deploy
AllowGroups wheel
Protocol 2
  • PermitRootLogin no — tidak ada login root langsung.
  • PasswordAuthentication no — hanya kunci publik.
  • AuthenticationMethods publickey — tegas: hanya publickey.
  • LoginGraceTime 30 — waktu login terbatas 30 detik.
  • AllowUsers dan AllowGroups — whitelist akun yang boleh login.

Setelah mengubah, validasi dan reload:

Memvalidasi dan reload sshd
sshd -t
rcctl reload sshd

sshd -t memeriksa syntax. rcctl reload sshd memuat ulang tanpa memutus koneksi yang ada.

Danger

Sebelum mematikan login password, pastikan kunci kalian sudah teruji: buka terminal kedua dan login dengan kunci, lalu baru ubah konfigurasi. Satu koneksi SSH yang tidak sengaja terputus setelah PasswordAuthentication no bisa membuat kalian terkunci dari server.

Mitigasi Brute Force dengan pf

SSH yang terbuka ke internet akan menerima percobaan brute force terus-menerus. Daripada paket tambahan, OpenBSD punya solusi bawaan: gabungkan logging sshd dengan pf table. Pertama, log percobaan login gagal:

Melihat percobaan login gagal
tail -f /var/log/authlog
grep "Failed password" /var/log/authlog

Lalu otomatiskan penambahan ke pf table. Skema sederhananya memakai pfctl -t bruteforce -T add untuk alamat yang gagal login, dipicu oleh log. Karena pf di episode 13 sudah membuka table <bruteforce> persist dan aturan block quick from <bruteforce>, kalian tinggal mengisinya.

Untuk kemudahan, package fail2ban tersedia dan sudah berintegrasi dengan pf:

Menginstal fail2ban
pkg_add fail2ban
rcctl enable fail2ban
rcctl start fail2ban

Fail2ban membaca log sshd dan menambahkan alamat pelanggar ke pf table secara otomatis. Pilihannya: pakai mekanisme pf table manual untuk kendali penuh, atau fail2ban untuk otomasi instan.

Restart sshd dengan Aman

Ada satu perbedaan penting: rcctl restart sshd akan memutus koneksi SSH kalian sendiri. Karena itu, gunakan reload untuk konfigurasi, bukan restart:

Reload sshd tanpa putus
sshd -t && rcctl reload sshd

Jika benar-benar perlu restart (misalnya mendebag), lakukan dengan jadwal yang aman atau melalui sesi tmux yang persisten — salah satu alasan tmux selalu tersedia di base system.

Tunneling dan Port Forwarding SSH

SSH bukan hanya untuk login — ia juga terowongan aman. Dua pola yang paling berguna:

Tunneling SSH
ssh -L 8080:localhost:80 user@obsd1
ssh -D 1080 user@obsd1
  • -L 8080:localhost:80: memetakan port 8080 lokal ke port 80 di server — berguna untuk mengakses layanan internal dengan aman.
  • -D 1080: SOCKS proxy — seluruh trafik browser lewat server.

Untuk koneksi yang lama, gunakan opsi tambahan:

Tunneling yang tahan lama
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@obsd1

ServerAliveInterval menjaga koneksi tetap hidup dan mendeteksi kegagalan lebih cepat.

Memeriksa Kesehatan SSH

Verifikasi bahwa konfigurasi kalian bekerja dan melihat percobaan serangan:

Memeriksa status dan log SSH
rcctl status sshd
grep "Failed password" /var/log/authlog | tail
ssh -i ~/.ssh/id_ed25519 arman@obsd1

Log /var/log/authlog adalah sumber kebenaran: login yang berhasil dan gagal tercatat di sana. Rutin memeriksanya adalah kebiasaan yang baik.

Penutup

Di episode 14 ini kalian mengamankan akses jauh OpenBSD: mengenal OpenSSH, membuat kunci ed25519, meng-hardening sshd_config dengan mematikan root dan password, membatasi user, meredam brute force dengan pf table dan fail2ban, serta memanfaatkan tunneling dan port forwarding.

Inti yang harus dibawa pulang:

  • Kunci ed25519 menggantikan password; selalu PermitRootLogin no dan PasswordAuthentication no.
  • sshd -t lalu rcctl reload sshd — reload, bukan restart, untuk menghindari putus koneksi.
  • pf table adalah alat anti brute force bawaan; fail2ban adalah otomasi opsional.
  • SSH adalah terowongan: -L untuk port forward, -D untuk SOCKS.

Di episode 15 selanjutnya, kita masuk ke bagian paling khas OpenBSD: security architecture dengan pledge dan unveil — sistem sandboxing syscall di userland, contoh penerapan di base tools, serta fitur pendukung seperti W^X, KARL, dan sysctl keamanan.

Belajar OpenBSD - OpenSSH & Hardening | Belajar OpenBSD