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)

Hardening WordPress Configuration

William Stallings dan Lawrie Brown dalam bukunya yang berjudul Computer Security: Principles and Practice pada bagian Application Security (Chapter 12) merupakan bagian terpenting setelah melakukan proses pengamanan Sistem Operasi. Pada kasus ini apikasi utama pada server berjalan adalah WordPress. Oleh karenanya, proses pengamanan WordPress dimasukkan dalam bahagian tersendiri.

Agar WordPress dapat berjalan maka ada beberapa prasyarat yang harus terpenuhi, yaitu :

  • Apache Deamon sudah aktif
  • MySQL Deamon sudah aktif
  • PHP

Ketiga proses tersebut telah dijelaskan pada bahagian Application and Service Configuration, gunakan versi terbaru. satu lagi paket yang harus dimiliki yaitu WordPress source biasanya dalam bentuk .zip atau .tar.gz apabila diunduh dari situs resmi https://wordpress.org/. Berikut langkah-langkah instalasi dan konfigurasi wordpress.

  • Memastikan Prasyarat dari WordPress.

Untuk PHP ketikkan :

Untuk MySql ketikkan :

Untuk Apache ketikkan :

  • Download WP terbaru

Setelah semua aplikasi di atas terinstal dan terkonfigurasi, periksa apakah sudah jalan dengan benar. Selanjutnya unduh wordpress versi terbaru dari situsnya dengan memberikan perintah wget –secure-protocol=auto https://wordpress.org/latest.tar.gz

Dikarenakan fitur wget yang tersedia (versi terbaru) belum mendukung protokol sekuriti yang terdapat pada situs https://wordpress.org maka WP versi terbaru yaitu wordpress v3.7.1 diunduh dengan menggunakan browser terlebih dahulu.

setelah proses pengunduhan selesai, untuk alasan keamanan maka disarankan untuk

  • Extract file nya dan mounting di direktori apache nya

[root@localhost /]# tar -xvzf latest.tar.gz
[root@localhost /]# cp -R wordpress-3.3.1 /var/www/html/blog

  • Buka browser anda dan arahkan urlnya ke localhost/blog maka proses instalasi akan muncul apabila tidak maka arahkan ke //localhost/blog/wp-admin/install.php

Securing WordPress

Setelah selesai melakukan instalasi WordPress, langkah selanjutnya adalah mengamankannya dari berbagai macam kemungkinan celah keamanan. Adapun langkah-langkah mengamankannya, yaitu :

  • Gunakan password yang tangguh

Gunakan password dengan kombinasi yang tangguh sehingga sulit untuk dicoba-coba secara acak. Minimalkan penggunaan akun admin dalam mengisi konten. Dan untuk menjaga keamaan akun anda agar tidak mudah diretas melalui password berikut diberikan tips sehingga akan akun akan sulit diretas :

Password yang kuat adalah:

Minimal 8 karakter (lebih banyak lebih baik)
Mengandung lebih dari 1 huruf kecil, 1 huruf besar, 1 angka dan 1 simbol
Setiap karakter selang-seling antara huruf kecil, huruf besar, angka & simbol
Tanpa ada karakter yang sama atau berulang

Password yang ideal adalah:

Mudah diingat
Beda akun/ web/ aplikasi, beda password
Diganti setidaknya sebulan sekali

Password yang harus dihindari adalah:

Berupa kata yang ada di kamus dalam bahasa apapun
Singkatan-singkatan yang umum
Karakter berurutan baik angka maupun huruf pada keyboard
Informasi pribadi seperti nama atau tanggal lahir

  • Lindungi akses admin wordpress

Rubahlah username default dari administrator. Pada bagian Users di halaman admin, terdapat bagian pengaturan profil.

  • Update wordpress

Ini sangat penting untuk memperbarui WordPress anda dari bugs dan masalah keamanan. Anda dapat menggunakan Automatic Upgrade (Tools > Upgrade), atau 3 langkah upgrade manual.

  • Hapus file WordPress/../readme.html

Selalu periksa file readme.html apabila masih ada segera hapus, karena dengan mengetahui versi yang sedang digunakan mempermudah salah satu langka peretas dalam menyusup.

  • Konfigurasi file .htaccess untuk tutorial lengkap dapat dilihat ada creativebloq.com

Lindungi direktori WP-Admin dengan password dari sisi server. Letakkan file .htaccess pada direktori yang ingin anda amankan. Berikut adalah kode dari file .htaccess

AuthName “WP-Admin”
AuthType Basic
AuthUserFile /path/ke/passwd  #(direktori tujuan file .htpasswd)
Require valid-user

Gunakan htpasswd untuk membuat file passwd (.htpasswd) dan letakkan file ini pada direktori yang tidak bisa diakses dari web (htpasswd -c /tujuan/direktori/passwd username).

  • Monitor Malware

Instal plugin yang terpercaya guna melakukan monitoring terhadap malware serta memberikan laporan kepada admin web apabila ada malware detection sehingga apabila terindikasi dapat dihapus.

  • Lindungi dari serangan “brute force” untuk tutorial dapat dilihat pada copyblogger.com

