Mengamankan akses remote NetBSD: konfigurasi sshd_config dengan key ed25519, menonaktifkan root dan password login, tunneling SSH, serta perlindungan brute force dengan fail2ban.

Di episode 12 sebelumnya kita telah membangun firewall npf yang menjaga pintu jaringan. Namun satu pintu tetap harus terbuka jika kita ingin mengelola server dari jauh: SSH. Pada episode ini kita akan mengamankan SSH dan remote access di NetBSD — menyesuaikan sshd_config untuk key ed25519, menonaktifkan login root dan password, memanfaatkan tunneling, serta melindungi dari serangan brute force dengan fail2ban.
Setelah instalasi NetBSD, OpenSSH sudah terpasang di base system dan sshd diaktifkan. Dari episode 6 kita tahu bagaimana cara mengaktifkannya:
sshd=YESMulai service jika belum berjalan:
service sshd startservice sshd status
sshd is running as pid 1234.Sekarang mari kita kunci gerbangnya.
Autentikasi berbasis key jauh lebih aman daripada password — dan ed25519 adalah jenis key modern yang aman dan cepat. Di sisi klien (mesin kalian), buat pasangan key:
ssh-keygen -t ed25519 -C "arman@nbsd11"Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/arman/.ssh/id_ed25519):Key publik (id_ed25519.pub) itulah yang akan didaftarkan di server. Salin ke server NetBSD:
ssh-copy-id arman@192.168.1.50/usr/bin/ssh-copy-id: INFO: Number of key(s) added: 1Jika ssh-copy-id tidak tersedia, tambahkan secara manual:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ssh-ed25519 AAAA... arman@nbsd11" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keysUji login dengan key:
ssh arman@192.168.1.50Enter passphrase for key '/home/arman/.ssh/id_ed25519':
NetBSD/nbsd11 (console) login: Warning
Pastikan login berbasis key berhasil sebelum menonaktifkan password. Jika key gagal, kalian bisa terkunci di luar server sendiri. Uji dulu dari sesi terpisah sebelum mengubah konfigurasi.
Konfigurasi utama OpenSSH ada di /etc/ssh/sshd_config. Mari amankan baris per baris:
PermitRootLogin noPasswordAuthentication noAllowUsers arman devopsMaxAuthTries 3
LoginGraceTime 30UseDNS noUseDNS no menghindari penundaan login ketika server mencoba resolusi DNS balik — kombinasi dengan firewall, ini membuat koneksi terasa jauh lebih cepat.
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers arman devops
MaxAuthTries 3
LoginGraceTime 30
UseDNS noSetelah mengubah, terapkan konfigurasi:
sshd -t
service sshd restartsshd -t (no output berarti valid)Selalu uji dengan sshd -t sebelum reload — satu typo bisa mengunci kalian.
SSH bukan hanya untuk login; ia juga bisa membuat tunnel terenkripsi. Ini sangat berguna untuk mengakses layanan internal dengan aman.
Meneruskan port lokal ke layanan di dalam jaringan server:
ssh -L 8080:localhost:80 arman@192.168.1.50# Buka browser di mesin lokal ke http://localhost:8080
# lalu akses diarahkan ke port 80 di server remoteMembuat proxy SOCKS lokal yang merutekan semua traffic lewat server:
ssh -D 1080 arman@192.168.1.50# Set browser/proxy ke socks5://localhost:1080
# Traffic terenkripsi sampai serverMeski password dimatikan, tetap ada kemungkinan serangan terhadap layanan lain yang memakai password. fail2ban memindai log dan memblokir alamat IP yang terlalu sering gagal. Install dari pkgsrc:
cd /usr/pkgsrc/security/py-fail2ban
make install cleanKonfigurasi jail dasar untuk sshd ada di /usr/pkg/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/authlog
maxretry = 5
bantime = 3600Aktifkan dan mulai service:
echo 'fail2ban=YES' >> /etc/rc.conf
service fail2ban startfail2ban-client status sshdDengan maxretry 5, IP yang gagal 5 kali login akan di-ban 1 jam. fail2ban bisa diintegrasikan dengan npf untuk memblokir di level firewall.
| Aturan | Alasan |
|---|---|
| Key ed25519 saja, tanpa password | Password bisa ditebak/dicuri |
| Root tidak boleh login SSH | Paksa login sebagai user, lalu doas/sudo |
Batasi dengan AllowUsers | Prinsip least privilege |
| Gunakan port default atau custom | Custom port tidak menambah keamanan, tetapi mengurangi noise |
Maksimalkan MaxAuthTries rendah | Perlambat brute force |
| fail2ban aktif | Blokir IP yang menyerang |
Pada episode 13 ini, kalian telah mengamankan akses remote NetBSD: membuat key ed25519, menyesuaikan sshd_config untuk menonaktifkan root dan password, memanfaatkan tunneling SSH, serta melindungi server dari brute force dengan fail2ban.
Inti yang harus dibawa pulang:
sshd_config: PermitRootLogin no, PasswordAuthentication no, AllowUsers, MaxAuthTries, dan UseDNS no.sshd -t sebelum reload.-L/-D) untuk akses layanan internal dengan aman.Di episode 14 selanjutnya kita akan mengamankan komunikasi terenkripsi: TLS, OpenSSL, dan sertifikat — membuat key dan CSR, sertifikat self-signed, mengelola trust dengan ca-certificates, serta otomasi sertifikat Let's Encrypt. Sampai jumpa di episode 14!