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)
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.