Tidak ada sistem operasi yang sempurna dan tidak ada keamanan yang tidak bisa ditembus.

– Tidak diketahui.

Tulisan ini saya buat dalam rangka praktikum Keamanan Jaringan untuk melakukan hardening Host dengan server Ubuntu 16.04. Hardening host adalah cara untuk mengamankan server pada layer OS (Sistem Operasi). Prosedur ini digunakan untuk meminimalkan ancaman yang datang dengan mengatur konfigurasi dan menonaktifkan aplikasi dan layanan yang tidak dilakukan. Untuk melakukan hardening host pada Ubuntu Server 16.04, kita dapat melakukan beberapa langkah sebagai berikut :

  • Membuat sebuah pengguna non-root 
  • Menambahkan pengguna non-root kedalam grup sudoers
  • Menambahkan kunci publik kepada pengguna non-root
  • Menolak semua trafik yang masuk dengan Firewall UFW
  • Membuka Port yang dibutuhkan dengan Firewall UFW
  • Mengubah konfigurasi SSH – Login tanpa password
  • Mengubah konfigurasi SSH – Tidak dapat mengakses ROOT
  • Mengubah konfigurasi SSH – Mengubah port SSH
  • Mengubah konfigurasi Ubuntu 16.04 untuk memasang Unattended Upgrades
  • Postfix untuk email
  • Logswatch untuk mengirim ringkasan email
  • Memasang Fail2Ban
  • Mengatur waktu ke UTC dan memasang NTP
  • Mengamankan Shared Memory
  • Menambahkan keamanan login banner
  • Mengeraskan layer network
  • Mencegah IP Spoofing

Membuat pengguna non-root

Pada ubuntu 16.04, secara bawaan ketika kita memasang sistem operasi linux tersebut, kita akan dipaksa untuk membuat user bawaan yang menggunakan password. Password yang direkomendasikan adalah password yang memiliki panjang 8 – 16 karakter yang terdiri dari angka, huruf dan tanda baca. 

Penggunaan pengguna non-root ini digunakan untuk user tidak semaunya mengakses file file yang berhubungan dengan root dan apabila server tersebut dibobol, maka mereka hanya sampai pada tahap user non-root dan tidak langsung memiliki hak akses root.
Apabila anda ingin menambahkan pengguna non-root, gunakan perintah berikut :

$ sudo su 
(masuk kedalam root terlebih dahulu untuk bisa menggunakan hak akses root dan membuat user baru)

#adduser {nama_user}
(membuat user baru)

Menambahkan Pengguna Non-Root kedalam Grup Sudoers

Pada tahap ini karena pengguna non-root yang telah kita buat tidak memiliki hak akses secara penuh kedalam file file yang membutuhkannya. Maka kita perlu menggunakan perintah sudo (super do) untuk bisa melakukan perintah perintah yang bisa dilakukan oleh pengguna root. Untuk menambahkannya, silahkan gunakan perintah berikut pada server anda :

#adduser {nama_user} sudo

Perhatikan ! 
Jangan melakukan penambahan pengguna melalui penyuntingan file sudoers yang terletak pada /etc/sudoers. Gunakan perintah diatas untuk menambahkan.

Menggunakan Secured Shell untuk Mengakses Server 

Secure Shell atau SSH mirip dengan telnet namun lebih aman karena koneksi yang dilakukan pada server dilindungi. Menggunakan ssh agar kita dapat me-remote server kita. Hal pertama yang kita lakukan adalah gunakan perintah berikut untuk memasang openssh pada komputer client dan server :

$ sudo apt install openssh-server openssh-client 

Setelah terpasang, gunakan perintah berikut untuk meng-generate kunci publik pada komputer client :

$ ssh-keygen atau $ ssh keygen -t 4096

Kunci publik yang digenerate akan terbuat menjadi 2 yaitu id_rsa.pub dan id_rsa (private key).Kunci ini akan tersimpan pada direktori ~/.ssh/. Kunci id_rsa.pub ini akan diunggah pada server sebagai unknown hosts, Perhatikan : Jangan bocorkan id_rsa (private key) milik anda kepada siapapun !

Gunakan perintah berikut untuk menyalin id_rsa.pub (kunci publik) kepada server :

$ ssh-copy-id {nama_server}@{ip_server} 

Atau apabila port ssh telah dirubah dari bawaan yaitu 22 menjadi port yang diatur oleh pengguna sesuai kebutuhan maka, gunakan perintah berikut :

$ ssh-copy-id {nama_server}@{ip_server} -p {nomor_port}

Apabila langkah langkah diatas telah dilakukan, maka gunakan perintah berikut untuk melakukan koneksi terhadap server yang anda ingin remote:

$ ssh {nama_server}@{ip_server}

atau pada port ssh yang lebih spesifik, gunakan perintah berikut :

