SSH Client - Server (Security & Simplicity)

Berbagi trik untuk sedikit lebih memperketat akses SSH dengan men-disable root akses SSH, mengubah port default dan menggunakan public dan private key.

Bagi para System Administrator, sebagai pengganti Telnet penggunaan SSH pasti sudah merupakan makanan sehari-hari yang banyak digunakan untuk mengakses sistem berbasis Linux/Unix. Meskipun password yang dikirim ke server sudah dienkripsi dan tidak berbentuk plaintext lagi, installasi OpenSSH secara default dirasa kurang aman.

Kali ini saya ingin berbagi trik yang sebenarnya sudah umum, untuk sedikit lebih memperketat akses SSH. Yaitu men-disable akses SSH untuk user root, menggunakan public dan private key, sampai mengubah port default. Selain itu saya juga ingin sedikit berbagi trik agar proses memanage server(s) menjadi lebih mudah dan simple.

Kalau kamu lebih mudah mencerna informasi secara visual, kamu bisa lihat video di bawah yang juga membahas mengenai penggunaan public dan private key sampai memanfaatkan SSH config file untuk mempermudah menjalankan perintah seperti scp, sshfs, rsync, maupun sftp.

Pada diskusi kali ini dibutuhkan (atau saya menggunakan):

  • Mengerti sedikit dasar Linux CLI seperti chmod, ssh, useradd.
  • Nyaman menggunakan command-line text editor seperti vi/vim/nano, dll.
  • dan setumpuk kesabaran yang ditumis dengan rasa keingintahuan. XD

Disable Akses root Melalui SSH

Root user adalah user yang pasti ada pada sistem Unix/Unix-Like, jika kita tidak mendisable user tersebut, maka akan mempermudah pentester melakukan serangan bruteforce.

Sebelum mendisable akses root, tentu saja kita perlu membuat 1 user baru yang mempunyai hak untuk menggunakan service SSH dan masuk ke dalam list sudoers.

Pertama, akses ssh server menggunakan user root terlebih dahulu.

Kemudian, setelah masuk server SSH, buat user baru. Disini user baru yang akan saya buat adalah user, Silahkan lihat man useradd untuk lebih jelas.

1groupadd user
2useradd -s /usr/bin/bash -d /home/user -m user

Setelah itu, set password user tersebut dengan perintah passwd user.

Lalu tambahkan user user ke list sudoers. Edit file /etc/sudoers dengan menjalankan perintah sudo visudo dan tambahkan konfigurasi berikut untuk user baru tersebut:

1user     ALL=(ALL)    ALL

Kemudian edit file /etc/ssh/sshd_config dan tambah / edit konfigurasi berikut:

1PermitRootLogin no

Setelah itu restart SSH daemon dengan menjalankan perintah:

1# untuk Debian, Ubuntu dkk:
2sudo systemctl restart ssh
3# untuk distro seperti Arch:
4sudo systemctl restart sshd

Terakhir, coba akses SSH server menggunakan user yang tadi baru saja kita buat, yaitu user.

Ubah Port Default SSH (Optional)

Mengubah port default SSH (22) dapat menghindari bruteforcer ababail yg cuma ambil script dari internet karena kebanyakan script bruteforce SSH defaultnya melakukan brute ke port 22.

Untuk mengubah port, edit file /etc/ssh/sshd_config dan tambah / edit konfigurasi berikut untuk memerintahkan SSH daemon menggunakan port 1337:

1Port 1337

Setelah melakukan perubahan konfigurasi sshd_config diatas, jangan lupa untuk merestart SSH daemon.

Untuk memastikan kalau konfigurasi SSH kita sudah berjalan dengan benar, kita bisa meggunakan perintah ss -tlnp | grep 1337. Pastikan output perintah ss tersebut tidak kosong yang artinya SSH sudah berhasil listen ke port 1337.

1sudo firewall-cmd --permanent --add-port=1337/tcp
2sudo firewall-cmd --reload

Terakhir, selalu test lagi apakah server kita bisa diakses.

Gunakan Public dan Private Key

Kita bisa mengubah metode autentikasi SSH dari password ke Pulic dan Private Key. Untuk menggunakan autentikasi Public dan Private Key, kita perlu membuat SSH keypairs erlebih dahulu menggunakan perintah ssh-keygen.

1mkdir -p ~/.ssh/keys
2ssh-keygen -t ed25519 -f ~/.ssh/keys/joko -C "joko poenya"

Dari perintah diatas, maka kita akan punya SSH keypairs ~/.ssh/keys/joko dan ~/.ssh/keys/joko.pub dimana ~/.ssh/keys/joko adalah private key dan ~/.ssh/keys/joko.pub adalah public key.

Jangan lupa untuk mengubah file permission SSH private key nya menjadi 600 dengan menjalankan peritah sudo chmod 600 ~/.ssh/keys/joko.

Setelah itu, kita perlu menambahkan isi dari ~/.ssh/keys/joko.pub (public key) ke file ~/.ssh/authorized_keys di SSH server.

Setelah menambahkan isi dari ~/.ssh/keys/joko.pub ke ~/.ssh/authorized_keys di SSH server, kamu bisa mencoba metode authentikasi SSH dengan Public dan Private key menggunakan perintah SSH dengan parameter seperti berikut:

1ssh -i ~/.ssh/keys/joko -p 1337 [email protected]

Trik Konfigurasi ~/.ssh/config

Untuk para system administrator yang ngurusin banyak server yang mengharuskan tiap server memiliki akses login yang berbeda, pasti bakal susah mengingat port, password, user, dll. Belum lagi untuk inget akses aplikasi yang ada pada server2 tersebut. Maka dari itu kita bisa memanfaatkan fitur ssh config yang memungkinkan kita mengakses shell hanya dengan mengingat “kata kunci”-nya saja.

Berikut ini contoh konfigurasi SSH config untuk identitas multi server:

 1Host server-contoh
 2    Hostname 192.168.2.252
 3    User user
 4    IdentityFile ~/.ssh/keys/joko
 5
 6Host armbox1
 7    Hostname 192.168.2.253
 8    User user
 9    Port 1337
10    IdentityFile ~/.ssh/keys/joko
11
12Host github.com
13    PublicAuthentication yes
14    User git
15    IdentityFile ~/.ssh/keys/github
16
17Host *
18    User joko
19    IdentityFile ~/.ssh/keys/kerja

Dengan konfigurasi dari contoh diatas, kita bisa dengan mudah mengakses server 192.168.2.253 dengan perintah berikut:

1ssh armbox1

Mungkin sekian dulu dari saya, silahkan bagi teman2 yang ingin menambahkan atau mengkoreksi, saya akan sangat menghargai.

Referensi: