DEV Community

hairynigga77
hairynigga77

Posted on

Configuring and Securing SSH

Apa itu OpenSSH?

OpenSSH mengimplementasikan protokol Secure Shell atau SSH di sistem Red Hat Enterprise Linux. Protokol SSH memungkinkan sistem untuk berkomunikasi dengan cara yang terenkripsi dan aman melalui jaringan yang tidak aman.

Anda dapat menggunakan perintah ssh untuk membuat koneksi aman ke sistem remote, mengautentikasi sebagai pengguna tertentu, dan mendapatkan sesi shell interaktif di sistem remote sebagai pengguna tersebut. Anda juga dapat menggunakan perintah ssh untuk menjalankan perintah individu di sistem remote tanpa menjalankan shell interaktif.

Contoh Secure Shell

Perintah ssh berikut akan memasukkan Anda ke server remotehost menggunakan nama pengguna yang sama dengan pengguna lokal saat ini. Dalam contoh ini, sistem remote meminta Anda mengautentikasi dengan kata sandi pengguna tersebut.

[user01@host ~]$ ssh remotehost
user01@remotehost's password: redhat
...output omitted...
[user01@remotehost ~]$

Anda dapat menggunakan perintah exit untuk keluar dari sistem remote.

[user01@remotehost ~]$ exit
logout
Connection to remotehost closed.
[user01@host ~]$

Perintah ssh berikutnya akan memasukkan Anda ke server remotehost menggunakan nama pengguna user02. Sekali lagi, Anda akan diminta oleh sistem remote untuk mengautentikasi dengan kata sandi pengguna tersebut.

[user01@host ~]$ ssh user02@remotehost
user02@remotehost's password: shadowman
...output omitted...
[user02@remotehost ~]$

Perintah ssh ini akan menjalankan perintah hostname di sistem remotehost sebagai pengguna user02 tanpa mengakses shell interaktif remote.

[user01@host ~]$ ssh user02@remotehost hostname
user02@remotehost's password: shadowman
remotehost.lab.example.com
[user01@host ~]$

Perhatikan bahwa perintah sebelumnya menampilkan output di terminal sistem lokal.

Mengidentifikasi Pengguna Jarak Jauh

Perintah w menampilkan daftar pengguna yang sedang login ke komputer. Hal ini sangat berguna untuk menunjukkan pengguna mana yang login menggunakan ssh dari lokasi terpencil mana, dan apa yang mereka lakukan.

[user01@host ~]$ ssh user01@remotehost
user01@remotehost's password: redhat
[user01@remotehost ~]$ w
16:13:38 up 36 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user02 pts/0 172.25.250.10 16:13 7:30 0.01s 0.01s -bash
user01 pts/1 172.25.250.10 16:24 3.00s 0.01s 0.00s w
[user02@remotehost ~]$

Keluaran sebelumnya menunjukkan bahwa pengguna user02 telah masuk ke sistem pada terminal pseudo 0 pukul 16:13 hari ini dari host dengan alamat IP 172.25.250.10, dan telah tidak aktif di prompt shell selama tujuh menit dan tiga puluh detik. Keluaran sebelumnya juga menunjukkan bahwa pengguna user01 telah masuk ke sistem pada terminal pseudo 1 dan telah tidak aktif sejak tiga detik yang lalu setelah menjalankan perintah w.

Kunci host SSH

SSH mengamankan komunikasi melalui enkripsi kunci publik. Ketika klien SSH terhubung ke server SSH, server mengirimkan salinan kunci publiknya ke klien sebelum klien masuk. Ini digunakan untuk menyiapkan enkripsi aman untuk saluran komunikasi dan untuk mengautentikasi server ke klien.

Saat pengguna menggunakan perintah ssh untuk terhubung ke server SSH, perintah tersebut akan memeriksa apakah pengguna memiliki salinan kunci publik untuk server tersebut di file host lokal yang diketahui. Administrator sistem mungkin telah melakukan pra-konfigurasi di /etc/ssh/ssh_known_hosts, atau pengguna mungkin memiliki ~/.ssh/known_hostsfile di direktori home mereka yang berisi kunci tersebut.

Jika klien mempunyai salinan kunci, ssh akan membandingkan kunci dari file host yang dikenal untuk server tersebut dengan yang diterima. Jika kunci tidak cocok, klien berasumsi bahwa lalu lintas jaringan ke server dapat dibajak atau server telah disusupi, dan meminta konfirmasi pengguna apakah akan melanjutkan koneksi atau tidak.

Jika klien tidak memiliki salinan kunci publik di file host yang diketahui, perintah ssh akan menanyakan apakah Anda tetap ingin masuk. Jika Anda melakukannya, salinan kunci publik akan disimpan dalam ~/.ssh/known_hostsfile Anda sehingga identitas server dapat dikonfirmasi secara otomatis di masa mendatang.

[user01@host ~]$ ssh newhost
The authenticity of host 'remotehost (172.25.250.12)' can't be established.
ECDSA key fingerprint is SHA256:qaS0PToLrqlCO2XGklA0iY7CaP7aPKimerDoaUkv720.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'newhost,172.25.250.12' (ECDSA) to the list of known hosts.
user01@newhost's password: redhat
...output omitted...
[user01@newhost ~]$

Manajemen Kunci Known Hosts SSH

Jika kunci publik server berubah karena kunci hilang akibat kegagalan hard drive, atau diganti karena alasan yang sah, Anda perlu mengedit file known hosts untuk memastikan entri untuk kunci publik lama digantikan dengan entri dengan kunci publik baru agar dapat login tanpa kesalahan.

Kunci publik disimpan di file /etc/ssh/ssh_known_hosts dan file ~/.ssh/known_hosts untuk setiap pengguna di klien SSH. Setiap kunci berada di satu baris. Bidang pertama adalah daftar nama host dan alamat IP yang menggunakan kunci publik tersebut. Bidang kedua adalah algoritma enkripsi untuk kunci tersebut. Bidang terakhir adalah kunci itu sendiri.

[user01@host ~]$ cat ~/.ssh/known_hosts
remotehost,172.25.250.11 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOsEi0e+FlaNT6jul8Ag5Nj+RViZl0yE2w6iYUr+1fPtOIF0EaOgFZ1LXM37VFTxdgFxHS3D5WhnIfb+68zf8+w=

Setiap server SSH remote yang Anda hubungkan menyimpan kunci publiknya di direktori /etc/ssh dalam file-file dengan ekstensi .pub.

[user01@remotehost ~]$ ls /etc/ssh/*key.pub
/etc/ssh/ssh_host_ecdsa_key.pub /etc/ssh/ssh_host_ed25519_key.pub /etc/ssh/ssh_host_rsa_key.pub

Top comments (1)