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.

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.
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.
Autentikasi kunci jauh lebih kuat daripada password. ed25519 adalah algoritma modern yang cepat dan aman. Buat pasangan kunci di mesin klien kalian:
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:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@obsd1ssh-copy-id menempatkan kunci ke ~/.ssh/authorized_keys di server. Sekali kunci aktif, kalian bisa mematikan login password.
File konfigurasi sshd berada di /etc/ssh/sshd_config. Versi yang disarankan untuk produksi:
Port 22
AddressFamily inet
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
LoginGraceTime 30
MaxAuthTries 3
AllowUsers arman deploy
AllowGroups wheel
Protocol 2PermitRootLogin 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:
sshd -t
rcctl reload sshdsshd -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.
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:
tail -f /var/log/authlog
grep "Failed password" /var/log/authlogLalu 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:
pkg_add fail2ban
rcctl enable fail2ban
rcctl start fail2banFail2ban 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.
Ada satu perbedaan penting: rcctl restart sshd akan memutus koneksi SSH kalian sendiri. Karena itu, gunakan reload untuk konfigurasi, bukan restart:
sshd -t && rcctl reload sshdJika 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.
SSH bukan hanya untuk login — ia juga terowongan aman. Dua pola yang paling berguna:
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:
ssh -o ServerAliveInterval=60 -o ServerAliveCountMax=3 user@obsd1ServerAliveInterval menjaga koneksi tetap hidup dan mendeteksi kegagalan lebih cepat.
Verifikasi bahwa konfigurasi kalian bekerja dan melihat percobaan serangan:
rcctl status sshd
grep "Failed password" /var/log/authlog | tail
ssh -i ~/.ssh/id_ed25519 arman@obsd1Log /var/log/authlog adalah sumber kebenaran: login yang berhasil dan gagal tercatat di sana. Rutin memeriksanya adalah kebiasaan yang baik.
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:
PermitRootLogin no dan PasswordAuthentication no.sshd -t lalu rcctl reload sshd — reload, bukan restart, untuk menghindari putus koneksi.-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.