Belajar AlmaLinux - SSH Hardening & Remote Access
Episode 14 of 23

Belajar AlmaLinux - SSH Hardening & Remote Access

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.

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

Pendahuluan

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 OpenSSH Modern

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.

Baseline Konfigurasi yang Aman

Konfigurasi sshd yang direkomendasikan
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
MaxAuthTries 3
AllowUsers devops ansible
Protocol 2

Setiap 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:

Validasi dan restart sshd
sudo sshd -t
sudo systemctl restart sshd

Autentikasi dengan Kunci Ed25519

Autentikasi kunci adalah fondasi SSH modern. ed25519 adalah algoritma kunci publik terbaru — lebih cepat dan lebih aman daripada RSA untuk penggunaan umum.

Generate dan Pasang Kunci

Generate kunci ed25519
ssh-keygen -t ed25519 -a 100

Flag -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).

Salin kunci publik ke server
ssh-copy-id -i ~/.ssh/id_ed25519.pub devops@server

ssh-copy-id menambahkan kunci publik ke ~/.ssh/authorized_keys di server tujuan. Setelah ini berhasil, login tanpa password berfungsi — dan kalian bisa mematikan PasswordAuthentication.

Verifikasi Tanpa Password

Login memakai kunci
ssh devops@server

Jika login langsung sukses tanpa meminta password, konfigurasi kunci sudah benar dan aman untuk mematikan autentikasi password.

Aturan Kondisional dengan Match

Match memungkinkan aturan berbeda untuk user, group, atau alamat tertentu — inti dari kebijakan akses granular:

Aturan Match di sshd_config
Match User backup
    PasswordAuthentication yes
    AllowTcpForwarding no
 
Match Group developers
    MaxSessions 5

User 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.

Tunneling dan Port Forwarding

SSH bukan hanya login — ia juga media transfer data terenkripsi.

Local Forwarding

Mengakses service di server dari mesin lokal seolah-olah berjalan di mesin lokal:

Forward port lokal ke service di server
ssh -L 8080:localhost:80 devops@server

Setelah 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.

Dynamic Forwarding (SOCKS)

Proxy SOCKS di mesin lokal yang meneruskan trafik melalui server:

Buat proxy SOCKS via SSH
ssh -D 1080 devops@server

Hardening Tambahan

Fail2ban

Fail2ban memantau log login yang gagal dan secara otomatis memblokir alamat IP yang mencurigakan:

Install dan aktifkan Fail2ban
sudo dnf5 install -y fail2ban
sudo systemctl enable --now fail2ban
/etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 5
bantime = 3600
findtime = 600

Pengaturan ini memblokir IP selama 1 jam setelah 5 percobaan gagal dalam 10 menit. Verifikasi status:

Cek jail Fail2ban
sudo fail2ban-client status sshd

Kebijakan Kunci yang Ketat

/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:

Hanya izinkan algoritma modern
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedAlgorithms ssh-ed25519

Info

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.

Kesalahan Umum (Common Pitfalls)

  1. Menutup sesi SSH sebelum menguji konfigurasi baru. Selalu uji dari sesi terpisah — jangan pernah mengunci diri sendiri.
  2. Menonaktifkan PasswordAuthentication sebelum kunci terpasang. Pastikan ssh-copy-id berhasil dulu.
  3. Menggunakan RSA 2048. Beralih ke ed25519 yang lebih cepat dan lebih aman.
  4. Membiarkan root login. Aktifkan PermitRootLogin no dan biasakan sudo.
  5. Menonaktifkan Fail2ban karena "mengganggu". Blokir yang terasa mengganggu adalah tanda kerja Fail2ban melindungi kalian.

Penutup

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:

  • Baseline aman: PermitRootLogin no, PasswordAuthentication no, MaxAuthTries 3, AllowUsers.
  • Generate kunci dengan ssh-keygen -t ed25519, pasang dengan ssh-copy-id.
  • Gunakan Match untuk kebijakan per-user atau per-group.
  • ssh -L untuk local forwarding, ssh -D untuk proxy SOCKS.
  • Fail2ban memblokir otomatis IP yang berulang kali gagal login.
  • Selalu uji 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!

Belajar AlmaLinux - SSH Hardening & Remote Access | Belajar AlmaLinux