Ketika kamu pertama kali menyewa VPS yang terinstall OS Ubuntu 16.04, ada beberapa langkah yang harus kamu lakukan untuk meningkatkan keamanan dan penggunaan dan juga memberikan pondasi yang solid untuk kedepannya.
1. Login sebagai Root
Untuk login atau masuk ke server kamu, kamu sebelumnya harus tahu alamat IP public server yang kamu miliki. Kamu juga wajib tahu passwordnya, biasanya bisa didapatkan di panel provider tempat kamu menyewa VPS nya atau juga biasanya ada email notif yang masuk ke email kamu memberitahukan credential login yang berisi alamat ip dan juga password untuk masuk ke server. Dan default user pada server yang baru di sewa adalah root.
Silakan kamu login dengan terminal atau SSH client seperti putty, masuk dengan baris perintah seperti ini:
ssh root@ip_server_kamu
Selesaikan proses login, selanjutnya masukkan password. Jika baru pertama kali login biasanya server akan meminta kamu untuk merubah password.
Tentang Root
Root user adalah administratif user pada Linux, yang mempunyai akses super seperti super administrator pada windows. Jadi dengan root kamu bisa bebas menginstall program, service apa saja.
Memakai root pada penggunaan server sehari-hari sangatlah riskan, karena sifat root yang mempunyai hak bebas untuk mengatur server, install segala macam, hal ini sangatlah membahayakan penggunaan server. Alternatif yang lebih aman adalah dengan membuat user baru dengan akses yang serupa dengan root.
2. Buat User Baru
Ketika kamu sudah login menggunakan root, selanjutnya kita akan menyiapkan membuat user baru yang nantinya akan kita gunakan untuk login seterusnya menggunakan user tersebut, tidak lagi login menggunakan root.
Berikut contoh baris peritnah membuat user baru dengan username gegeriyadi
, silakan kamu ganti dengan username kamu sendiri ya.
adduser gegeriyadi
Selanjutnya akan muncul beberapa pertanyaan, termasuk tentang password.
Masukkan password yang kuat, dan opsi lainnya seperti informasi tambahan bisa kamu isi ataupun kamu kosongkan dengan tekan Enter.
3. Beri Hak Akses Root
Sekarang, kita punya user baru dengan hak akses tipe reguler, atau secara kasarnya adalah akun biasa
. Untuk bisa melakukan proses administratif seperti root (install/remove) selanjutnya kita akan membuat akun ini sebagai tipe superuser
, yang mempunyai privilege sama seperti root akun dengan menggunakan perintah sudo
diawal baris perintah.
Sebagai root, jalankan baris perintah berikut untuk menambahkan akun biasa yang dibuat tadi kedalam grup sudo:
usermod -aG sudo gegeriyadi
Sekarang silakan kamu coba gunakan perintah dengan perintah yang diharuskan mempunyai hak privilege contohnya sudo apt-get udpate
.
4. Tambahkan Public Key Authentication (Sangat disarankan)
Step berikutnya dalam menambah keamanan server adalah membuat Public Key Authentication untuk user baru yang tadi dibuat. Setting ini akan lebih meningkatkan keamanan server karena server akan meminta Private SSH Key untuk bisa masuk ke dalam server.
Buat Sepasang SSH Key (Public & Private Key)
Jika sebelumnya kamu belum memiliki sepasang SSH key, yaitu key autentikasi yang terdiri dari Public dan Private Key, kamu harus membuatnya. Jika kamu sudah punya sebelumnya kamu bisa skip langkah ini dan langsung ke bagian berikutnya yaitu Menyalin Public Key
.
Gunakan baris perintah berikut untuk membuat sepasang SSH key pada local machine (komputer) kamu:
ssh-keygen
Asumsikan local user di komputer kamu adalah localuser
maka kamu akan melihat output dari hasil generate pada baris perintah diatas seperti ini:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
Tekan enter untuk menyetujui nama file dan lokasi file berada (atau kamu bisa sesuaikan dengan nama dan lokasi yang kamu inginkan, saran saya sih biarkan default seperti itu).
Selanjutnya kamu akan dimintai masukkan password untuk mengamankan key kamu, kamu bisa mengisinya bisa juga membiarkannya tanpa password.
Baris perintah tadi akan menghasilkan 2 file, file pertama adalah private key yang dafultnya bernama id_rsa
dan file kedua adalah public key id_rsa.pub
. Kedua file tersebut berada pada folder bernama .ssh
di lokasi user home berada, defaultnya di /c/users/localusername/.ssh
.
Menyalin Public Key ke Server
Langkah berikutnya, kamu perlu menyalin Public Key yang telah di generate tadi ke server untuk keperluan login. Caranya ketik kan baris perintah berikut:
ssh-copy-id gegeriyadi@ip_server_kamu
Setelah dimintai password user dan kamu berhasil login, artinya kamu berhasil menghubungkan local computer kamu dengan server, yang untuk selanjutnya kamu login nanti tidak perlu lagi menggunakan password.
5. Me-nonaktifkan Autentifikasi Password (Sangat di Sarankan)
Sebelumnya kamu login via SSH menggunakan password, setelah membuat SSH key dan menghubungkan nya ke server sekarang kamu tidak perlu lagi login menggunakan password, hal ini tentu akan meningkatkan keamanan server karena orang orang yang tidak berkepentingan yang tidak memiliki SSH key tidak akan bisa masuk ke dalam server.
Untuk menonaktifkan autentifikasi password, kamu perlu mengedit konfigurasi sshd_config
bisa kamu lakukan dengan baris perintah berikut, pertama kita buka file config-nya dahulu dengan nano editor. Kamu bisa melakukan ini dengan root atau user yang baru dibuat tadi.
sudo nano /etc/ssh/sshd_config
Cari baris kode yang berkaitan dengan PasswordAuthentication
, dan ubah nilai nya menjadi no
.
PasswordAuthentication no
Lalu ketik perintah berikut untuk me-reload SSH Daemon:
sudo systemctl reload sshd
Jika sudah, kamu bisa melakukan test login, coba logout terlebih dahulu dengan perintah exit
. Lalu login dengan ssh gegeriyadi@ip_server_kamu
. Dan ya, kamu sudah tidak perlu lagi login dengan password.
6. Disable Root Login
Akun root adalah akun yang utama di sistem operasi linux. Akun ini memiliki akses ke semua perintah dan file di sistem dengan kuasa baca, tulis dan eksekusi penuh.
Karena akun root ini mempunyai power yang absolut, setiap tidakan yang dilakukannya sangatlah penting pada sistem. Dalam hal ini, setiap kesalahan yang dilakukan melalui akun root sangat memungkinkan memiliki impact yang besar pada operasi suatu sistem.
Selain itu, akun ini juga dapat disalahgunakan dengan menggunakannya secara tidak benar, dan juga untuk menghindari hal bodoh yang terjadi meskipun tidak sengaja, untuk itu disarankan untuk melakukan disable terhadap root login ini.
Caranya kamu hanya perlu melakukan setting di sshd_config
, buka dengan mengetikkan berikut
sudo nano /etc/ssh/sshd_config
Lalu cari PermitRootLogin
dan ubah nilai nya dari yes
ke no
PermitRootLogin no
Save dengan menekan tombol Ctrl
dan x
secara bersamaan, lalu enter.
7. Setting Basic Firewall
Pada Ubuntu 16.04 server bisa gunakan UFW firewall untuk memastikan hanya koneksi berkepentingan yang bisa menjalankan service yang diijinkan.
Beberapa aplikasi biasanya secara otomatis meregistrasi profile nya ke UFW ketika instalasi. UFW mengelola aplikasi berdasar nama. OpenSSH, service yang mengijinkan kita terhubung ke server juga sudah teregister ke UFW.
Kamu bisa melihat list app yang tersedia di ufw dengan mengetik berikut:
sudo ufw app list
Outputnya
Available applications:
OpenSSH
Untuk memastikan firewall mengijinkan koneksi SSH untuk login berikutnya. Kita bisa mengijinkan koneksi nya dengan perintah:
sudo ufw allow OpenSSH
Selanjutnya kita aktifkan firewall dengan perintah berikut:
sudo ufw enable
Ketik y
dan enter. Kamu bisa melihat koneksi SSH diijinkan di firewall dengan mengetik:
sudo ufw status
Outputnya:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Selanjutnya jika kamu install service tambahan lainnya, kamu harus menambahkannya ke setting firewall untuk mengijinkan koneksinya.
Setelah semuanya kamu lakukan, kamu punya pondasi yang solid untuk server kamu. Kamu bisa install software apapun di server kamu sekarang.
Next
Selanjutnya kamu bisa baca tutorial berikutnya Install LEMP (Nginx, MySQL, PHP) Stack di Ubuntu, dimana LEMP Stack ini akan kita butuhkan nantinya sebagai engine untuk menjalankan web WordPress maupun PHP Framework seperti Laravel di server Ubuntu.
Referensi:
About The Author
Gege Riyadi
Founder Gegeriyadi.com, layanan yang sudah 10 tahun bergerak di bidang Web Development Services yang juga intens update seputar SEO dan juga Web Optimization... [Read full bio]