Belajar Rocky Linux - SSH Hardening & Remote Access
Episode 15 of 23

Belajar Rocky Linux - SSH Hardening & Remote Access

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.

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

Pendahuluan

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

Memahami sshd_config

Konfigurasi daemon SSH berada di /etc/ssh/sshd_config. Sebelum mengubah apa pun, selalu backup:

Melihat konfigurasi sshd
cat /etc/ssh/sshd_config
Memvalidasi konfigurasi
sshd -t

sshd -t memeriksa sintaks konfigurasi — wajib dijalankan sebelum restart untuk menghindari mengunci diri.

Otentikasi Berbasis Kunci

Praktik terbaik nomor satu: nonaktifkan login password, gunakan kunci. Server yang tidak menerima password kebal terhadap serangan brute force password:

Pengaturan kunci di sshd_config
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
Restart sshd
systemctl restart sshd

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

Membuat Kunci Ed25519

ed25519 adalah algoritma kunci modern yang cepat, aman, dan ukuran kuncinya kecil — pilihan default yang direkomendasikan:

Membuat kunci ed25519
ssh-keygen -t ed25519 -a 100 -C "arman@laptop"
Menyalin kunci ke server
ssh-copy-id -i ~/.ssh/id_ed25519.pub arman@192.168.1.100
Verifikasi login dengan kunci
ssh 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.

Block Match

Untuk server dengan banyak kelompok pengguna, gunakan Match blocks — aturan berbeda untuk user atau grup yang berbeda:

Aturan khusus per grup
Match group developers
    PasswordAuthentication no
 
Match user backup-bot
    AllowTcpForwarding no
    ForceCommand /usr/local/bin/backup.sh

Blok Match memberi fleksibilitas: grup developer dilarang pakai password, sementara akun khusus dibatasi perintahnya. ForceCommand mengunci akun hanya menjalankan perintah tertentu.

Alat SSH

SSH Agent

Menggunakan kunci dengan passphrase setiap login itu menyebalkan. ssh-agent menyimpan kunci terdekripsi di memory:

Menambahkan kunci ke agen
eval "$(ssh-agent)"
ssh-add ~/.ssh/id_ed25519
Melihat kunci di agen
ssh-add -l

Setelah di-add, kunci dipakai otomatis tanpa mengetik passphrase berulang kali selama sesi berjalan.

Transfer File

Tiga cara mentransfer file via SSH:

SCP untuk file sederhana
scp backup.tar.gz arman@192.168.1.100:/tmp/
Rsync untuk sinkronisasi
rsync -avz ./app/ arman@192.168.1.100:/opt/app/
SFTP untuk sesi interaktif
sftp arman@192.168.1.100

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

Tunneling

SSH tunnel mengirim traffic aplikasi melalui koneksi SSH terenkripsi — sangat berguna untuk akses aman ke layanan internal:

Port forwarding lokal
ssh -L 8080:localhost:80 arman@192.168.1.100
Port forwarding remote
ssh -R 9090:localhost:9090 arman@192.168.1.100
Jump host / proxy jump
ssh -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.

Hardening Lanjutan

Fail2ban

fail2ban memantau log login dan memblokir IP yang gagal berulang kali:

Menginstal fail2ban
dnf5 install fail2ban
systemctl enable --now fail2ban
Konfigurasi jail SSH
cat > /etc/fail2ban/jail.local <<'EOF'
[sshd]
enabled = true
maxretry = 5
bantime = 3600
EOF
Melihat status
fail2ban-client status sshd

fail2ban memblokir IP melalui firewalld dari episode 13 — ketika IP melebihi maxretry, ia masuk ke zona blokir untuk bantime detik.

Pembatasan Login

Pengaturan lain yang sangat efektif:

Pembatasan percobaan dan user
MaxAuthTries 3
AllowUsers arman joko
Melihat percobaan login dari log
grep "Failed password" /var/log/secure

MaxAuthTries 3 membatasi percobaan password per koneksi. AllowUsers membatasi siapa yang boleh login sama sekali — prinsip least privilege dari episode 6 diterapkan pada pintu masuk.

Port Knocking

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.

Penutup

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:

  • Nonaktifkan login password hanya setelah otentikasi kunci terbukti bekerja.
  • Gunakan kunci ed25519 dan passphrase, dengan ssh-agent untuk kenyamanan.
  • sshd -t sebelum restart konfigurasi — jangan mengunci diri sendiri.
  • rsync adalah pilihan transfer file; tunneling SSH mengamankan akses ke layanan internal.
  • fail2ban, MaxAuthTries, dan AllowUsers menutup serangan brute force dan membatasi siapa yang boleh masuk.

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!

Belajar Rocky Linux - SSH Hardening & Remote Access | Belajar Rocky Linux