Halo temen temen,pada kesempatan kali ini saya mau sharing gimana Cara Mengamankan Ubuntu Server 18.04 dari hacker

Step 1 - Gunakan Strong password / password yang aman

Gunakan password yang kuat dan panjang agar susah untuk di bruteforce atau ditebak, kriteria password yang bagus ada dibawah ini:

  • Password minimal 8 karakter atau lebih panjang lebih baik.
  • Password merupakan kombinasi dengan angka (1234567890).
  • Password merupakan kombinasi dengan simbol (~!@#$%^&*()_+}{[]|';":?><,./).
  • Jangan menggunakan password yang sama di tiap host/server/database/login web karena sekali password kamu jebol, ya wassalam semuanya bisa di akses.

Saya menyarankan menggunakan password generator di website passwordsgenerator.net

setelah mengenerate password dari site tersebut simpanlah password kamu di tempat yang aman.

Step 2 - Gunakan metode autentikasi ssh key ke host/server

Nah untuk autentikasi ke server kita akan menggunakan key yang kita generate di pc kita terlebih dahulu

NOTE: Bagi yang sudah mempunya key (biasanya ada di folder user .ssh/id_rsa.pub) kamu bisa skip bagian ini.

Untuk Linux user bisa buka terminal lalu ikuti snippet dibawah ini:

sudo ssh-keygen

/*
lalu enter-enter aja, tetapi kalau ssh key nya mau di password juga lebih bagus dan aman

ketika sudah selesai seperti gambar dibawah ini
*/

image1-1

proses di atas menghasilkan dua buah file yaitu:

  • id_rsa (private key yang digunakan untuk autentikasi)
  • id_rsa.pub (public key yang akan kita upload ke server ubuntu kita)

selanjutnya kalian bisa copy isi dari file id_rsa.pub dengan cara dibawah ini

sudo cat /root/.ssh/id_rsa.pub

image2-1

Nah kalian copy bagian yang merah saya tandai di gambar di atas ini.

Sekarang kita ke server ubuntu kita, lalu pergi ke folder ssh untuk store public key ssh yang telah kita generate tadi.

Lalu kita buat file bernama authorized_keys

// untuk membuat file authorized_keys
sudo touch authorized_keys

lalu kita edit file tersebut dengan nano

sudo nano authorized_keys

lalu kalian paste public key yang kamu copy tadi ke file tersebut, hasilnya seperti ini
image3-1

lalu kalian save dengan cara ctrl+x lalu Y

Sekarang mari kita tes apakah sudah bisa login ssh menggunakan key (jangan heran kalo nanti pas login ga perlu masukin password lagi hehe,

tetapi kalau kalian saat buat key nya dipassword in juga tetap harus masukin key)

image4-1

Selamat sudah berhasil autentikasi menggunakan key ssh.

Step 3 - Buat user non-root dengan sudo privileges

Biasanya kalau buat instance vps di misal di:

  • Digital Ocean
  • Vultr
  • UpCloud
  • Etc

Kita hanya mendapatkan user root dan root ini tidak baik untuk digunakan sehari-hari atau hanya user root yang ada di server,

karena root ini mempunyai FULL AKSES ke resource yang ada di server.

Agar lebih aman kita akan membuat user baru di server untuk kita login,
ini berguna untuk logging, aksidental delete file (karena jika menggunakan user biasa kita harus menggunakan 'sudo'), dan lain lain.

sudo adduser <namauser>

// contoh
// sudo adduser luqmanul

lalu ikuti prosesnya seperti digambar dibawah ini

image5-1

Setelah proses di user baru telah berhasil dibuat, sekarang kita akan memberikan akses sudo ke user tersebut dengan cara menambahkan user di file sudoers

sudo nano /etc/sudoers

image6-1

nah kalian tambahkan nama user kalian seperti yang saya tandai di gambar, lalu save.

sekarang user tersebut sudah mempunyai akses sudo.

jangan lupa masukkan ssh key kalian seperti tutorial di step 2, agar akses ssh nanti hanya bisa menggunakan key.

Step 4 - Disable Root login & Password login via ssh

Untuk yang satu ini pastikan kamu sudah mendaftarkan public key kamu ke server karena jika tidak,

kamu akan kehilangan akses ssh karena kita telah mendisable root login dan password login, jadi ikuti Step 2 jika belum.

Sekarang kita akan mengedit sshd_config

sudo nano /etc/ssh/sshd_config

Lalu cari PermitRootLogin, jika PermitRootLogin yes, maka kalian ganti jadi no

image7-1

lalu cari PasswordAuthentication, kalau PasswordAuthentication yes, maka ganti jadi no

image8-1

sekarang save file tersebut, dan restart service sshd dan ssh nya

sudo service sshd restart && sudo service ssh restart

Step 5 - Install Firewall

Agar mudah dan user friendly kita akan menggunakan firewall ufw, pertama kita install dulu

sudo apt install ufw

Setelah selesai, Konfigurasi yang akan kita lakukan:

  • allow port 22 (ssh)
  • allow port 80 (http)
  • allow port 443 (https)
  • allow port 3306 (Mysql) <- opsional kecuali kamu butuh untuk keperluan client mysql

sekarang ikuti snippet dibawah ini:

sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443

image9-1

Setelah selesai mengkonfigurasi firewall kita akan mengaktifkannya dengan cara

sudo ufw enable

image10-1

Sekarang kita cek apakah sudah running firewallnya

sudo ufw status verbose

image11-1

Siiip, berarti firewall sudah aktif dan berjalan dengan baik, selamat :)