$ ssh {nama_server}@{ip_server} -p {nomor_port}

Menolak semua trafik yang masuk dengan Firewall UFW

Untuk mencegah trafik yang tidak diinginkan mengakses server kita, maka kita perlu sebuah pengamanan menggunakan firewall, firewall yang kita gunakan pada ubuntu 16.04 adalah UFW atau Uncomplicated Firewall. 

Uncomplicated Firewall / UFW adalah sebuah interface kepada user dari iptables. Hal ini digunakan untuk menyederhanakan iptables, meskipun iptables adalah alat yang padat serta ampun, namun banyak pengguna yang kesulitan menggunakan iptables. Secara bawaan, firewall ini telah terpasang pada ubuntu. Namun apabila belum terpasang, gunakan perintah berikut untuk memasang UFW :

$ sudo apt install ufw -y

Secara bawaan UFW menolak semua trafik yang masuk dan memperbolehkan semua trafik yang keluar dari server. Atur sesuai bawaan agar server menolak semua trafik yang masuk dan memperbolehkan semua trafik yang keluar dengan perintah berikut :

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

Untuk menambahkan aturan agar 

Membuka Port yang dibutuhkan dengan firewall UFW

Setelah pada percobaan sebelumnya kita melakukan untuk semua trafik dari luar agar ditolak namun trafik dari dalam keluar diperbolehkan. Kita akan atur untuk port tertentu saja yang dapat diakses seperti contoh adalah port 22 (SSH) untuk meremote server . Gunakan perintah berikut untuk memperbolehkan trafik dari luar ke dalam melalui port 22 :

$ sudo ufw allow ssh atau $ sudo ufw allow 22 

Apabila SSH yang anda gunakan, sudah ditentukan untuk port tertentu maka gunakan perintah berikut untuk memperbolehkan trafik :

$ sudo ufw allow {nomor_port}

Mengubah konfigurasi SSH – Login tanpa password

Pada konfigurasi ssh yaitu login tanpa password, kita sudah melakukan yang namanya login melalui kunci publik sehingga kita tidak perlu untuk memasukkan password kembali

Mengubah konfigurasi SSH – Disable login untuk root

Pada sesi ini, kita akan mengubah konfigurasi agar user yang menggunakan ssh pada server tidak bisa melakukan login as root tetapi menggunakan sudo untuk bisa menggunakan fasilitas root. Pertama masuklah pada ubuntu server dan kita akan mengedit file /etc/ssh/sshd_config.

$ cd /etc/ssh
$ sudo nano sshd_config

Tambahkan pada #Authentication line PermitRootLogin Yes seperti berikut :

# Authentication: 
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

Setelah itu simpan hasil konfigurasi yang dirubah dan restart service ssh menggunakan perintah berikut :

$ sudo service sshd restart

Mengubah Konfigurasi SSH – Mengubah Port SSH

Pada bawaan dari ssh, kita mengakses port 22 untuk menggunakan layanan ssh, tapi kita bisa mengamankan nya dengan mengubah port sesuai dengan yang kita mau, jangan lupa untuk tidak menggunakan port yang sudah reserved seperti FTP yaitu 21, SMTP yaitu 25 dan lain lain. Seperti pada sebelumnya, kita rubah file sshd_config pada server seperti berikut :

$ cd /etc/ssh
$ sudo nano sshd_config

carilah line yang bertuliskan Port 22, rubah angka 22 dengan port yang anda inginkan, pada contoh berikut, saya menggunakan port 30001 :

lalu restart service ssh dengan perintah berikut :

$ sudo service sshd restart

untuk dapat login gunakan argumen -p dan port dibelakangnya untuk bisa mengakses port tersebut seperti berikut :

menggunakan perintah ssh -p untuk port yang berbeda

Mengubah konfigurasi Ubuntu 16.04 untuk memasang Unattended Upgrades

Kita akan mengaktifkan update otomatis yang tidak termasuk bawaan untuk sekuritas ubuntu 16.04, gunakan perintah berikut untuk memasang unattended upgrades :

$ sudo apt install unattended-upgrades

untuk mengubah pengaturan pada unattended upgrades pada file /etc/apt/apt.conf.d/50unattended-upgrades, hal ini diperlukan agar dapat disesuaikan dengan kebutuhan pengguna :

kegunaan “//” adalah untuk comment pada paket yang tidak dibutuhkan. Untuk menambahkan packet yang diblacklist sehingga tidak diupgrades maka tambahkan packet packet tersebut pada :

// List of packages to not update (regexp are supported) 
Unattended-Upgrade::Package-Blacklist {
//      "vim";
//      "libc6";
//      "libc6-dev";
//      "libc6-i686";
};


Leave a Reply

Your email address will not be published. Required fields are marked *