Episode ini membahas pengamanan dan pemanfaatan SSH di Rocky Linux: konfigurasi sshd yang aman, otentikasi kunci ed25519, tunneling SSH, serta hardening dengan fail2ban dan pembatasan user dan percobaan login.

Di episode 14 sebelumnya kalian sudah mengamankan sistem dari dalam dengan SELinux. Tapi ada satu pintu yang hampir selalu terbuka ke server: SSH. Bagi penyerang, SSH adalah jalan masuk paling diserang — ribuan percobaan login bot per hari bukanlah hal aneh. Melindungi SSH adalah salah satu langkah hardening dengan dampak terbesar.
Episode ini dibagi dua: memanfaatkan SSH secara penuh (kunci, agen, tunneling) dan mengamankannya (konfigurasi sshd modern, fail2ban, pembatasan). Keduanya berjalan bersama — SSH yang nyaman dan aman adalah fondasi administrasi server jarak jauh.
Konfigurasi daemon SSH berada di /etc/ssh/sshd_config. Sebelum mengubah apa pun, selalu backup:
cat /etc/ssh/sshd_configsshd -tsshd -t memeriksa sintaks konfigurasi — wajib dijalankan sebelum restart untuk menghindari mengunci diri.
Praktik terbaik nomor satu: nonaktifkan login password, gunakan kunci. Server yang tidak menerima password kebal terhadap serangan brute force password:
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordsystemctl restart sshdPasswordAuthentication no menutup jalur password. PermitRootLogin prohibit-password melarang login root dengan password tetapi tetap mengizinkan login root dengan kunci — keseimbangan yang banyak dipakai.
Warning
Ubah pengaturan ini hanya setelah kunci publik kalian terbukti bekerja. Aturannya: uji login kunci dari terminal baru terlebih dahulu, baru restart sshd dengan PasswordAuthentication no. Jangan pernah mematikan akses sebelum jalur alternatif terverifikasi.
ed25519 adalah algoritma kunci modern yang cepat, aman, dan ukuran kuncinya kecil — pilihan default yang direkomendasikan:
ssh-keygen -t ed25519 -a 100 -C "arman@laptop"ssh-copy-id -i ~/.ssh/id_ed25519.pub arman@192.168.1.100ssh arman@192.168.1.100-a 100 menambah iterasi KDF untuk memperkuat proteksi passphrase kunci. Setelah ssh-copy-id, kunci publik terpasang di ~/.ssh/authorized_keys di server.
Untuk server dengan banyak kelompok pengguna, gunakan Match blocks — aturan berbeda untuk user atau grup yang berbeda:
Match group developers
PasswordAuthentication no
Match user backup-bot
AllowTcpForwarding no
ForceCommand /usr/local/bin/backup.shBlok Match memberi fleksibilitas: grup developer dilarang pakai password, sementara akun khusus dibatasi perintahnya. ForceCommand mengunci akun hanya menjalankan perintah tertentu.
Menggunakan kunci dengan passphrase setiap login itu menyebalkan. ssh-agent menyimpan kunci terdekripsi di memory:
eval "$(ssh-agent)"
ssh-add ~/.ssh/id_ed25519ssh-add -lSetelah di-add, kunci dipakai otomatis tanpa mengetik passphrase berulang kali selama sesi berjalan.
Tiga cara mentransfer file via SSH:
scp backup.tar.gz arman@192.168.1.100:/tmp/rsync -avz ./app/ arman@192.168.1.100:/opt/app/sftp arman@192.168.1.100rsync -avz adalah pilihan utama untuk sinkronisasi — ia hanya mentransfer file yang berubah dan mendukung kompresi. sftp memberikan sesi transfer interaktif yang lebih aman daripada FTP telanjang.
SSH tunnel mengirim traffic aplikasi melalui koneksi SSH terenkripsi — sangat berguna untuk akses aman ke layanan internal:
ssh -L 8080:localhost:80 arman@192.168.1.100ssh -R 9090:localhost:9090 arman@192.168.1.100ssh -J arman@bastion.example.com arman@10.0.1.20-L meneruskan port lokal ke layanan di sisi server — cara aman mengakses panel admin yang hanya mendengarkan di localhost. -J menembus bastion host untuk menjangkau server yang tidak punya IP publik.
fail2ban memantau log login dan memblokir IP yang gagal berulang kali:
dnf5 install fail2ban
systemctl enable --now fail2bancat > /etc/fail2ban/jail.local <<'EOF'
[sshd]
enabled = true
maxretry = 5
bantime = 3600
EOFfail2ban-client status sshdfail2ban memblokir IP melalui firewalld dari episode 13 — ketika IP melebihi maxretry, ia masuk ke zona blokir untuk bantime detik.
Pengaturan lain yang sangat efektif:
MaxAuthTries 3
AllowUsers arman jokogrep "Failed password" /var/log/secureMaxAuthTries 3 membatasi percobaan password per koneksi. AllowUsers membatasi siapa yang boleh login sama sekali — prinsip least privilege dari episode 6 diterapkan pada pintu masuk.
Untuk lapisan ekstra (opsional), port knocking menyembunyikan SSH sepenuhnya: port hanya terbuka setelah serangkaian koneksi ke port tertentu dalam urutan yang benar. Ini menyembunyikan keberadaan SSH dari pemindai biasa, tetapi menambah kompleksitas operasional dan bukan pengganti password yang kuat atau kunci.
Di episode 15 ini kalian sudah menguasai SSH di Rocky Linux: konfigurasi sshd modern dengan otentikasi kunci dan pemblokiran password, kunci ed25519 dengan ssh-keygen dan ssh-copy-id, ssh-agent, transfer file dengan scp, rsync, dan sftp, tunneling dengan -L, -R, dan -J, serta hardening dengan fail2ban, MaxAuthTries, dan AllowUsers.
Inti yang harus dibawa pulang:
sshd -t sebelum restart konfigurasi — jangan mengunci diri sendiri.Di episode 16 selanjutnya kita akan membahas TLS, certificates, dan PKI — OpenSSL untuk membuat kunci, CSR, dan sertifikat, trust store dengan update-ca-trust, sertifikat self-signed vs Let's Encrypt, serta konsep CRL dan OCSP. Pintu sudah terkunci; sekarang giliran memasang gembok yang bisa dipercaya!