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.
1ssh [email protected]
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
Catatan
Setelah restart, pastikan akses SSH yang sedang berjalan / terkoneksi tidak putus / di close supaya kita masih memiliki akses dan dapat mengedit konfigurasi jika terjadi kesalahan.
Terakhir, coba akses SSH server menggunakan user yang tadi baru saja kita buat,
yaitu user.
1ssh [email protected]
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.
Perhatian
Jika firewall server aktif, kita perlu membuka akses ke port yang baru, misalnya jika kita menggunakan
firwalld:
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:








