Pada tutorial sebelumnya atau yang ini kita telah membuat VPS untuk WordPress dengan sistem operasi Ubuntu. Tapi VPS tersebut masih sangat dasar dan tidak aman jika langsung digunakan sebagai web server. Nah, artikel ini akan menjelaskan cara mengamankan akses login VPS hosting dengan sistem operasi Ubuntu.

Menambahkan User Pada Server VPS
Saat kita selesai membuat server VPS maka user yang terbentuk secara otomatis adalah root. User root ini memiliki hak akses tertinggi dalam server VPS sehingga SANGAT TIDAK DISARANKAN menggunakan user root setiap login ke server VPS. Jadi, kita perlu membuat user baru dengan hak akses reguler tapi bisa menggunakan hak akses root saat di butuhkan saja. Jadi kita tidak perlu menggunakan akses root setiap saat. Cara ini dipandang lebih aman. Oke, bagaimana cara membuat user baru itu?
- Pastikan kamu login VPS sebagai root. Cara login ke server VPS sudah di jelaskan di sini. Jika kamu membuat Droplet dengan SSH Key, maka cara login bisa di lihat di sini.
- Setelah login sebagai root maka ketik perintah di bawah ini
adduser nama-user-baru
kamu harus mengganti nama-user-baru dengan nama sesuai pilihanmu. Setelah menekan tombol enter, maka kamu akan diminta untuk memberikan password. JANGAN MENGGUNAKAN PASSWORD YANG SAMA DENGAN PASSWORD ROOT !
- Kamu juga akan diminta untuk memberikan detail informasi tentang user baru ini. Tapi bisa kamu abaikan dengan menekan tombol enter.
- Sekarang, kita telah punya user baru dengan hak akses regular. Selanjutnya user baru inilah yang akan selalu kita gunakan setiap akan login ke VPS. Tapi user baru ini tidak mempunyai hak akses root. Tentu akan sangat repot jika saat kita membutuhkan akses root, kita harus logout kemudian login kembali sebagai root. Nah, user baru ini perlu kita berikan akses root.
gpasswd -a nama-user-baru sudo
kamu harus mengganti nama-user-baru dengan nama sesuai pilihanmu pada langkah 2.
Membuat Key SSH dan Mengcopy ke User Baru
Jika kamu menggunakan linux
- User baru telah mempunyai akses root tapi tidak bisa login ke terminal ssh sehingga perlu kita beri akses juga ke terminal ssh agar bisa login ke server VPS lewat ssh (untuk linux) atau putty (untuk Windows). Masih sebagai root, ketikkan perintah ini di komputer lokal
ssh-keygen
maka server akan membuat key ssh seperti gambar di bawah ini
generate public key ssh tekan ENTER untuk menerima filename dan folder tempat menyimpan. Catat lokasi folder itu, karena kamu nanti akan membukanya di langkah berikutnya. Anggaplah folder itu adalah /Users/localuser/.ssh/id_rsa
Jika kamu ditanya untuk memberikan passphrase untuk lebih mengamankan key ssh, maka silahkan di isi. Di abaikan pun tidak apa-apa.
- Perintah ssh-keygen akan menghasilkan file public key bernama id_rsa.pub dan private key bernama id_rsa pada folder .ssh
- Buka file id_rsa.pub dengan text editor
nano ~/.ssh/id_rsa.pub
- Biasanya akan terdiri 1 line yang berisi key ssh. Copy semua line itu dan keluar utk kembali ke root. Letakkan kursor pada ssh-rsa dan tekan tombol secara bersama-sama yaitu Alt – 6 kemudian Ctrl – X untuk keluar dari text editor dan kembali ke root.
- Sekarang berpindah dari root ke user baru dengan mengetikkan
su - nama-user-baru
jangan lupa untuk mengganti nama-user-baru dengan nama user sebenarnya di servermu.
- Buatlah direktori .ssh dan mengatur hak akses terhadap folder itu
mkdir .ssh chmod 700 .ssh
- Buat file baru di folder .ssh dengan nama authorized_keys dengan text editor
nano .ssh/authorized_keys
- Tekan tombol Ctrl – U untuk mempaste public key. Selanjutnya tekan tombol Ctrl + X untuk keluar dari text editor. Tekan tombol Y untuk menyimpan perubahan dan tekan ENTER untuk mengkonfirmasi nama file sebagai authorized_keys
- Ganti file permission file authorized_keys dengan perintah
chmod 600 .ssh/authorized_keys
- Sekarang kamu harus menutup window terminal dengan mengetik perintah
exit
- Buka kembali terminal dan login dengan username baru (bukan root) melalui ssh atau putty. Jika kamu berhasil login ke server VPS, artinya kamu telah berhasil mengcopy public key ssh dari root ke user baru.
Jika Kamu Menggunakan Windows (Putty)
- Pastikan kamu telah Membuat SSH Key dan mengupload SSH key itu ke server Digital Ocean.
- Login ke server VPS dengan menggunakan SSH key yang telah dibuat. Secara otomatis, kamu akan login sebagai root
- Public key yang kamu upload ke server Digital Ocean di simpan di folder .ssh/authorized_keys. Tampilkan isi file authorized_keys
cat .ssh/authorized_keys
- Gunakan mouse untuk men-select hasil dari perintah di atas
Select hasil perintah cat dengan mouse Select menggunakan mouse dari ssh-rsa sampai baris terakhir pada rsa-key-xxxxxxx. Copy hasil select itu dengan cara menekan tombol Shift+click
- Buatlah user baru
adduser nama-user-baru
kamu harus mengganti nama-user-baru dengan nama user sesuai keinginanmu. Masukkan password untuk nama-user-baru.
- Berikan nama-user-baru akses terhadap root
gpasswd -a nama-user-baru sudo
Ini artinya setiap kamu login sebagai nama-user-baru dan perlu menjalankan peran sebagai root, maka ketik sudo di depan semua perintah yang akan kamu jalankan.
- Setelah kamu membuat nama-user-baru maka kamu perlu berganti dari root menjadi nama-user-baru
su - nama-user-baru
masukkan password nama-user-baru jika di minta
- Sekarang, kamu perlu berpindah ke direktori home nama-user-baru
cd ~
untuk mengecek apakah kamu sudah berpindah ke direktori home nama-user-baru ketikkan perint
pwd
hasilnya adalah /home/nama-user-baru
- Buatlah folder .ssh pada direktori home dan ganti ownership folder tersebut
mkdir .ssh
chmod 700 .ssh
- Masih sebagai nama-user-baru, buatlah file authorized_keys pada folder .ssh
nano .ssh/authorized_keys
- Paste hasil select dari pada point nomor 4 dengan cara klik kanan.
- Tekan tombol Ctrl + X kemudian tekan tombol Y untuk keluar dan menyimpan perubahan pada file authorized_keys.
- Ketik exit dan tutuplah Putty, Kemudian login kembali sebagai nama-user-baru melalui Putty
Jangan lupa untuk mengganti username pada Connection > Data dengan nama-user-baru
Mengubah Port SSH dan Permit Login VPS
Secara default port ssh ada di port 22. Ini tidak aman, karena orang bisa saja melakukan brute force jika portnya diketahui. Jadi kita harus merubah port tersebut.
- Login ke VPS kembali melalui ssh atau putty sebagai root
- Edit file sshd_config dengan perintah
nano /etc/ssh/sshd_config
- Gerakkan kursor kebawah dan cari tulisan
#Port 22
hapus tanda # kemudian ganti angka 22 dengan nomor antara nomor 1025 sampai 65536. Misalnya menjadi
Port 4444
- Selanjutnya gerakkan kembali kursor ke bawah dan cari tulisan
PermitRootLogin yes
ganti tulisan itu menjadi
PermitRootLogin no
- Jika sudah, keluarlah dari nano editor dengan menekan tombol Ctrl – X kemudian Y kemudian tekan ENTER
- Langkah selanjutnya adalah merestart ssh. Tapi sebelum melakukan restart ssh, TELITI KEMBALI langkah dari nomor 1, jangan sampai ada yang salah. Kamu jangan sampai lupa nomor port dan password user baru
- Hanya saran (boleh tidak dilakukan) kamu bisa mencoba login dengan user baru tersebut sebelum melakukan restart ssh. Karena akibatnya cukup fatal kalo ada yang salah, yaitu KAMU TIDAK BISA LOGIN. Untuk memastikan saya benar-benar bisa login ke server vps, saya terpaksa menggunakan komputer lain untuk mencoba login dengan user baru karena putty yang terinstal di komputer saya tidak bisa multi session. Karena portnya telah berubah maka perintah untuk login pun ikut berubah. Jika portnya berubah menjadi 4444 maka perintahnya menjadi
ssh -p 4444 userbaru@ip_address_server
jika kamu menggunakan windows maka masukkan port sesuai dengan nomor port yang telah kamu rubah
- Setelah kamu yakin bisa tidak ada langkah yang salah, maka saatnya kamu merestart ssh
service ssh restart
- Sekarang kamu tutup session ssh dengan mengetik
exit
- Selanjutnya login kembali ke server VPS dengan menggunakan user baru. Jangan lupa portnya telah berubah sehingga perintah login menjadi
ssh -p 4444 userbaru@ip_address_server
jika kamu menggunakan windows maka masukkan port sesuai dengan nomor port yang telah kamu rubah
Login VSP melalui Putty dengan port baru
Apa yang Sebenarnya Terjadi
Saat ini, server VPS-mu telah menjadi lebih aman dari sebelumnya. Saya mungkin perlu menjelaskan efek dari perubahan yang telah kita lakukan di atas
- Kamu sudah tidak bisa lagi login vps sebagai root. Coba aja login maka akan muncul seperti gambar dibawah
Root tidak bisa Login VPS Jika kamu masih bisa login VPS sebagai root, berarti ada yang salah. Pastikan pada file /etc/ssh/sshd_config tertulis
PermitRootLogin no
- Kamu hanya bisa login dengan menggunakan user baru pada port yang baru
- Jika kamu memerlukan akses root maka kamu harus menambahkan kata sudo untuk setiap perintah yang memerlukan akses root
sudo command_to_run
Sekarang server VPS sudah lebih aman. Tapi kamu perlu menginstal firewall agar lebih aman. Selain itu, kamu juga perlu menyesuaiakn zona waktu server. Semuanya itu bisa kamu baca di sini
Artikel yang bagus, saya ikuti tapi koq saya ga bisa diberi akses root, muncul kalimat seperti ini
gpasswd: group ‘sudo’ does not exist in /etc/group
kenapa ya..
LikeLike
harus dapat akses root dulu baru bisa menggunakan gpasswd. Minta ke admin hosting untuk mendapatkan akses root
LikeLike
Pak.. saya mau belajar server online, bisa ajarin saya? Saya obok2 ini blog gak nemu kontaknya, makanya sy komen disini. Tolong kontak saya via email ya mas
LikeLike
sudah ganti user dan root sudah tidak bisa diakses, setelah login kembali dgn menggunakan user baru untuk menginstall firewall, tapi perintah yg muncul command not found
LikeLike
itu artinya firewall memang belum di install. Jadi harus di install dulu baru bisa di pake command-nya
LikeLike
saya ikuti, sdh rubah port, tp saat buka putty dgn port yang baru, koq malah not conection yaa?
LikeLike
keren banget ini blog hahaha
tadinya puyeng krn liat attemp login di logs file
cari2 di google, sempat ubah sshd_config, tapi ga bikin user dulu
alhasil ga bisa login
untung bisa diubah di console di DO
thanks bgt nih. btw ada artikel tentang bersihin vps ga mas
soalnya banyak logs di vps . mau delete takut salah
LikeLike
Jika menggunakan Serverpilot, apakah langkah2 ini dan pengamanan selanjutnya masih diperlukan? Trims
LikeLike