~ read.
Basic Linux Security

Basic Linux Security

Dalam tutorial sebelumnya anda belajar cara membuat VPS Linux dan melakukan tugas administrasi server dasar. Sekarang saatnya memperkuat keamanan VPS Linux anda untuk mencegah akses ilegal.
Berikut beberapa file log dari Linux (Ubuntu Distro) yang harus anda perhatikan:

  • /var/log/apt/, direktori log instalasi apt package
  • /var/log/auth.log, log file akses sistem
  • /var/log/boot.log
  • /var/log/btmp, log file untuk akses sistem yang gagal
  • /var/log/cron
  • /var/log/dmesg
  • /var/log/dpkg.log
  • /var/log/faillog
  • /var/log/httpd/, direktori log file Apache Server
  • /var/log/kern.log
  • /var/log/lastlog
  • /var/log/mail.log
  • /var/log/mysql.log, log file mysql services
  • /var/log/syslog
  • /var/log/utmp, log file akses terhadap sistem
  • /var/log/wtmp, history data log file utmp
  • /var/log/yum.log log file instalasi yum package

Untuk membuka file log anda bisa menggunakan salah satu dari perintah berikut

utmpdump btmp | less
nano auth.log

Sekarang kita akan mengakses server via PuTTY, dan kita akan melihat file auth.log dengan command berikut:
tutorial--vpsdigitalocean04-linuxsecurity001

cd /var/log/
nano auth.log

tutorial--vpsdigitalocean04-linuxsecurity002

Dari file log tersebut dapat kita lihat ada beberapa user name tidak dikenal yang mencoba akses ke dalam server, seperti hadoop, student, docker, admin dan lain-lain.

Untuk memperkuat keamanan VPS Linux dari akses ilegal kita akan melakukan langkah-langkah berikut.

1. Buat user baru dengan akses terbatas

Buat user id baru

tutorial--vpsdigitalocean04-linuxsecurity011

Gunakan perintah berikut untuk membuat user id baru, dan memasukkan user id tersebut ke dalam group sudo, group dengan super user privileges.

adduser user_id
adduser user_id sudo

Cek user id baru

Setelah user id telah dibuat, kita akan mengecek hak aksesnya dengan perintah berikut.

su user_id
pwd
ls -la /root

tutorial--vpsdigitalocean04-linuxsecurity012

Seharusnya anda tidak akan dapat melihat isi direktori /root sebagaimana screen shoot di atas. Anda harus menambahkan perintah sudo ls -la /root untuk melihat isi direktori /root

Tambahkan SSH Key ke user id baru

Sebelumnya anda harus menambahkan SSH Key ke dalam VPS. Apabila belum anda dapat melihat tutorial berikut.

Jalankan perintah su root untuk berganti user id dan pindah ke root direktori untuk menyalin SSH Public Key

su root
cd /root/.ssh
ls -la
mkdir -v /home/user_id/.ssh
cp authorized_keys /home/user_id/.ssh

Set akses direktori dan file

chown -R user_id:root /home/user_id/.ssh
chmod 700 /home/user_id/.ssh
chmod 644 /home/user_id/.ssh/authorized_keys

Test akses VPS via PuTTY

Kita akan mencoba akses ke VPS dengan user_id yang baru melalui aplikasi PuTTY, seharusnya pada saat login pass phrase yang telah kita set akan diminta oleh sistem.

tutorial--vpsdigitalocean04-linuxsecurity015

2. Ubah port akses SSH dan batasi akses root ke VPS via SSH

Ubah file /etc/ssh/sshd_config dengan editor vim atau nano seperti perintah berikut.

 vim /etc/ssh/sshd_config

Jalankan perintah berikut untuk merubah port akses SSH ke 2222 untuk meningkatkan aspek keamanan.

# What ports, IPs and protocols we listen for
Port 2222
...

Kemudian tambahkan perintah berikut untuk memaksa sistem hanya dapat akses oleh non root user melalui SSH dengan otentikasi private key. Jadi apabila ada yang mencoba akses dengan menebak password (brute force attack) akan gagal.
Anda tetap dapat melakukan perintah super admin dengan sudo atau merubah user dengan su root.

# Authentication:
...
PermitRootLogin no
...
PasswordAuthentication no
...

Perintah untuk mengaktifkan internet protokol IPv4 atau IPv6 saja untuk bisa koneksi SSH ditambahkan di file sshd_config.

...
AddressFamily inet  # Untuk protokol IPv4
AddressFamily inet6 # Untuk protokol IPv6
...

Kemudian aktifkan konfigurasi SSH yang sudah kita buat dengan perintah Systemd atau SysVinit, tergantung kepada Distro Linux yang kita gunakan dengan perintah ps -p 1

ps -p 1 
sudo systemctl restart sshd # systemd
sudo service ssh restart    # sysvinit

Test akses via PuTTY

Test akses sebagai root

Kita akan mencoba akses ke VPS dengan user id root melalui aplikasi PuTTY jangan lupa untuk merubah akses port koneksi SSH di PuTTY. Seharusnya pada saat login sistem akan menolak secara otomatis dan memberikan pesan berikut.
tutorial--vpsdigitalocean04-linuxsecurity017

3. Setting Firewall

Firewall kita gunakan untuk memblok trafik yang tidak kita inginkan terhadap server. Dengan menuliskan rules akses yang spesifik akan mencegah akses ilegal dan network mapping terhadap server kita.

Sebagai rujukan, hanya service yang kita gunakan saja yang kita berikan akses, dan menutup semua service di luar itu. Sebagai contoh apabila server kita tidak menggunakan database MySQL, maka port 3306 akan kita tutup.

Ada beberapa software Firewall umum yang akan kita gunakan:

  • Iptables, merupakan controller untuk netfilter, Linux kernel’s packet filtering framework.
  • UFW, merupakan iptables frontend untuk distro Debian dan Ubuntu.

Jalankan perintah berikut melalui PuTTY untuk memastikan status firewall dan mengaktifkannya.

ufw disable
ufw status verbose
ufw enable

ufw status verbose

Disini dapat kita lihat bahwa Firewall telah aktif, namun belum ada rules yang di set.

Sekarang kita akan mengupdate rules Firewall sesuai dengan kebutuhan.

ufw allow 2222
ufw status verbose
ufw status numbered