Step 6 - Secure Shared Memory

Waktu lalu sempat beredar exploit untuk akses shared memory yang berakibat cukup serius,

sebab Shared memory dapat passing data antar aplikasi dan terkadang beberapa proses bisa menggunakan memory space yang sama dan disitu celah untuk exploitasi.

Untuk itu kita akan cegah dengan cara

sudo nano /etc/fstab

lalu tambahkan

none /run/shm tmpfs defaults,ro 0 0

image12-1

Step 7 - Install Fail2ban

Fail2ban berguna untuk siapapun yang berusaha mengakses server anda selama beberapakali IP yang melakukan akan otomatis di cekal oleh server (banned)

Pertama kita akan menginstallnya terlebih dahulu

sudo apt install fail2ban

Setelah installasi selesai kita akan melakukan konfigurasi fail2ban sesuai kebutuhan kita

Pertama kita buat dahulu file jail.local

sudo touch /etc/fail2ban/jail.local

Lalu kita edit file jail.local

sudo nano /etc/fail2ban/jail.local

lalu paste snippet dibawah ini

[DEFAULT]

# see action.d/ufw.conf
actionban = ufw.conf
# see action.d/ufw.conf
actionunban = ufw.conf

[sshd]
enabled = true
port = ssh
filter = sshd
# the length of time between login attempts for maxretry.
findtime = 600
# attempts from a single ip before a ban is imposed.
maxretry = 5
# the number of seconds that a host is banned for.
bantime = 3600

Keterangan:

  • port itu merupakan port yang di gunakan ssh yaitu default 22, kalau kamu ganti port ssh nya kamu bisa ganti dengan port yang kamu pakai di server kamu

  • maxretry itu maksimal percobaan login ssh, disitu tertulis 5 berarti kalau sudah 5x salah password langsung kena ban ip yang melakukan login

  • bantime itu lama waktu cekal / ban (satuannya detik, jadi 3600 = 1 jam)
    findtime itu lama waktu pengecekan kesalahan.jadi misal disitu tertulis 600 berarti 10 menit.

    jika dalam 10 menit kamu/orang lain salah memasukkan password 5x maka akan terkena cekal/bantetapi semisal kamu dalam 10 menit hanya salah password 4x, lalu mencobanya lagi setelah di menit 11 maka di hitung dari 1 lagi kesalahan passwordnya.

Fail2ban juga banyak kegunaannya tidak hanya untuk cekal karena salah password, mungkin di lain waktu saya akan membahasnya secara khusus.

Sekian tutorial dari saya mengenai 7 Cara Mengamankan Ubuntu Server dari hacker

Referal saya:
DigitalOcean - Kamu akan mendapatkan $100 jika spent $25 jadi total $125
Vultr - Kamu akan mendapatkan $10 jika spent $10 jadi total $20
UpCloud - Kamu akan mendapatkan $25 cuma cuma setelah deposit berapapun