Hardening CentOS Security

William Stallings dan Lawrie Brown dalam bukunya yang berjudul Computer Security: Principles and Practice menulis tentang langkah-langkah pengamanan sistem yang menggunakan sistem operasi Linux / UNIX. Secara garis besar, langkah-langkah tersebut adalah:

  • Patch Management
  • Application and Service Configuration
  • Users, Groups, and Permissions
  • Remote Access Controls
  • Logging
  • Application Security Using a chroot jail
  • Security Testing

Berikut adalah langkah-langkah implementasi di atas secara spesifik pada sistem operasi CentOS. Setelah selesai proses basic instalasi pastikan terhubung dengan internet, sebelum dilakukan patching atau pembaharuan dan instalasi paket periksa alamat repositori yang dituju apakah sudah benar dan terpecaya.

Patch Management

Update CentOS untuk memastikan sistem dan aplikasi yang terpasang menggunakan security patch terbaru. Perintah yang digunakan untuk melakukan update CentOS adalah menggunakan perintah “yum install update”.

Application and Service Configuration

Instalasi aplikasi-aplikasi, seperti apache dan mysql, dilakukan dengan menggunakan yum. Khusus untuk OpenSSH-server instalasi dilakukan secara manual karena versi OpenSSH yang ada pada repository CentOS bukan merupakan versi OpenSSH terbaru. OpenSSH versi terbaru digunakan karena pada versi terbaru celah-celah keamanan yang ada pada versi-versi sebelumnya telah diperbaiki. Langkah-langkah instalasi OpenSSH-server secara manual dilakukan dengan menggunakan referensi berikut:  Quick and dirty manual compile of OpenSSH on CentOS 5. Walaupun referensi tersebut menginstalasi OpenSSH versi 5.0p1 pada CentOS 5, namun tetap relevan untuk melakukan instalasi OpenSSH versi 6.4p1 pada CentOS 6.

Setelah selesai melakukan instalasi OpenSSH terbaru, dilakukan konfigurasi aplikasi dan servis. Konfigurasi aplikasi dan servis yang dilakukan kali ini adalah konfigurasi apache, mysql, firewall, rkhunter (aplikasi untuk memindai rootkit) dan terakhir dilakukan konfigurasi sistem untuk membuang aplikasi / servis yang tidak diperlukan.

Konfigurasi apache dilakukan apabila diperlukan saja. Dalam kasus ini, webserver tidak melayani permintaan HTTPS sehingga konfigurasi apache akan memastikan apache tidak mendengar (Listen) port yang biasa digunakan HTTPS yaitu port 443. Untuk memastikan hal tersebut, pastikan tidak ada baris “Listen 443” pada file konfigurasi apache (/etc/httpd/conf/httpd.conf).

Konfigurasi mysql dilakukan untuk menambahkan password pada account root mysql dan mematikan fitur jaringan pada mysql karena pada kasus ini webserver dan database berada pada mesin yang sama. Dengan mematikan fitur jaringan mysql, kemungkinan terjadinya eksploitasi pada mysql dari pihak luar dapat diminimalisir.

Apabila pertama kali dijalankan, account root pada mysql belum memiliki password. Untuk menambahkan password pada account root ketika mysql pertama kali dijalankan adalah dengan menggunakan perintah “mysqladmin -u root password NEWPASSWORD”. Pastikan root tidak bisa diakses tanpa menggunakan password.

Langkah konfigurasi berikutnya untuk mysql adalah mematikan fitur jaringan (menghentikan Listen ke port 3306). Langkah ini dapat dilakukan dengan cara menambahkan baris “skip-networking” pada file config mysql di /etc/my.cnf.

Configure Firewall dilakukan untuk menutup port-port yang tidak digunakan. Apabila port-port Listen yang tidak digunakan dibiarkan begitu saja, maka port-port tersebut bisa menjadi celah keamanan yang bisa dimanfaatkan oleh pihak luar. Dalam kasus ini, konfigurasi dilakukan untuk menutup port SSH dan HTTPS yang tidak digunakan. Sebagaimana sudah dijelaskan di atas, port HTTPS tidak digunakan karena webserver tidak melayani permintaan HTTPS. Sedangkan untuk port SSH ditutup karena untuk melakukan SSH ke mesin ini digunakan port lain, bukan port default. Untuk memudahkan konfigurasi firewall digunakan tools “system-config-firewall-tui” yang menyediakan konfigurasi berbasis Text-based User Interface (TUI).

Setelah selesai melakukan konfigurasi firewall, dilanjutkan dengan instalasi dan konfigurasi aplikasi bernama rkhunter. Rkhunter (Rootkit Hunter) adalah tools untuk melakukan pemindaian pada sistem berbasis Unix / Linux. Rkhunter akan memindai backdoor, rootkit, dan local exploit yang ada pada sistem. Hal lain yang akan dipindai oleh rkhunter adalah: hidden files, wrong permissions set on binaries, suspicious strings in kernel etc. Detail lain mengenai rkhunter dapat diliat langsung pada situs resminya yaitu http://www.rootkit.nl/. Langkah-langkah instalasi dan konfigurasi rkhunter dilakukan dengan menggunakan referensi berikut: Install Linux Rkhunter (Rootkit Hunter) in RHEL, CentOS and Fedora.

Langkah terakhir pada konfigurasi aplikasi dan servis adalah memeriksa aplikasi yang terinstalasi pada sistem. Apabila ada aplikasi atau servis yang tidak perlu sebaiknya aplikasi atau servis tersebut dihapus saja. Pemeriksaan aplikasi yang terinstalasi dapat dilakukan dengan menggunakan perintah “rpm -qa”. Sedangkan untuk menghapus dapat menggunakan yum dengan perintah “yum remove package-name”