Kadangkalanya sebuah web diserang secara ‘brute force’/acak, sehingga akan terdapat laporan percobaan penyusupan hingga berkali-kali. Blok IP yang kelihatan mencoba secara terus menerus dan berkala.

  • Block Akses Search Engine ke Direktori WP-

Direktori WP- tidak perlu di-index oleh search engine, jadi blok saja akses ke direktori ini. Anda bisa menggunakan konfigurasi berikut di file robots.txt.

              Dissalow: /wp-*

  • PLugin

Kelola plugin yang digunakan secara bijak. pastikan plugin yang digunakan berasal dari sumber yang sangat aman. Periksa daftar plugin yang sudah aktif di web, selanjutnya optimalkan dengan cara menghapus plugin yang tidak digunakan

  • Backup

Ini adalah aturan dasar yang sederhana yang dapat menyelamatkan web dalam banyak kasus. Jangan lupa untuk selalu mem-backup website (root folder dan semua file-file yg ada) dan database secara berkala, agar website dapat dikembalikan apabila terjadi serangan.

Dapat dilakuan dengan menggunakan PhpMyAdmin untuk backup database. Bukalah database anda, klik tab Export, pilih semua tabel pada pilihan SQL (jangan lupa centang “Add DROP TABLE“). Selain itu, gunakan fungsi GZIP Compression.

Kompresi adalah cara cepat dan efektif untuk menghemat bandwidth dan mempercepat website.Apache memungkinkan kompresi melalui mod_deflate dan tambahkan kode berikut di dalam file .htaccess sehngga akan mengaktifkan kompresi GZIP pada halaman web Anda.

# BEGIN GZIP
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/xml text/css application/x-javascript application/javascript
</ifmodule>
# END GZIP

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

CentOS Secure Installation

Langkah paling utama dan pertama yang harus dilalui adalah mengamankan pondasi yaitu Sistem Operasi. Diawali dengan memastikan sumber paket instalasi tersebut berasal dari sumber yang benar. Banyak cara memastikanya, pertama gunakan paket instalasi resmi (berbeli atau unduh dari situs yang meyakinkan misalnya secure web). kedua periksa md5sum serta sha*-nya apakah sesuai dengan informasi yang tertera pada situs resmi CentOS. Langkah kedua ini berlaku untuk semua aplikasi yang bersumber dari pengunduhan.

Sistem Operasi Centos merupakan turunan dari RedHat, versi terbaru dari Centos sekarang adalah 6.4. Sistem Operasi Centos dapat diunduh dari salah satu mirror yang terdaftar pada situs resminya http://www.centos.org. Untuk pengunduhan sistem operasi centos tersedia dalam beberapa versi, Live CD (tidak dapat digunakan untuk instalasi), Minimal, Full Service. Pada versi fulservice sudah tersedia banyak aplikasi yang dibutuhkan. Pada laporan ini digunakan OS Centos yang full service akan tetapi proses instalasi menggunakan sistem Minimal, dengan tujuan mengurangi beban server. Setelah mengunduh pastikan md5sum, sha1sum, dan sha256sum sesuai dengan yang diberikan oleh situs mirror dan situs http://www.centos.org.

Jalankan CD Instalasi CentOS, setelah proses booting akan tampil tampilan depan dari CentOS. Tersedia beberapa pilihan untuk dilakukan instalasi, untuk alasan keamanan maka pilih instalasi minimal atau instalasi basic sehingga aplikasi yang terinstal hanyalah aplikasi yang dibutuhkan saja.

Setelh memilih basic instalasi selanjutnya akan muncul tampilan media testing

Akan membutuhkan waktu yang sangat lama untuk menyelesaikan pengecekan, apabila anda yakin dengan CD instalasi yang anda miliki maka disaran untuk memilih skip saja. selanjutnya pilih Bahasa yang akan digunakan pada sistem operasi.

Selesaikan semua konfigurasi yang dibutuhkan hingga proses instalasi berjalan. Untuk proses instalasi dapat dilihat pada situs  howtoforge.com.

 

Strategi Pengamanan WordPress pada Sistem Operasi Centos

Penggunaan sistem komputer di banyak perusahaan sudah menjadi kebutuhan yang sangat mendukung jalannya proses bisnis perusahaan tersebut. Sistem komputer klien dan server merupakan komponen utama dari infrastuktur IT, sistem klien menyediakan akses ke data dan aplikasi yang digunakan perusahaan. Proses tersebut didukung oleh komputer server yang menyimpan dan menjalankan aplikasi serta datanya. Sistem yang berjalan secara umum sangat mudah untuk diserang baik dari luar maupun dalam, sehingga diperlukan beberapa langkah sehingga terbentuknya sistem yang tangguh. Strategi untuk penguatan sistem yang diusulkan yaitu Perencanaan, Intalasi, Konfigurasi, Pembaharuan, dan Pemeliharaan untuk sistem operasi dan aplikasi yang berjalan.

Langkah – langkahnya dibagi kedalam 3 kelompok besar yaitu :

  1. Secure Instalation CentOS
  2. Hardening CentOS Security
  3. Hardening WordPress Configuration

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