Mengamankan jalur akses utama server: konfigurasi sshd modern dengan kunci ed25519, menonaktifkan login root dan password, aturan kondisional Match, port forwarding dan tunneling, ditambah hardening dengan Fail2ban, AllowUsers, dan MaxAuthTries.

Di episode 13 sebelumnya kita mengamankan sistem dari dalam dengan SELinux. Sekarang kita mengamankan pintu depan: SSH. Bagi sebagian besar server AlmaLinux, SSH adalah satu-satunya jalur akses — dan karena itu target utama serangan brute-force di internet. Server yang baru dipasang dan langsung terpapar internet bisa menerima ribuan percobaan login dalam sehari.
Episode ini memandu kalian dari konfigurasi dasar yang aman hingga hardening tingkat lanjut: kunci ed25519, menonaktifkan password, aturan kondisional, tunneling, dan Fail2ban.
Konfigurasi SSH berada di /etc/ssh/sshd_config — file yang wajib diedit dengan hati-hati, karena kesalahan syntax bisa mengunci kalian dari server sendiri.
Warning
Sebelum menutup sesi, selalu uji konfigurasi dengan sudo sshd -t dan jangan putus sesi SSH lama sampai koneksi baru berhasil. Pola paling aman: ubah konfigurasi, uji syntax, restart sshd di satu terminal, dan uji login di terminal lain.
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
MaxAuthTries 3
AllowUsers devops ansible
Protocol 2Setiap baris punya alasan:
PermitRootLogin no — menutup pintu login root langsung; admin masuk lewat user biasa lalu sudo.PasswordAuthentication no — hanya menerima autentikasi kunci publik; menghilangkan serangan brute-force password.MaxAuthTries 3 — membatasi percobaan autentikasi per koneksi.AllowUsers — whitelist user yang boleh login; semua yang lain ditolak.Verifikasi konfigurasi sebelum restart:
sudo sshd -t
sudo systemctl restart sshdAutentikasi kunci adalah fondasi SSH modern. ed25519 adalah algoritma kunci publik terbaru — lebih cepat dan lebih aman daripada RSA untuk penggunaan umum.
ssh-keygen -t ed25519 -a 100Flag -a 100 memperkuat KDF (Key Derivation Function) — lebih tahan terhadap brute-force password kunci. Output menunjukkan file kunci pribadi (~/.ssh/id_ed25519) dan publik (~/.ssh/id_ed25519.pub).
ssh-copy-id -i ~/.ssh/id_ed25519.pub devops@serverssh-copy-id menambahkan kunci publik ke ~/.ssh/authorized_keys di server tujuan. Setelah ini berhasil, login tanpa password berfungsi — dan kalian bisa mematikan PasswordAuthentication.
ssh devops@serverJika login langsung sukses tanpa meminta password, konfigurasi kunci sudah benar dan aman untuk mematikan autentikasi password.
Match memungkinkan aturan berbeda untuk user, group, atau alamat tertentu — inti dari kebijakan akses granular:
Match User backup
PasswordAuthentication yes
AllowTcpForwarding no
Match Group developers
MaxSessions 5User backup diizinkan login dengan password (karena scripting butuh itu) tetapi tidak boleh forward port; group developers dibatasi maksimal 5 sesi paralel. Match harus berada di akhir file, dan semua baris setelahnya berlaku untuk kondisi tersebut.
SSH bukan hanya login — ia juga media transfer data terenkripsi.
Mengakses service di server dari mesin lokal seolah-olah berjalan di mesin lokal:
ssh -L 8080:localhost:80 devops@serverSetelah ini, membuka http://localhost:8080 di mesin lokal akan mencapai port 80 di server melalui tunnel SSH terenkripsi — tanpa membuka port 80 di firewall publik.
Proxy SOCKS di mesin lokal yang meneruskan trafik melalui server:
ssh -D 1080 devops@serverFail2ban memantau log login yang gagal dan secara otomatis memblokir alamat IP yang mencurigakan:
sudo dnf5 install -y fail2ban
sudo systemctl enable --now fail2ban[sshd]
enabled = true
maxretry = 5
bantime = 3600
findtime = 600Pengaturan ini memblokir IP selama 1 jam setelah 5 percobaan gagal dalam 10 menit. Verifikasi status:
sudo fail2ban-client status sshd/etc/ssh/sshd_config juga bisa memaksa kebijakan kunci tertentu. Pastikan tidak ada opsi yang membahayakan pada kunci di authorized_keys — dan batasi hanya kunci ed25519 yang diizinkan:
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedAlgorithms ssh-ed25519Info
Kombinasi PasswordAuthentication no + Fail2ban adalah pertahanan berlapis: Fail2ban menangani percobaan kasar yang menolak, sementara menonaktifkan password menghilangkan vektor serangan utama sejak awal. Aktifkan keduanya untuk server yang terpapar internet.
PasswordAuthentication sebelum kunci terpasang. Pastikan ssh-copy-id berhasil dulu.PermitRootLogin no dan biasakan sudo.Pada episode 14 ini kalian telah mengamankan jalur akses utama AlmaLinux: konfigurasi sshd modern dengan PermitRootLogin no dan PasswordAuthentication no, autentikasi kunci ed25519, aturan kondisional Match, port forwarding dan tunnel SOCKS, serta hardening dengan Fail2ban, AllowUsers, dan MaxAuthTries.
Inti yang harus dibawa pulang:
PermitRootLogin no, PasswordAuthentication no, MaxAuthTries 3, AllowUsers.ssh-keygen -t ed25519, pasang dengan ssh-copy-id.Match untuk kebijakan per-user atau per-group.ssh -L untuk local forwarding, ssh -D untuk proxy SOCKS.sshd -t dan jaga sesi cadangan saat mengubah konfigurasi.Dengan SSH yang terkunci rapat, kalian bisa memikirkan lapisan berikutnya. Di episode 15 selanjutnya, kita akan membahas TLS, Certificates & PKI — generate key dan CSR dengan OpenSSL, self-signed vs CA-signed, trust store dengan update-ca-trust, Let's Encrypt dengan certbot, dan pengenalan PKI sederhana. Sampai jumpa!