User, Group, and Permission

Pemeriksaan user dilakukan dengan melihat isi file /etc/passwd. User dengan user ID dan grup ID lebih kecil dari 500 merupakan user dan grup standar dari sistem operasi (baik user dan grup untuk aplikasi ataupun servis). Pada kasus ini hanya satu  user yang memiliki user ID 500  dan user tersebut merupakan user yang biasa dipakai pada server sehingga tidak perlu tindakan lebih lanjut.

Pemeriksaan group dilakukan dengan melihat isi file /etc/group. File ini mempunyai format nama-grup:x:grupID:user1,user2,dst. Grup dengan grup ID lebih kecil dari 500 merupakan grup standar dari sistem operasi (baik grup untuk aplikasi ataupun servis). Pada kasus ini hanya satu  grup yang memiliki grup ID 500 sehingga tidak perlu tindakan lebih lanjut.

Remote Access Control

Pembatasan remote akses dilakukan dengan mengkonfigurasi ssh. Konfigurasi yang dilakukan adalah menolak root login pada ssh dan mengganti port default dari ssh. Langkah untuk menolak root login dan pengubahan port ssh dilakukan dengan merubah isi file sshd_config. Karena OpenSSH diinstalasi secara manual maka letak file ada di /usr/local/etc/sshd_config. Apabila instalasi ssh dilakukan oleh yum maka letak file ada di /etc/ssh/sshd_config. Tambahkan baris “PermitRootLogin no” untuk menolak root login dan ubah nilai Port untuk mengganti default port.

Logging

Untuk mempermudah logging, digunakan aplikasi Logwatch. Logwatch berfungsi untuk mengirimkan log pada sistem operasi dalam bentuk email. Log dikirimkan ke administrator yang terdaftar pada konfigurasi Logwatch agar mesin tidak perlu mengurusi penyimpanan file log. Untuk melakukan instalasi dan konfigurasi Logwatch dapat mengikuti referensi berikut: Logwatch How to Install on CentOS. Pada dasarnya langkah yang dilakukan adalah:

  • instalasi logwatch melalui yum dengan perintah “yum install logwatch”
  • edit “MailTo=” pada config logwatch di /usr/share/logwatch/defaults.conf/logwatch.conf

Logwatch pada CentOS secara default menggunakan sendmail MTA (message transfer agent) untuk mengirimkan email ke mailhub yang lalu mengirimkan email ke administrator. Pada kasus ini digunakan email dari gmail sehingga MTA harus dikonfigurasi untuk terhubung dengan gmail. Setelah beberapa saat mencoba konfigurasi sendmail dirasa sangat sulit dan rumit, ditemukan aplikasi yang lebih sederhana yang hanya berfungsi mengirim email dari komputer ke mailhub (tidak bisa terima) yaitu ssmtp. Langkah instalasi dan konfigurasi ssmtp serta membuatnya ssmtp menjadi default MTA dapat menggunakan referensi berikut: Use Gmail SMTP with sendmail on CentOS 6.3 using SSMTP. Pada referensi tersebut langkah-langkah yang dilakukan adalah:

  • mematikan servis sendmail

  • menambahkan alamat repository pada yum untuk mendapatkan ssmtp package

  • install ssmtp

  • konfigurasi ssmtp (seperti pada referensi)

FromLineOverride=YES
root=username@gmail.com
mailhub=smtp.gmail.com:587
UseTLS=YES
UseSTARTTLS=YES
AuthUser=username
AuthPass=password

  • menggunakan ssmtp sebagai default MTA

Setelah selesai melakukan koonfigurasi jalankan perintah “logwatch” (dengan root permission) untuk menjalankan Logwatch. Apabila ingin diatur laporan perhari dapat menggunakan cron job. Berikut penggalan contoh hasil laporan Logwatch pada mesin yang dicobakan:

Application Security Using a chroot jail

Server memiliki beberapa service yang diberikan akses ke publik dan privat yang diakses melalui sebuah jaringan yang besar. service tersebut tidak sepenuhnya memerlukan fitur yang lengkap dari sistem operasi tersebut melainkan hanya beberapa fungsi saja, seperti file data dan direktori untuk layanan tersebut beroperasi. Hal ini dikenal dengan istilah Chroot Jail.

Contoh yang umum digunakan pada Chroot Jail adalah service dari FTP, HTTP, dan lain sebagainya. Kesemua fitur ini biasanya sering diakses baik pengunduhan maupun pengunggahan, sehingga sangat retan diserang apabila diberikan akses ke seluruh sistem. Apabila terserang maka penyerang tersebut dapat mengakses data yang lain dari sistem tersebut. Sistem pada Unix atau Linux menyediakan mekanisme untuk menjalankan layanan tersebut di Chroot Jail, yang membatasi pandangan server dari sistem file untuk hanya sebagian ditentukan.

Security Testing

Setelah selesai mengkonfigurasi aplikasi dan servis, perlu dilakukan beberapa pengujian untuk memastikan hasil konfigurasi. Berikut adalah pengujian-pengujian yang dilakukan.

Verifikasi integritas package yang terinstalasi dengan rpm.

Memastikan server hanya LISTEN ke port yang dikenali saja.

Port 2345 merupakan port yang digunakan untuk SSH, sedangkan port 80 merupakan port yang digunakan apache untuk memberi layanan web. Port HTTPS (443) pada apache sengaja ditutup.

Ditulis oleh:  Adrian Dwiananto A (23212035) & Mulkan Fadhli (23212034)

Leave a Reply

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