Ikhtisar
SSH (Secure Shell) adalah protokol jaringan standar yang sangat penting untuk mengelola server Linux jarak jauh. Pada artikel ini, kita akan mempelajari langkah demi langkah mulai dari membangun server OpenSSH di lingkungan Ubuntu, autentikasi kunci publik tanpa kata sandi, SSH port forwarding untuk kebutuhan jaringan praktis, hingga tips penting penguatan keamanan server.
1. Instalasi Server OpenSSH dan Mengaktifkan Layanan
Untuk menyediakan layanan akses jarak jauh pada sistem Ubuntu, perbarui daftar paket terbaru dan instal paket openssh-server.

Jalankan perintah systemctl enable --now ssh untuk mengaktifkan layanan SSH agar otomatis berjalan saat booting serta langsung menjalankannya saat ini juga.

Periksa apakah daemon layanan SSH (sshd) saat ini beroperasi dengan normal dalam status aktif (active (running)).

Jalankan perintah ss -tulpn | grep :22 untuk memastikan port default SSH, yaitu port 22, berada dalam status mendengarkan (LISTEN) dan siap menerima koneksi jaringan.

2. Membuat dan Mendaftarkan Pasangan Kunci SSH untuk Akses Tanpa Kata Sandi
Buat direktori ~/.ssh untuk menyimpan file kunci SSH secara aman dan atur izin aksesnya ke 700 agar hanya pemilik yang dapat mengaksesnya.

Jalankan perintah test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 untuk membuat pasangan kunci baru berbasis algoritma Ed25519 yang memiliki keamanan dan performa tinggi jika belum tersedia.
Dari hasil eksekusi perintah, Anda dapat mengonfirmasi bahwa kunci privat (id_ed25519) dan kunci publik (id_ed25519.pub) telah berhasil dibuat.

Tambahkan isi kunci publik yang telah dibuat ke dalam file daftar izin autentikasi, yaitu ~/.ssh/authorized_keys.

Batasi izin file authorized_keys ke 600 guna menjaga keamanan file daftar kunci autentikasi dan memenuhi pemeriksaan izin ketat oleh daemon SSH.

Tentukan kunci privat Ed25519 yang telah dibuat untuk mencoba koneksi ke alamat loopback lokal (127.0.0.1) dan verifikasi apakah autentikasi berbasis kunci berfungsi dengan baik.
Hasil eksekusi perintah menampilkan pesan keberhasilan koneksi autentikasi kunci lokal tanpa perlu memasukkan kata sandi.

3. Tunneling Jaringan Praktis: Latihan SSH Port Forwarding
Perbarui daftar paket terbaru dan instal paket curl serta python3 untuk menjalankan server web dan melakukan pengujian permintaan HTTP.

Jalankan perintah mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html untuk membuat direktori dokumen web yang akan digunakan dalam pengujian port forwarding serta membuat file HTML uji coba.

Jalankan perintah python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 & untuk menjalankan server web sederhana di latar belakang pada port 8080 yang bertindak sebagai layanan internal.

Jalankan local port forwarding di latar belakang untuk meneruskan permintaan yang masuk ke port lokal 9090 menuju port 8080 pada server tujuan melalui tunnel aman SSH.
Setelah perintah dijalankan, tunnel port forwarding dibuat secara aman di latar belakang tanpa membebani sesi terminal Anda.

Kirimkan permintaan HTTP ke port lokal 9090 yang telah diteruskan melalui tunnel SSH untuk memverifikasi apakah koneksi ke server web internal berhasil diteruskan dengan baik.
Hasil eksekusi perintah menampilkan konten respons dari server web internal 8080 yaitu <h1>SSH Tunnel Test OK</h1>, yang memastikan bahwa port forwarding bekerja dengan sempurna.

Setelah pengujian port forwarding selesai, jalankan perintah pkill -f 'http.server 8080' untuk menghentikan proses server web pengujian yang sedang berjalan di latar belakang secara aman.

4. Konfigurasi Penguatan Keamanan Server SSH Praktis (sshd_config)
Cadangkan file konfigurasi dengan perintah sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak untuk mengantisipasi kesalahan selama perubahan konfigurasi dan mempertahankan konfigurasi aslinya.

Untuk meningkatkan keamanan, ubah nilai konfigurasi dengan menjalankan perintah sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config guna memblokir sepenuhnya login jarak jauh langsung oleh akun root.

Jalankan perintah sudo sshd -t untuk memeriksa terlebih dahulu secara aman apakah ada kesalahan sintaks atau salah ketik pada file konfigurasi server SSH yang telah diubah.
Setelah menjalankan perintah, tidak ada pesan kesalahan yang muncul, mengonfirmasi bahwa sintaks konfigurasi tidak memiliki masalah.

Jalankan perintah grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료' untuk memastikan opsi pemblokiran login root (PermitRootLogin no) telah diterapkan dengan benar pada file konfigurasi.
Hasil eksekusi perintah menunjukkan bahwa PermitRootLogin no berhasil ditemukan, memastikan bahwa pengaturan keamanan telah diterapkan dengan sempurna.

Sejauh ini, kita telah membahas poin-poin penting yang dibutuhkan dalam praktik di lingkungan Ubuntu, mulai dari koneksi dasar SSH, port forwarding, hingga pengaturan keamanan esensial.
Terapkan aturan keamanan yang telah dibahas ini secara bertahap untuk membangun lingkungan manajemen server yang lebih aman dan efisien.