Secure Webserver Installation, Hardening, Security Maintenance and Adding Linux/Unix Security Only Configuration

Keamanan kini bukan lagi menjadi kebutuhan sampingan, melainkan menjadi kebutuhan utama. Hal ini dikarenakan majunya teknologi internet membuat pengembangan aplikasi beralih pada pengembangan berbasis web. Sebab pengembangan dalam bentuk web dapat dijalankan pada multi platform dan mendukung konektivitas yang tinggi dan mudah. Fenomena tersebut membutuhkan web server yang aman untuk mendukung keberjalanan fungsi dari aplikasi.

FreeBSD merupakan sebuah operating system Unix gratis. Sistem ini dikembangkan pertama kali pada 1993 hingga kini menjadi mayoritas dari web server pada internet. Hal ini dikarenakan karena mudah didapat dan mendukung banyak software linux secara built-in.

Tulisan ini memaparkan cara melakukan instalasi web server yang aman, hal-hal yang diperlukan untuk memperkuat web server dari gangguan, maintenance dan usaha khusus pada mesin dengan sistem operasi berbasis Linux/Unix. Web server yang akan di-install adalah apache pada mesin dengan OS FreeBSD. Kemudian ditambahkan MySQL untuk mendukung database. Berikutnya aplikasi yang akan ditambahkan adalah WordPress. Terakhir dilakukan hardening pada web server.

1. Instalasi

Pada bagian ini dijelaskan secara langkah demi langkah untuk melakukan instalasi FreeBSD, Apache, MySQL, PHP, dan aplikasi WordPress.

1.1 Instalasi FreeBSD

Check integritas FreeBSD

Untuk melakukan instalasi FreeBSD yang aman perlu dilakukan uji integritas data yang didownload dari internet. Yaitu memperhatikan nilai hash value file instalasi yang di-release pada https://www.freebsd.org/releases/9.2R/announce.html.

File FreeBSD yang digunakan untuk instalasi adalah FreeBSD-9.2-RELEASE-i386-dvd1.iso. Berikut dapat diamati nilai hash dari FreeBSD.




Gambar 1 Release hash value untuk pengujian integritas file

Untuk file .iso yang digunakan, dapat diamati nilai hash untuk pengujian integritas adalah :

MD5 : 917104df8d559f2ec981e98bfdf78e05
SHA-256 : a1bba5668792cfc8197c0f81b28cdd17e912a1ae5816887f8518bf1536a99af8

Pengujian di bawah ini dilakukan dengan menggunakan hashing pada library.php. Nerikut adalah source code program pengujian yang digunakan.




Gambar 2 source code pengecekan hash value

Hasil pengecekan:




Gambar 3 hasil pengecekan hash value

Didapatkan hasil sesuai dengan yang di-release oleh freebsd.org. Tingkat kesulitan dalam memanipulasi nilai hash SHA256 menjamin bahwa file yang akan digunakan untuk instalasi tidak diubah-ubah dan aman.

Karena file terjamin benar, instalasi FreeBSD dapat dilakukan dengan file FreeBSD-9.2-RELEASE-i386-dvd1.iso.

Instalasi FreeBSD

FreeBSD digunakan sebagai OS pada mesin. Konfigurasi saat install adalah default sehingga yang perlu diatur adalah IP address.

IP address yang digunakan adalah static IP adress 192.168.10.135.

Instalasi Port

Port pada freeBSD digunakan untuk mengaktifkan services yang dapat digunakan pada mesin FreeBSD. Instalasi port dilakukan dengan mengikuti langkah-langkah sebagai berikut :

portsnap fetch
portsnap extract
portsnap fetch update

Instalasi Lynx

Lynx merupakan browser simpel yang dapat digunakan pada mesin FreeBSD, sehingga memudahkan proses debugging saat melakukan instalasi yang dekat hubungannya dengan website. langkah sebagai berikut :

cd /usr/ports/www/lynx
make install clean

Ubah Master Site

Master site merupakan prioritas utama mesin freeBSD untuk mencari update dan file-file instalasi :

MASTER_SITE_OVERRIDE=ftp://ftp.itb.ac.id/pub/FreeBSD/ports/dist

Setting Proxy

Proxy server menjadi trend dari suatu organisasi atau perusahaan untuk mengatur akses website keluar. Untuk mengatur mesin FreeBSD mendukung proxy maka pengaturan sebagai berikut menjadi penting :

setenv http_proxy http://[proxy username]:[proxy password]@proxy_domain:port/
setenv https_proxy http://[proxy username]:[proxy password]@proxy_domain:port/
setenv ftp_proxy http://[proxy username]:[proxy password]@proxy_domain:port/

1.2 Install Apache

Check Integritas Apache

Pengecekan integritas file dilakukan sama seperti pada proses di awal, yaitu saat mengecek integritas file installer FreeBSD. Lakukan proses pengecekan ini sebelum instalasi dilakukan.

Secara default, FreeBSD melakukan pengecekan terhadap semua file yang di-fetch dari ftp saat proses instalasi. Pengecekan secara otomatis dilakukan dengan menggunakan hash SHA-256. Di dalam port collection FreeBSD, terdapat nilai-nilai hash value dari semua file yang dapat di-install ke FreeBSD server. Nilai hash SHA-256 ini disimpan dalam file distinfo pada masing-masing folder program di dalam port. Misal, untuk Apache22, nilai hash value terdapat pada /usr/ports/www/apache22/distinfo. Nilai hash inilah yang digunakan oleh FreeBSD untuk melakukan pengecekan SHA-256 pada file-file yang di-fetch.

Pengecekan dapat juga dilakukan secara manual dengan menggunakan source code yang ada di bagian pengecekan file FreeBSD. Nilai hash sebenarnya untuk pembanding sudah didapatkan di masing-masing folder dalam port collection FreeBSD. Untuk file yang didownload, dapat diperoleh dari /usr/ports/distfiles/. Pengecekan dilakukan pada semua file yang ada.

Selain dengan membandingkan nilai hash dengan distinfo file, dapat juga dibandingkan dengan nilai hash yang di-release di internet.

Pengujian integritas apache22 dapat ditentukan dari file httpd-2.2.25.tar.bz2 yang diunduh. File unduhan tersebut dapat dihitung SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo httpd-2.2.25.tar.bz2. Hal tersebut ditunjukkan sebagai berikut :




Gambar 4 Pengecekan integritas apache22 menggunakan informasi pada distinfo

Pengujian integritas juga dapat dilakukan dengan mencocokkan nilai MD5 yang tersedia pada website apache yang diakses dengan secure (HTTPS) dengan hasil perhitungan dengan kode PHP seperti ditunjukkan sebagai berikut :




Gambar 5 MD5 hash value dari apache22 yang didapatkan dari internet




Gambar 6 Pengecekan integritas apache22 menggunakan md5 dengan informasi pada situs di atas

Terkadang pengecekan integritas tidak hanya menggunakan SHA256 dan MD5 saja, melainkan dengan memverifikasi apakah public key penyedia merupakan public key yang baik atau tidak. Pengujian ini dibantu dengan library gnupg pada mesin FreeBSD, yang perlu di-install terlebih dahulu. File yang akan diverifikasi merupakan httpd-2.2.25.tar.bz2.asc dengan isi sebagai berikut :




Gambar 7 Isi file signature gpg dari httpd-2.2.25.tar.bz2

uji file dengan command

gpg httpd-2.2.25.tar.bz2.asc

yang dapat dilihat sebagai berikut :




Gambar 8 pengecekan gpg pada signature apache

Hasil yang didapatkan seperti gambar dibawah menyatakan bahwa public key yang diajukan tidak dikenal signature-nya. Hal ini disebabkan dalam lokal mesin yang tidak memiliki kunci tersebut.




Gambar 9 pengecekan signature tanpa public key untuk mendapatkan RSA key ID

Agar mesin FreeBSD dapat mengenali kunci tersebut maka perlu diperbaharui katalog kunci pada mesin FreeBSD. Hal ini dapat dilakukan dengan menggunakan keyserver yang terdapat pada MIT. hal ini dapat dilakukan dengan command sebagai berikut :

gpg –keyserver pgpkeys.mit.edu --recv-key [RSA Key ID]

hasilnya dapat dilihat sebagai berikut :




Gambar 10 pengecekan signature dengan mengambil public key menggunakan RSA key ID

Kemudian dengan menjalankan kembali command yang sebelumnya maka didapat kan hasil sebai berikut :




Gambar 11 pengecekan signature dengan public key yang didapatkan

Kemudian dapat terlihat fingerprint dari key tersebut adalah milik William A. Rowe, Jr. dengan user id dan email seperti tertera tersebut.




Gambar 12 validasi public key yang digunakan

Install Apache

Apache merupakan web server yang mudah digunakan. instalasi pada mesin FreeBSD sebagai berikut :

cd /usr/ports/www/apache22
make install clean
echo 'apache22_enable="YES"' >> /etc/rc.conf

kemudian edit konfigurasi pada httpd.conf dengan :

ee /usr/local/etc/apache22/httpd.conf

uncomment ServerName host.example.com:80

ubah nama ServerName menjadi localhost

kemudian comment LoadModule unique_id_module sebagai berikut




Gambar 13 Hilangkan mod_unique_id

cari DirectoryIndex index.html -> DirectoryIndex index.html index.htm index.php

kemudian tambahkan line sebagai berikut :


AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .php

tutup file httpd.conf. kemudian ketikkan :

/usr/local/etc/rc.d/apache22 start

dan uji dengan lynx dengan perintah sebagai berikut :

lynx localhost

hasilnya dapat dilihat sebagai berikut :




Gambar 14 Pengetesan Apache Web Server pada Lynx

1.3 Install MySQL

Check Integritas MySQL

Pengujian integritas mysql-5.5.34.tar.gz seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo mysql-5.5.34.tar.gz. Hal tersebut ditunjukkan sebagai berikut:




Gambar 15 Pengecekan integritas mysql server menggunakan informasi pada distinfo

Dapat dicocokkan nilai SHA256-nya dengan nilai yang tersedia di situs SkySQL. Situs tersebut diakses secara secure (HTTPS). Penulis tidak menemukan koneksi yang secure dan memberikan nilai SHA256 pada mysql.org. Walaupun demikian penulis menemukan nilai SHA256 pada situs SkySQL yang notabenenya merupakan situs salah satu pengembang MySQL dengan dokumentasi yang baik untuk semua released file MySQL. Kemudian nilai MD5 yang ditemukan di situs tersebut dibandingkan dengan nilai SHA256 yang dihitung di client dengan hasil sebagai berikut :




Gambar 16 Nilai hash MD5 dari mysql-5.5.34




Gambar 17 Pengecekan integritas mysql server menggunakan md5 yang direlease

Install MySQL

MySQL merupakan database simpel yang dapat digunakan pada web server. instalasi dapat dijalankan mengikuti langkah berikut :

cd /usr/ports/databases/mysql55-server
make install clean
echo 'mysql_enable="YES"' >> /etc/rc.conf
/usr/local/etc/rc.d/mysql-server start
/usr/local/bin/mysqladmin -u root password 'your-password'

Perhatian password ini merupakan password database yang sebaiknya tidak dilupakan

Apabila lupa, reset password mysql dapat dilakukan dengan mengikuti langkah-langkah seperti pada http://www.cyberciti.biz/faq/mysql-change-root-password/

1.4 Instalasi PHP

Check Integritas PHP

Pengujian integritas php-5.4.21.tar.bz2 seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai SHA256-nya dengan kode PHP dan dicocokkan dengan SHA256 yang terdapat pada file distinfo php-5.4.21.tar.bz2. Hal tersebut ditunjukkan sebagai berikut :




Gambar 18 Pengecekan integritas php menggunakan informasi pada distinfo

Pengujian integritas juga dapat dilakukan dengan mencocokkan nilai MD5 yang tersedia pada situs php dengan hasil perhitungan dengan kode PHP seperti ditunjukkan sebagai berikut:




Gambar 19 Nilai hash MD5 dari php 5.4.21




Gambar 20 Pengecekan integritas PHP menggunakan md5 yang di-release

Install PHP

PHP adalah salah satu script programing yang lazim digunakan pada web server. PHP dapat digunakan pada mesin FreeBSD. Langkah instalasinya antara lain sebagai berikut :

1. masuk ke directory php5

cd /usr/ports/lang/php5
make config

2. pilih apache module

3. kemudian masukkan perintah berikut :

make install clean

4. pilih MySQL and MySQLi

5. kemudian tambahkan extension PHP5 dengan masuk ke directory php5-extensions

cd /usr/ports/lang/php5-extensions/
make config

6. pilih MySQL database Support and MySQLi database Support

7. Terakhir masukkan command berikut

make install clean

1.5 Instalasi WordPress

Check Integritas WordPressM

Pengujian integritas wordpress-3.7.1.tar.gz.md5 seperti pengujian integritas httpd diatas. File unduhannya dapat dihitung nilai MD5-nya dengan kode PHP dan dicocokkan dengan MD5 yang terdapat pada situs. Hal tersebut ditunjukkan sebagai berikut :




Gambar 21 Nilai hash MD5 file wordpress




Gambar 22 Pengecekan integritas wordpress menggunakan md5

Install WordPress

WordPress merupakan CMS (Content Management System) yang sering digunakan untuk blog, namun kini sudah marak digunakan sebagai CMS pada situs apapun. Instalasi wordpress dapat mengikuti langkah sebagai berikut :

cd
fetch http://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
cp ~/wordpress/wp-config-sample.php ~/wordpress/wp-config.php

kemudian atur variabel database pada wordpress dengan perintah berikut :

ee ~wordpress/wp-config.php

atur variabelnya sebagai berikut :

db_name : dbwordpress
db_user : root
db_password : password

perhatian variabel diatas merupakan variabel yang disesuaikan dengan instalasi pada MySQL

Terkahir pindahkan file konfigurasi pada folder kerja dengan command berikut :

mv ~/wordpress/ /usr/local/www/apache22/data/

Hasil Instalasi WordPress



Gambar 23 Website diakses pada browser




Gambar 24 wp-admin login




Gambar 25 wordpress dashboard

2. Hardening

2.1 Menghilangkan Service, Aplikasi, dan Protokol yang tidak diperlukan

Jalankan Modul yang Dibutuhkan Saja

Jalankan hanya modul yang dibutuhkan sebagai web server

Sebagai web server, apache hanya membutuhkan modul sebagai berikut:

- core.c
- prefork.c
- httpd_core.c
- mod_so.c




Gambar 26 Jalankan hanya modul yang dibutuhkan

Lakukan configtest apache untuk memastikan apache tetap berjalan




Gambar 27 Hasil pengecekan ulang apache

Sembunyikan informasi-informasi pada web server

Sembunyikan informasi mengenai server apache yang digunakan, karena informasi ini dapat dimanfaatkan oleh penyerang. Edit file /usr/local/etc/apache22/extra/httpd-default.conf seperti pada gambar berikut. Edit bagian ServerTokens yang tadinya bernila ‘Full’ menjadi ‘Prod’. Seperti terlihat pada Gambar, ServerTokens Full akan menyediakan semua informasi mengenai tipe OS dan modul yang digunakan, sedangkan ‘Prod’ hanya menyediakan least information.




Gambar 28 ServerTokens masih bernilai Full




Gambar 29 ServerTokens diubah menjadi bernilai Prod

Masih pada file yang sama, ubah juga ‘ServerSignatures’ dari bernilai ‘On’ menjadi ‘Off’. Ini akan menyembunyikan informasi mengenai versi server yang digunakan dan lain-lain seperti terlihat pada Gambar berikut.




Gambar 30 ServerSignature masih bernilai On




Gambar 31 ServerSignature bernilai Off

Hilangkan kemungkinan user mendapatkan informasi mengenai file-file yang ada pada server dengan mematikan autoindex pada file yang sama dengan di atas.




Gambar 32 Nonaktifkan autoindex

Tambahkan TraceEnable Off pada file httpd.conf untuk menonaktifkan metoda Trace. Metoda ini sering digunbakan untuk XSS attack.




Gambar 33 Line tambahan untuk file httpd.conf

Sebelum ditambahkan TraceEnable Off, trace dapat dilakukan seperti terlihat pada Gambar di bawah. Proses tracing tidak ditolak.




Gambar 34 Sebelum TraceEnable Off

Setelah ditambahkan, proses tracing ditolak dan menghasilkan halaman error 405.




Gambar 35 Metoda tracing ditolak, error 405

DNS Server Binding pada FreeBSD

FreeBSD menyediakan fasilitas untuk melakukan DNS Server Binding. Edit file /etc/rc.conf seperti pada gambar di bawah ini.




Gambar 36 DNS server binding

2.2 Konfigurasi Users, Groups, dan Autentikasi

Password Hashing

Password yang ada pada server, disimpan pada file /etc/master.passwd




Gambar 37 Ubah isi /etc/master.passwd

Pada Gambar berikut, akan tampak bahwa password disimpan tidak dalam bentuk plaintext, namun dalam bentuk hash value.




Gambar 38 Password disimpan dalam bentuk hash

Pada gambar di atas, password untuk user ‘renard’ disimpan dengan nilai hash. Pada awal hash value, terdapat simbol $6, yang menunjukkan hashing dilakukan dengan SHA256 atau SHA512.

Penggunaan SHA512 dapat diubah-ubah sesuai keinginan (dapat menggunakan SHA256, MD5, blowfish, dan DES hash) pada file /etc/login.conf seperti pada Gambar di bawah.




Gambar 39 SHA512 sebagai format password

SSH Allow User

Untuk hanya memperbolehkan beberapa login melalui remote komputer dengan SSH, dapat dilakukan dengan mengubah file /etc/ssh/sshd_config.

Tambahkan baris baru seperti pada Gambar di bawah untuk memperbolehkan hanya root yang melakukan ssh melalui IP tertentu.




Gambar 40 Menentukan batasan IP remote login root

Setelah baris baru ditambahkan, reload service ssh dengan command service sshd reload pada shell. Perintah-perintah di atas akan menyebabkan remote login dengan user lain tidak dapat dilakukan seperti pada gambar di bawah ini.




Gambar 41 Mencoba remote login selain root

Supaya user lain dapat melakukan login ssh juga, ganti AllowUsers di atas menjadi:




Gambar 42 Memperbolehkan user lain untuk remote login

Cukup tambahkan root@192.168.10.135 dengan user lain dan alamat IP yang diperbolehkan. Setelah menambahkan user, lakukan reload service lagi (service sshd reload)

SSH Securing

Berikut adalah beberapa hal yang dapat dilakukan untuk mengamankan SSH yang digunakan:

Setting /etc/ssh/sshd_config ubah :

– Waktu time-out login

ClientAliveInterval 600
ClientAliveCountMax 0

– Disable rhost file

IgnoreRhosts yes

– Disable host based authentication

HostbasedAuthentication no

– Empty password tidak diperbolehkan

PermitEmptyPasswords no

– Authentication, Uncomment:

LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10




Gambar 43 Menentukan proses autentikasi




Gambar 44 Mematikan hostbased authentication




Gambar 45 Mematikan rhost file




Gambar 46 Melarang password kosong

Disable Root Login

Supaya tidak dapat dilakukan login langsung sebagai root. Privilege root hanya bisa dimiliki oleh suatu user yang ada di group wheel. Group wheel adalah grup yang ada pada FreeBSD yang dapat mengakses privilege root. Atur supaya memang hanya user yang memiliki kepentingan yang ada pada group wheel.

Untuk melakukan hal ini, ubah isi file /etc/ttys, ganti semua secure menjadi insecure.




Gambar 47 Ubah isi file /etc/ttys

Autologout untuk root idle

Untuk membuat supaya ada waktu batasan dimana root tidak melakukan aktivitas, tambahkan baris berisi set autologout = x seperti pada gambar di bawah. Dengan x adalah banyaknya menit dimana root tidak melakukan aktivitas sebelum auto logout dijalankan.




Gambar 48 Tambahan pada file /root/.profile untuk pengaturan batas waktu

2.3 Konfigurasi Kendali untuk Resource

Process Accounting

Process Accounting digunakan untuk melakukan monitoring pada FreeBSD. Melakukan tracking command yang diberikan oleh user.

Log yang dihasilkan dapat dibaca dengan perintah sa FILES

dengan FILES

/var/account/acct

Berikut adalah command yang digunakan untuk mengaktifkan process accounting

# touch /var/account/acct
# chmod 600 /var/account/acct
# accton /var/account/acct
# echo 'accounting_enable="YES"' >> /etc/rc.conf

Berikut adalah contoh saat file acct dipanggil:




Gambar 49 Proses monitoring

Install Port Audit

Fasilitas Port audit dapat digunakan untuk mengawasi port collection pada FreeBSD.

Lakukan perintah sebagai berikut:

cd /usr/ports/ports-mgmt/portaudit && make install clean



Gambar 50 Instalasi Port Audit

/usr/local/sbin/portaudit -Fda



Gambar 51 Menjalankan port audit pertama kali dengan meng-update database auditfile

Berikutnya, hasil port audit -Fda dapat diamati sebagai berikut:




Gambar 52 Hasil proses port audit

Portaudit -Fda digunakan untuk melakukan update database auditfile. Untuk berikutnya, jika hanya ingin melakukan audit saja, cukup dengan perintah portaudit -a

Jika terdapat masalah, user akan disarankan untuk melakukan instalasi ulang secepatnya.

Atur File Permission untuk File dan Direktori pada WordPress.

Untuk File dan Direktori pada WordPress, atur supaya hanya pemilik yang memiliki akses penuh, yang dapat melakukan read dan write. Sedangkan untuk user lain, atur supaya hanya bisa read saja. Hal ini dapat dilakukan dengan menggunakan perintah chmod seperti pada gambar di bawah ini.




Gambar 53 Pengaturan hak akses file wordpress

Khusus untuk file wp-config.php, atur supaya user lain tidak dapat melakukan apapun, seperti pada gambar berikut.




Gambar 54 Pengaturan hak akses file wp-config.php

2.4 Pemasangan Kendali Keamanan Tambahan

Enabling Internet Protocol Firewall (IPFW)

IPFW adalah perintah untuk membantu filter paket IP. IPFW adalah fungsi bawaan dari FreeBSD, namun ter-install dalam modul terpisah sehingga perlu diaktifkan terlebih dahulu. langkah-langkahnya sebagai berikut :

edit file rc.conf dengan perintah berikut :

ee /etc/rc.conf

kemudian tambahkan dua buah baris berikut pada file rc.conf :

firewall_enable="YES"
firewall_script="/usr/local/etc/ipfw.rules"

tutup file rc.conf. Berikutnya memasukkan rules firewall pada /usr/local/etc/ipfw.rules dengan perintah berikut :

ee /usr/local/etc/ipfw.rules

kemudian tambahkan rule berikut pada file ipfw.rules :

IPF="ipfw -q add"
ipfw -q -f flush
#loopback
$IPF 10 allow all from any to any via lo0
$IPF 20 deny all from any to 127.0.0.0/8
$IPF 30 deny all from 127.0.0.0/8 to any
$IPF 40 deny tcp from any to any frag
# statefull
$IPF 50 check-state
$IPF 60 allow tcp from any to any established
$IPF 70 allow all from any to any out keep-state
$IPF 80 allow icmp from any to any
# open port ftp (20,21), ssh (22), mail (25)
# http (80), dns (53) etc
$IPF 110 allow tcp from any to any 21 in
$IPF 120 allow tcp from any to any 21 out
$IPF 130 allow tcp from any to any 22 in
$IPF 140 allow tcp from any to any 22 out
$IPF 150 allow tcp from any to any 25 in
$IPF 160 allow tcp from any to any 25 out
$IPF 170 allow udp from any to any 53 in
$IPF 175 allow tcp from any to any 53 in
$IPF 180 allow udp from any to any 53 out
$IPF 185 allow tcp from any to any 53 out
$IPF 200 allow tcp from any to any 80 in
$IPF 210 allow tcp from any to any 80 out
# deny and log everything
$IPF 500 deny log all from any to any

kemudian lakukan reboot pada mesin FreeBSD

setelah reboot jalankan kembali ipfw.rules dengan command berikut :




Gambar 55 ipfw.rules

terakhir cek apakah rules sudah diimplementasikan oleh mesin FreeBSD dengan :

ipfw list

hasilnya dapat dilihat sebagai berikut :




Gambar 56 Hasil ipfw list

Instalasi Intrusion Detection System (IDS)
1. Tripwire

Tripwire dapat digunakan untuk mengawasi integritas file. Tripwire akan memberikan notifikasi apabila ada file yang diubah atau corrupt. Instalasi tripwire dapat diamati pada gambar berikut.




Gambar 57 Command untuk instalasi tripwire




Gambar 58 Proses Instalasi Tripwire berhasil

2. Advanced Intrusion Detection Environment (AIDE)

Sama seperti tripwire, AIDE digunakan untuk mengecek integritas file. Pengecekan integritas dengan AIDE dilakukan dengan mengecek config file yang ada dan dibandingkan dengan database regex milik AIDE.

Proses instalasi dapat diamati seperti pada gambar berikut :




Gambar 59 Command untuk instalasi AIDE




Gambar 60 Proses Instalasi AIDE berhasil

3. Security Maintenance

3.1 Data backup

Backup server penting dilakukan sebagai langkah mitigasi seandainya terjadi kerusakan pada server, baik kerusakan secara fisik maupun software yang corrupt.

Backup server pada FreeBSD dapat dilakukan dengan menggunakan dump. Dump akan memeriksa file pada filesystem dan menentukan file yang perlu di-backup. File output memiliki tipe data dump dan bisa disimpan pada media lain sebagai backup.

Berikut adalah contoh penggunaan program dump. Pada kasus ini yang dipartisi adalah partisi disk ad0p3 dan di-backup ke /backup/ad0p3.dump.




Gambar 61 Contoh Backup dengan Program Dump

4. Linux/Unix Security

4.1 Patch Management

Patch management diterapkan pada FreeBSD untuk selalu menjamin bahwa server selalu up-to-date, sehingga isu keamanan dapat diminimalisir. Hal ini dilakukan dengan cara terus memperbaharui software yang digunakan pada CPU.

Untuk dapat melakukan fungsi ini, kita akan menggunakan system tools sebagai berikut.

a. Portmanager – tools utama pada FreeBSD yang digunakan untuk melakukan utilitas port update

b. Portsnap – merupakan sistem yang digunakan untuk mendistribusikan FreeBSD ports tree. Portsnap akan memberikan snapshot dari ports tree setiap sekitar satu jam sekali. Snapshot ports ini akan dibangkitkan, dikemas ulang, dan akan ditandatangani secara kriptografik. File yang dihasilkan akan didistribusikan melalui HTTP

c. pkg_version – merupakan daftar dari package yang terinstal dengan versi yang lebih lama dibandingkan yang ada saat ini

ketiga utilitas di atas, akan bekerja bersama untuk menjaga FreeBSD agar tetap up-to-date. Untuk memaksimalkan ketiga utilitas tersebut, berikut adalah langkah-langkah yang akan dilakukan:

Instalasi portmanager
# cd /usr/ports/ports-mgmt/portmanager
# make install clean

Memperbaharui koleksi ports dari FreeBSD

# portsnap fetch extract

Menampilkan daftar ports yang kadaluarsa

# pkg_version -vIL=

Dengan:

- v : mengaktifkan output verbose
- I : menggunakan setting index file untuk menampilkan apakah package sudah kadaluarsa atau tidak (untuk menampilkan hasil lebih cepat)
- L= : membatasi output dari package dengan status flag yang tidak =
- L’<’ : membatasi output dari package dengan status flag yang tidak <

Contoh log hasil command tersebut, adalah:

bash-3.1.17 < needs updating (index has 3.2.17_2)
gettext-0.14.5_2 < needs updating (index has 0.16.1_3)
libtool-1.5.22_2 < needs updating (index has 1.5.22_4)
linux_base-fc-4_9 < needs updating (index has 4_10)

Untuk melakukan update pada ports yang ter-install, akan dijalankan baris perintah sebagai berikut:

# portmanager –u

Baris perintah ini akan melakukan update pada ports dengan urutan berdasarkan pada dependencies ports yang ter-install. Jika port gagal untuk diperbaharui, maka port tersebut akan ditandai “ignored”. Portmanager akan terus memperbaharui semua port yang tidak ditandai dengan flag “ignored”, selama ports tersebut tidak memiliki dependencies yang memiliki flag “ignored”.

Untuk melakukan proses update pada salah satu software saja dapat dilakukan dengan cara sebagai berikut: (contohnya memperbaharui port bash pada shell) ‘
# portmanager shells/bash -l -u –f

Baris perintah ini akan melakukan logging update ports yang dilakukan, dimana semua dependencies yang terkait dengan ports bash ini juga akan dilakukan proses update.

4.2 Application Security Using a Chroot Jail

FreeBSD jail merupakan suatu virtualisasi dari pembagian sistem-sistem yang ada di dalam FreeBSD menjadi suatu bagian yang lebih kecil. Setiap virtualisasi atau bagian kecil tersebut bagaikan berjalan pada masing-masing mesinnya. setiap program yang berjalan pada masing-masing jail tidak dapat dilihat dari program aslinya. Salah satu cara untuk membuat atau memodifikasi jail adalah dengan menggunakan ezjail.
Install ezjail

Pertama lakukan installasi ezjail port

# cd /usr/ports/sysutils/ezjail
# make install clean
# mkdir /usr/(nama folder jail)
# sysinstall

Pada saat sysinstall, lakukan hal-hal berikut.

• Pada menu pilih “Custom”.

• Pilih “Options” dan tujukan kursor ke “Install Root /”. Tekan spasi dan ubah “/” ke “/usr/(nama folder jail)”. Tekan ‘q’ untuk keluar.

• Pilih “5 Distributions” -> “minimal”.

• Pilih “6 Media” , dan pilih media yang digunakan untuk installasi jail

• Jika sudah semua , pilih “7 Commit”.

• Jika muncul pertanyaan, “Visit the general configuration menu for a chance to set any last options?” , pilih NO

Jika berhasil maka akan terbentuk beberapa directory

# cd /usr/jails/webserver
# ls
.cshrc boot libexec rescue tmp
.profile dev media root usr
COPYRIGHT etc mnt sbin var
bin lib proc sys
#

Edit rc.local

Pada host machine, tambahkan di /etc/rc.local :

ifconfig_em1_alias0="inet 192.168.0.240 netmask 255.255.255.255"
jail_set_hostname_allow="NO"
jail_enable="YES"
jail_list="webserver"
jail_interface="em1"
jail_devfs_enable="YES"
jail_procfs_enable="YES"

jail_webserver_rootdir="“/usr/(nama folder jail)"
jail_webserver_hostname="testjail"
jail_webserver_ip="192.168.0.240"
jail_webserver_devfs_ruleset="devfsrules_jail"

Catatan: jika terdapat banyak jail sesuaikan jail_list dengan nama jail yang ada

Edit rc.conf

Edit atau buat rc.conf pada jailnya /usr/jails/webserver/etc/rc.conf :

hostname="testjail"
ifconfig_rl0="inet 192.168.0.240 netmask 255.255.255.0"
defaultrouter="192.168.0.254"
rpcbind_enable="NO"
clear_tmp_enable="YES"
sendmail_enable="YES"
sshd_enable="YES"

Copy resolv.conf
# cp /etc/resolv.conf /usr/(nama folder jail)/etc/

Menjalankan jail
# /etc/rc.d/jail start
Configuring jails:.
Starting jails: testjail.

Jika berhasil , lihat jail yang berjalan sekarang

# jls
JID IP Address Hostname Path
1 192.168.0.240 testjail /usr/(nama folder jail)

Ubah password root
# jexec 1 touch /etc/fstab
# jexec 1 passwd
Changing local password for root
New Password:
Retype New Password:

Edit SSHD_config

Setelah itu buat user baru. aktifkan ssh, pada sshd_config, edit listen address-nya seperti ini :

ListenAddress 192.168.0.240
perintah-perintahnya :
# jexec 1 login
# su
# /etc/rc.d/sshd stop
# ee /etc/ssh/sshd_config
# /etc/rc.d/sshd start

Troubleshooting

Ketika tidak dapat melakukan ping ke jaringan lokal maka tambahkan pada host machine di /etc/sysctl.conf :
security.jail.allow_raw_sockets=1

ketika mencoba menjalankan “named” di dalam freeBSD jail muncul error seperti ini :

/etc/rc.d/named: WARNING: devfs_domount(): Unable to mount devfs on /var/named/dev
devfs rule: ioctl DEVFSIO_RAPPLY: Operation not permitted
devfs rule: ioctl DEVFSIO_RAPPLY: Operation not permitted

untuk mengatasinya, tambahkan baris berikut pada /etc/rc.conf di dalam jail

named_chrootdir=""
Kemudian jalankan perintah berikut pada host machine , sesuaikan dengan lokasi path masing2 jail
# mount -t devfs devfs /usr/jails/dnsserver/var/named/dev/
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule -s 1 applyset
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule apply path null unhide
# devfs -m /usr/jails/dnsserver/var/named/dev/ rule apply path random unhide

Penulis

Alan Yudhautama (23213028)
Elian Daiva (23213021)
Galih Gilang (23213098)
Hadi Rasyid Sono (13209107)
M Ridho Dewanto (23213088)
Mochammad Fadhli Zakiy (23213127)
Muhammad Abduh (23213153)
Muhammad Akbar Jamaludin (23213020)
Renard Xaviero Adhi Pramono (23213031)
Retri Derry (23213057)
Yoko Hugo (23213060)

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)

Instalasi Secure WordPress pada Sistem Operasi Ubuntu

Abstrak

Blog merupakan sebuah situs yang terdiri dari halaman-halaman yang memuat berbagai tulisan dalam format teks yang dapat disisipi gambar dan konten lainnya. Manajemen sistem konten / artikel secara gratis ini tersedia cukup banyak, beberapa diantaranya yang paling populer adalah blogger dan wordpress. Blog digemari banyak orang karena gartis dan kemudahan untuk melakukan konfigurasinya. Namun, seiring perkembangan zaman, sekarang blog menjadi incaran serangan para hacker karena biasanya blog tidak diamankan oleh adminnya. Beberapa contoh serangan terhadap keamanan blog adalah pembobolan akun, SQL injection, Cross-site Scripting, Spaming komentar, Deface, DoS attack, dan masih banyak lagi. Oleh sebab itu pada artikel kali ini akan dibahas mengenai beberapa langkah instalasi wordpress dengan aman pada sistem operasi Ubuntu. Tujuan dari artikel ini adalah agar wordpress yang dibuat dapat terhindar dari serangan-serangan para hacker, walaupun tidak terjamin 100 %.

Secara umum, artikel ini terbagi dalam dua bagian, yaitu bagian 1 menjelaskan instalasi server wordpress dan bagian 2 menjelaskan cara menguatkan pertahanan wordpress (hardening). Bagian 1 diawali dengan proses instalasi Apache, php5, serta Mysql sacara aman dengan membandingkan hash MD5-nya. Berikutnya dijelaskan mengenai proses instalasi wordpress secara aman juga.

Bagian 2 diawali dengan cara mengamankan phpmyadmin. Lalu dijelaskan mengenai cara mengamankan dengan mematikan service yang tidak diperlukan. Selanjutnya akan dijelaskan cara mengecek file log apache. Berikutnya diabahas cara melakukan hashing password. Lalu dijelaskan cara mengaktifkan SSL agar pertukaran data antara server dan client terenkripsi. Selanjutnya akan dijelaskan cara mengaktifkan firewall. Pada kesempatan kali ini, firewall yang digunakan adalah iptables. Berikutnya diabahas cara instalasi SSH dan cara konfigurasinya untuk memberikan akses hanya kepada user tertentu saja.

Pada dasarnya tidak ada standar baku cara mengamankan web server. Pengamanan yang dilakukan akan bergantung dari jenis serangan apa yang ingin diredam. Oleh sebab itu dengan artikel ini diharapkan dapat membantu orang-orang yang ingin mengamankan wordpressnya.

Bagian 1: Instalasi Server WordPress

Proses instalasi merupakan suatu proses yang penting dalam awal pembuatan suatu sistem, oleh karena itu diperlukan suatu keamanan yang dilakukan dari awal instalasi. Untuk mengamankan segala aplikasi desktop yang tidak diperlukan, maka proses instalasi dan download menggunakan Ubuntu server 13.04 yang hanya terdiri dari terminal saja.

Dalam menjaga integritas isi file, download software wordpress dari situs yang terpecaya, dalam hal ini ialah https://wordpress.org. Kemudian, untuk melakukan pengecekan terhadap file wordpress yang telah berhasil di download, dapat digunakan metode menggunakan hash MD5, dimana nilai hash file yang berhasil di download nantinya harus sama dengan hash yang ada pada referensi.

Berikut nilai dari hash yang berasal dari website wordpress.

Gambar a

Gambar 1

Gambar b

Gambar 2

Berikutnya, buka folder dimana terdapat file wordpress-3.7.1.tar.gz, lalu kemudian ketikkan perintah berikut.

md5sum wordpress-3.7.1.tar.gz

Gambar c

Gambar 3

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di download pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikutnya dalam membuat webserver perlu dilakukan penginstallan Apache, php5, dan Mysql. Penginstallan dilakukan dengan menggunakan apt-get install. Setelah melakukan apt-get, setiap hasil installan dengan menggunakan cara ini akan masuk ke dalam temporary folder:

/var/cache/apt/archives

Setelah berjalan proses instalasi tersebut, maka setiap file yang masuk ke dalam folder archives diatas akan mempunyai ekstensi file .deb. Deb merupakan ekstensi dari debian software pack age. Kemudian sama seperti cara yang sebelumnya, lakukan pengecekan setiap file Apache, php5, serta Mysql yang telah terinstall tersebut. Pengecekan juga dilakukan dengan menggunakan hash MD5.

Berikut ini, untuk melakukan pengecekan terhadap file Apache, ketikkan perintah berikut.

md5sum apache2_2.2.22-6ubuntu5.1_i386.deb

Gambar d

Gambar 4

Gambar e

Gambar 5

Gambar fGambar 6

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikut ini, untuk melakukan pengecekan terhadap file php5, ketikkan perintah berikut.

md5sum php5_5.4.9-4ubuntu2.3_all.deb

Gambar g

Gambar 7

Gambar h

Gambar 8

Gambar i

Gambar 9

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Berikut ini, untuk melakukan pengecekan terhadap file Mysql, ketikkan perintah berikut.

md5sum mysql-server_5.5.34-0ubuntu0.13.04.1_all.deb

Gambar j

Gambar 10

Gambar k

Gambar 11

Gambar l

Gambar 12

Setelah itu, bandingkan hasil nilai hash5 antara referensi dengan hasil yang berhasil di install pada Ubuntu.  Pada gambar diatas, dapat dilihat bahwa hasil MD5 yang dihasilkan nilainya sama, hal ini menunjukkan bahwa file yang di download sesuai.

Untuk memeriksa integritas dari file ISO Ubuntu yang diunduh dari internet, nilai MD5 Hash dari file ISO yang diunduh dapat dicocokkan dengan nilai MD5 Hash dari file tersebut pada website resmi Ubuntu. Pada contoh kali ini, digunakan file ISO dari Ubuntu 12.04.1. Cara untuk melakukan penghitungan nilai MD5 Hash adalah dengan mengetikkan perintah sebagai berikut.

 md5sum ubuntu-12.04.1-desktop-i386.iso

Sehingga pada terminal akan muncul nilai MD5 Hash dari file tersebut.

Gambar m

Gambar 13

Selanjutnya, nilai tersebut dicocokkan dengan nilai MD5 Hash file tersebut pada website resmi Ubuntu. Apabila nilainya sama, maka dapat dipastikan bahwa file ISO tersebut terjamin integritasnya.

Gambar n

Gambar 14

Install and Setup Apache2, Php5, Mysql on Ubuntu Server (LAMP)

1. Login sebagai root.

sudo su

Gambar o

Gambar 15

2. Install Mysql 5

apt-get install mysql-server mysql-client

Pada tahap ini akan ditanyakan password untuk root user pada Mysql

Gambar p

 Gambar 16

3. Install Apache2

apt-get install apache2

Gambar q

 Gambar 17

Gambar r

Gambar 18

4. Install PHP5

apt-get install php5 libapache2-mod-php5

Gambar s

Gambar 19

Berikutnya restart Apache2 untuk dapat bekerja dengan PHP5.

Gambar t

Gambar 20

5. Untuk mengetes apakah PHP 5 berjalan dengan baik, buat info.php dalam direktori root “/var/www/”.

nano /var/www/info.php

Didalam info.php, masukkan kode sebagai berikut:

Gambar u

Gambar 21

Kemudian masuk kedalam browser kembali, lalu ketikkan IP server/info.php.

Gambar v

Gambar 22

6. Untuk mendapatkan support Mysql dalam PHP 5, install packages berikut:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Gambar w

Gambar 23

Kemudian restart Apache2 servis:

/etc/init.d/apache2 restart

Gambar x

 Gambar 24

7. (Opsional) Install phpMyAdmin sebagai web interface database Mysql.

Gambar y

Gambar 25

Install WordPress on Ubuntu 13.04 Server

Untuk melakukan instalasi WordPress, pertama kali lakukan login Ubuntu server sebagai root, kemudian lakukan langkah-langkah berikut ini:

1. Login Mysql sebagai root user.

Mysql –u root –p

Gambar z

Gambar 26

2. Membuat database. Ubah database-name menjadi nama database yang diinginkan.

CREATE DATABASE database-name;

3. Membuat user. Ubah database-user menjadi nama user yang diinginkan.

CREATE USER database-user@localhost;

4. Membuat password. Ubah password-here menjadi password yang diinginkan.

SET PASSWORD FOR database-user@localhost= PASSWORD(“password-here”);

Gambar aa

Gambar 27

5. Memberikan privileges kepada user baru.

GRANT ALL PRIVILEGES ON database-name.* TO database-user@localhost IDENTIFIED BY ‘password-here';

Gambar ab

Gambar 28

6. Kemudian refresh dan exit Mysql.

FLUSH PRIVILEGES;

exit

7. Download dan ekstrak software wordpress terbaru.

wget http://wordpress.org/latest.tar.gz

tar -xzvf latest.tar.gz

Gambar ac

Gambar 29

8. Berikutnya copy konfigurasi sample file untuk membuat backup dengan cara sebagai berikut:

 cd wordpress && cp wp-config-sample.php wp-config.php

9. Kemudian lakukan edit pada konfigurasi file dengan cara mengetikkan perintah berikut ini:

nano wp-config.php

10. Kemudian lakukan edit pada file konfigurasi, dimana dilakukan perubahan terhadap database-name, database-user, dan password-here yang telah dibuat sebelumnya.

Gambar ad

Gambar 30

11. Berikutnya untuk mengecek database apa saja yang telah dibuat, dapat dilakukan dengan mengetikkan perintah berikut:

show databases

Gambar aeGambar 31

Selanjutnya dilakukan restart apache dengan memberikan perintah “service apache2 restart”.

12. Pada web browser, buka “localhost/wordpress” sehingga muncul halaman muka dari WordPress.

Selanjutnya dilakukan pembuatan web serta akun admin blog dengan mengisi form yang tersedia.

Gambar af

Gambar 32

(https://assets.digitalocean.com/articles/community/Wordpress-FinishInstall.png)

13. Agar blog dapat diakses oleh orang lain, URL web diubah dengan suatu IP statik yaitu dengan memilih menu Dashboard, klik Settings, klik General, kemudian mengubah WordPress Address (URL) dan Site Address (URL) dengan “[IP address]/wordpress”.

Gambar agGambar 33

14. Untuk menambahkan user baru pada wordpress yang berasal dari client, pertama-tama server perlu melakukan setting terlebih dahulu pada bagian dashboard dari wordpress.

Gambar ahGambar 34

15. Berikut merupakan tampilan wordpress yang telah dibuat Rizka Widyarini dan Mukti Winanda dari dua server yang berbeda.

Gambar ai

 Gambar 35

Gambar aj

Gambar 36

16. Apabila pada web browser dimasukkan alamat http://167.205.67.188/wp-login.php?action=register, akan muncul tampilan sebagai berikut untuk melakukan log in dan sign up akun baru.

Gambar akGambar 37

Bagian 2: Keamanan

Tujuan dari mengamankan adalah agar menghindari server dari akses orang yang tidak berkepentingan dan vulnerabilites dari server tidak dapat dimanfaatkan orang yang tidak berkepentingan.

2.1 Mengamankan PHPMYADMIN

Alamat “localhost/phpmyadmin” pada awalnya dapat diakses oleh semua alamat ip dimana seharusnya database MYSQL tidak boleh diakses oleh user maka diperlukan cara untuk mengamankan agar tidak dapat dimanfaatkan oleh orang yang tidak berkepentingan. Cara untuk mengamankannya adalah sebagai berikut ini.

2.1.1 Kondisi Sebelum Diamankan

 15a

Gambar 38

Dari gambar diatas dapat dilihat bahwa sebelum diamankan user dapat mengakses phpmyadmin dengan membuka alamat “192.168.1.19/phpmyadmin”.

2.1.2 Proses Mengamankan

Untuk melakukan mengamankan “localhost/phpmyadmin” agar hanya dapat diakses di localhost adalah sebagai berikut:

1. Masuk ke direktori “/opt/lampp/etc/extra/httpd-xampp.conf”

2. Edit file httpd-xampp.conf dengan command “sudo gedit httpd-xampp.conf” dan ubah file tersebut menjadi :

#<IfDefine PHP4>

#LoadModule php4_module        modules/libphp4.so

#</IfDefine>

#<IfDefine PHP5>

#LoadModule php5_module        modules/libphp5.so

#</IfDefine>

# We will enable it by default

#<IfDefine PHP>

LoadModule php5_module        modules/libphp5.so

#</IfDefine>

LoadModule perl_module        modules/mod_perl.so

Alias /phpmyadmin “/opt/lampp/phpmyadmin”

Alias /phpsqliteadmin “/opt/lampp/phpsqliteadmin”

# since XAMPP 1.4.3

<Directory “/opt/lampp/phpmyadmin”>

AllowOverride AuthConfig Limit

Require all granted

Allow from 127.0.0.1/8

</Directory>

<Directory “/opt/lampp/phpsqliteadmin”>

AllowOverride AuthConfig Limit

Order allow,deny

#Allow from all

Allow from 127.0.0.1/8

</Directory>

# since LAMPP 1.0RC1

AddType application/x-httpd-php .php .php3 .php4

XBitHack on

# since 0.9.8 we’ve mod_perl

<IfModule mod_perl.c>

AddHandler perl-script .pl

PerlHandler ModPerl::PerlRunPrefork

PerlOptions +ParseHeaders

PerlSendHeader On

</IfModule>

# demo for mod_perl responsehandler

#PerlModule Apache::CurrentTime

#<Location /time>

#      SetHandler modperl

#      PerlResponseHandler Apache::CurrentTime

#</Location>

# AcceptMutex sysvsem is default but on some systems we need this

# thanks to jeff ort for this hint

#AcceptMutex flock

#LockFile /opt/lampp/logs/accept.lock

# this makes mod_dbd happy – oswald, 02aug06

# mod_dbd doesn’t work in Apache 2.2.3: getting always heaps of “glibc detected *** corrupted double-linked list” on shutdown – oswald, 10sep06

#DBDriver sqlite3

#

# New XAMPP security concept

#

<LocationMatch “^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))”>

Order deny,allow

Deny from all

Allow from 127.0.0.1/8

#Allow from ::1 127.0.0.0/8 \

#fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \

#fe80::/10 169.254.0.0/16

ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var

</LocationMatch>

3. Restart service lamppnya. Nanti yang akan terjadi adalah phpmyadmin hanya bisa dibuka di “localhost”.

 2.1.3 Sesudah Mengamankan

Hasil yang didapatkan setelah mengamankan adalah sebagai berikut :

16a

Gambar 39

Dari gambar diatas dapat kita lihat bahwa user yang ingin mengakses alamat “192.168.1.19/phpmyadmin” tidak diperbolehkan karena hak akses phpmyadmin telah kita batasi.

17a

Gambar 40

Dari gambar diatas dapat kita lihat bahwa “localhost/phpmyadmin” hanya dapat diakses pada server.

 2.2 Mengamankan Port Server dengan  Mematikan Service yang tidak diperlukan

Pengamanan port server diperlukan agar port yang tidak dipakai service tidak digunakan oleh orang yang tidak berkepentingan untuk melakukan tindakan yang tidak diharapkan dengan memanfaatkan vulnerabilities server. Cara untuk mengamankannya adalah sebagai berikut.

2.2.1 Sebelum Diamankan

2.2.1.1 Server

Untuk mengecek port yang terbuka, kita gunakan perintah:

netstat -ntl

  18a

Gambar 41

Dari gambar di atas dapat dilihat bahwa:

  • Port 80 (http) dapat diakses oleh semua ip address.
  • Port 443 (https) dapat diakses oleh semua IP.
  • Port 631 memang harus dibuka karena protocol UDP/TCP memerlukan akses terhadap port tersebut.
  • Port 21(ftp) dapat diakses oleh semua ip.

2.2.1.2 User

Sebelum Diamankan dapat dilihat dari sisi user bahwa port yang terbuka adalah 21, 80, 443. Port yang kita butuhkan untuk aktif hanya 80 dan 443. Jadi kita harus mematikan service yang menyebabkan port 21 terbuka.

 19a

Gambar 42

2.2.2 Proses Mengamankan

1. Ubah file autoboot service LAMPP yang telah dibuat dengan perintah “sudo gedit /etc/init.d/lampp” menjadi :

#!/bin/bash

/opt/lampp/lampp startapache

/opt/lampp/lampp startmysql

2.   Kemudian setiap kali reboot maka yang hanya dijalankan hanya service apache dan MYSQLnya saja.

 2.2.3 Sesudah Diamankan

2.2.3.1 Server

20a

Gambar 42

 2.2.3.2 User

 21a

Gambar 43

Dari kedua gambar pada bagian 2.2.3 kita dapat melihat bahwa port yang aktif hanya port 80 dan 443 dan dapat dikatakan bahwa port 21 (ftp) yang tidak digunakan telah diamankan untuk mengurangi vulnerabilities server (prinsip “Least Privilege”).

2.4 Checking Logfile pada Apache

Secara default log pada LAMPP sudah aktif jadi tidak diperlukan lagi pengaturan untuk mengaktifkan log. Log merupakan bagian yang penting untuk dicek berfungsi atau tidaknya karena dari log kita dapat mendeteksi jenis-jenis error atau siapa saja yang masuk ke dalam server. Log terdapat pada bagian “/opt/lampp/logs”.

 22a

Gambar 43

Gambar diatas merupakan contoh dari access log pada server apache. Access log memberikan informasi tentang user dengan ip berapa saja yang melakukan koneksi dan mencatat kegiatan apa saja yang dilakukan.

24a

Gambar 44

Gambar diatas merupakan contoh dari error log pada service LAMPP. Error_log membantu dalam mendebugging service yang tidak jalan.

2.5 Hashing Password

Password merupakan salah satu hal yang penting dalam keamanan informasi. Oleh karena itu agar password menjadi rahasia dan hanya diketahui oleh pemilik id tersebut saja maka diperlukan hashing agar administrator juga tidak tahu isi dari password aslinya. Secara default aplikasi wordpress telah melakukan hashing password pada database MYSQL seperti gambar dibawah ini.

24a

Gambar 45

 2.6 Enabling SSL

Fungsi dari mengaktifkan SSL adalah agar tidak pertukaran data antara server dan client terenkripsi. Berikut ini adalah cara-cara untuk menghidupkan protokol SSL server.

2.6.1 Sebelum Diamankan

25a

Gambar 46

Dapat dilihat pada gambar diatas bahwa protokol yang digunakan masih http biasa.

2.6.2 Proses Mengamankan

1. Download Plugin SSL dari website http://wordpress.org/plugins/wordpress-https/installation/

2. Kemudian extract file yang didownload tersebut

3.  Pindahkan file tersebut ke direktori “/opt/lampp/htdocs/wordpress/wp-content/plugins” dengan perintah “mv direktori_file /opt/lampp/htdocs/wordpress/wp-content/plugins“.

4. Kemudian buka “localhost” kemudian masukkan password admin anda.

5. Klik “Installed Plugins” pada menu seperti gambar dibawah ini.

 26a

Gambar 47

 6. Enable “Wordpress HTTPS” seperti gambar dibawah ini.

27a

Gambar 48

7. Lalu klik “Apply”.

8. Kemudian klik gambar gembok seperti gambar di bawah ini untuk melakukan konfigurasi SSLnya.

28a

Gambar 49

9. Check semua pilihan dan “Save Changes”.

10. Edit file httpd-ssl.conf dengan cara “gedit /opt/lampp/httpd-ssl.conf” kemudian file tersebut ubah menjadi :

# This is the Apache server configuration file providing SSL support.

# It contains the configuration directives to instruct the server how to

# serve pages over an https connection. For detailed information about these

# directives see <URL:http://httpd.apache.org/docs/trunk/mod/mod_ssl.html>

#

# Do NOT simply read the instructions in here without understanding

# what they do.  They’re here only as hints or reminders.  If you are unsure

# consult the online docs. You have been warned.

#

# Required modules: mod_log_config, mod_setenvif, mod_ssl,

#          socache_shmcb_module (for default value of SSLSessionCache)

#

# Pseudo Random Number Generator (PRNG):

# Configure one or more sources to seed the PRNG of the SSL library.

# The seed data should be of good random quality.

# WARNING! On some platforms /dev/random blocks if not enough entropy

# is available. This means you then cannot use the /dev/random device

# because it would lead to very long connection times (as long as

# it requires to make more entropy available). But usually those

# platforms additionally provide a /dev/urandom device which doesn’t

# block. So, if available, use this one instead. Read the mod_ssl User

# Manual for more details.

#

#SSLRandomSeed startup file:/dev/random  512

#SSLRandomSeed startup file:/dev/urandom 512

#SSLRandomSeed connect file:/dev/random  512

#SSLRandomSeed connect file:/dev/urandom 512

#

# When we also provide SSL we have to listen to the

# standard HTTP port (see above) and to the HTTPS port

#

# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two

#       Listen directives: “Listen [::]:443″ and “Listen 0.0.0.0:443″

#

Listen 443

##

##  SSL Global Context

##

##  All SSL configuration in this context applies both to

##  the main server and all SSL-enabled virtual hosts.

##

#   SSL Cipher Suite:

#   List the ciphers that the client is permitted to negotiate.

#   See the mod_ssl documentation for a complete list.

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5

#   Speed-optimized SSL Cipher configuration:

#   If speed is your main concern (on busy HTTPS servers e.g.),

#   you might want to force clients to specific, performance

#   optimized ciphers. In this case, prepend those ciphers

#   to the SSLCipherSuite list, and enable SSLHonorCipherOrder.

#   Caveat: by giving precedence to RC4-SHA and AES128-SHA

#   (as in the example below), most connections will no longer

#   have perfect forward secrecy – if the server’s key is

#   compromised, captures of past or future traffic must be

#   considered compromised, too.

#SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:MEDIUM:!aNULL:!MD5

#SSLHonorCipherOrder on

#   Pass Phrase Dialog:

#   Configure the pass phrase gathering process.

#   The filtering dialog program (`builtin’ is an internal

#   terminal dialog) has to provide the pass phrase on stdout.

SSLPassPhraseDialog  builtin

 

#   Inter-Process Session Cache:

#   Configure the SSL Session Cache: First the mechanism

#   to use and second the expiring timeout (in seconds).

#SSLSessionCache         “dbm:/opt/lampp/logs/ssl_scache”

SSLSessionCache        “shmcb:/opt/lampp/logs/ssl_scache(512000)”

SSLSessionCacheTimeout  300

##

## SSL Virtual Host Context

##

<VirtualHost _default_:443>

#   General setup for the virtual host

#DocumentRoot “/opt/lampp/htdocs”

DocumentRoot “/opt/lampp/htdocs/wordpress”

ServerName 192.168.1.19:443

ServerAdmin you@example.com

ErrorLog “/opt/lampp/logs/error_log”

TransferLog “/opt/lampp/logs/access_log”

#   SSL Engine Switch:

#   Enable/Disable SSL for this virtual host.

SSLEngine on

#   Server Certificate:

#   Point SSLCertificateFile at a PEM encoded certificate.  If

#   the certificate is encrypted, then you will be prompted for a

#   pass phrase.  Note that a kill -HUP will prompt again.  Keep

#   in mind that if you have both an RSA and a DSA certificate you

#   can configure both in parallel (to also allow the use of DSA

#   ciphers, etc.)

#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)

#   require an ECC certificate which can also be configured in

#   parallel.

SSLCertificateFile “/opt/lampp/etc/ssl.crt/server.crt”

#SSLCertificateFile “/opt/lampp/etc/server-dsa.crt”

#SSLCertificateFile “/opt/lampp/etc/server-ecc.crt”

#   Server Private Key:

#   If the key is not combined with the certificate, use this

#   directive to point at the key file.  Keep in mind that if

#   you’ve both a RSA and a DSA private key you can configure

#   both in parallel (to also allow the use of DSA ciphers, etc.)

#   ECC keys, when in use, can also be configured in parallel

SSLCertificateKeyFile “/opt/lampp/etc/ssl.key/server.key”

#SSLCertificateKeyFile “/opt/lampp/etc/server-dsa.key”

#SSLC

#   Server Certificate Chain:

#   Point SSLCertificateChainFile at a file containing the

#   concatenation of PEM encoded CA certificates which form the

#   certificate chain for the server certificate. Alternatively

#   the referenced file can be the same as SSLCertificateFile

#   when the CA certificates are directly appended to the server

#   certificate for convenience.

#SSLCertificateChainFile “/opt/lampp/etc/server-ca.crt”

#   Certificate Authority (CA):

#   Set the CA certificate verification path where to find CA

#   certificates for client authentication or alternatively one

#   huge file containing all of them (file must be PEM encoded)

#   Note: Inside SSLCACertificatePath you need hash symlinks

#         to point to the certificate files. Use the provided

#         Makefile to update the hash symlinks after changes.

#SSLCACertificatePath “/opt/lampp/etc/ssl.crt”

#SSLCACertificateFile “/opt/lampp/etc/ssl.crt/ca-bundle.crt”

#   Certificate Revocation Lists (CRL):

#   Set the CA revocation path where to find CA CRLs for client

#   authentication or alternatively one huge file containing all

#   of them (file must be PEM encoded).

#   The CRL checking mode needs to be configured explicitly

#   through SSLCARevocationCheck (defaults to “none” otherwise).

#   Note: Inside SSLCARevocationPath you need hash symlinks

#         to point to the certificate files. Use the provided

#         Makefile to update the hash symlinks after changes.

#SSLCARevocationPath “/opt/lampp/etc/ssl.crl”

#SSLCARevocationFile “/opt/lampp/etc/ssl.crl/ca-bundle.crl”

#SSLCARevocationCheck chain

#   Client Authentication (Type):

#   Client certificate verification type and depth.  Types are

#   none, optional, require and optional_no_ca.  Depth is a

#   number which specifies how deeply to verify the certificate

#   issuer chain before deciding the certificate is not valid.

#SSLVerifyClient require

#SSLVerifyDepth  10

#   Access Control:

#   With SSLRequire you can do per-directory access control based

#   on arbitrary complex boolean expressions containing server

#   variable checks and other lookup directives.  The syntax is a

#   mixture between C and Perl.  See the mod_ssl documentation

#   for more details.

#<Location />

#SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \

#            and %{SSL_CLIENT_S_DN_O} eq “Snake Oil, Ltd.” \

#            and %{SSL_CLIENT_S_DN_OU} in {“Staff”, “CA”, “Dev”} \

#            and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \

#            and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20       ) \

#           or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/

#</Location>

#   SSL Engine Options:

#   Set various options for the SSL engine.

#   o FakeBasicAuth:

#     Translate the client X.509 into a Basic Authorisation.  This means that

#     the standard Auth/DBMAuth methods can be used for access control.  The

#     user name is the `one line’ version of the client’s X.509 certificate.

#     Note that no password is obtained from the user. Every entry in the user

#     file needs this password: `xxj31ZMTZzkVA’.

#   o ExportCertData:

#     This exports two additional environment variables: SSL_CLIENT_CERT and

#     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the

#     server (always existing) and the client (only existing when client

#     authentication is used). This can be used to import the certificates

#     into CGI scripts.

#   o StdEnvVars:

#     This exports the standard SSL/TLS related `SSL_*’ environment variables.

#     Per default this exportation is switched off for performance reasons,

#     because the extraction step is an expensive operation and is usually

#     useless for serving static content. So one usually enables the

#     exportation for CGI and SSI requests only.

#   o StrictRequire:

#     This denies access when “SSLRequireSSL” or “SSLRequire” applied even

#     under a “Satisfy any” situation, i.e. when it applies access is denied

#     and no other module can change it.

#   o OptRenegotiate:

#     This enables optimized SSL connection renegotiation handling when SSL

#     directives are used in per-directory context.

#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

<FilesMatch “\.(cgi|shtml|phtml|php)$”>

SSLOptions +StdEnvVars

</FilesMatch>

<Directory “/opt/lampp/cgi-bin”>

SSLOptions +StdEnvVars

</Directory>

#   SSL Protocol Adjustments:

#   The safe and default but still SSL/TLS standard compliant shutdown

#   approach is that mod_ssl sends the close notify alert but doesn’t wait for

#   the close notify alert from client. When you need a different shutdown

#   approach you can use one of the following variables:

#   o ssl-unclean-shutdown:

#     This forces an unclean shutdown when the connection is closed, i.e. no

#     SSL close notify alert is sent or allowed to be received.  This violates

#     the SSL/TLS standard but is needed for some brain-dead browsers. Use

#     this when you receive I/O errors because of the standard approach where

#     mod_ssl sends the close notify alert.

#   o ssl-accurate-shutdown:

#     This forces an accurate shutdown when the connection is closed, i.e. a

#     SSL close notify alert is send and mod_ssl waits for the close notify

#     alert of the client. This is 100% SSL/TLS standard compliant, but in

#     practice often causes hanging connections with brain-dead browsers. Use

#     this only for browsers where you know that their SSL implementation

#     works correctly.

#   Notice: Most problems of broken clients are also related to the HTTP

#   keep-alive facility, so you usually additionally want to disable

#   keep-alive for those clients, too. Use variable “nokeepalive” for this.

#   Similarly, one has to force some clients to use HTTP/1.0 to workaround

#   their broken HTTP/1.1 implementation. Use variables “downgrade-1.0″ and

#   “force-response-1.0″ for this.

BrowserMatch “MSIE [2-5]” \

nokeepalive ssl-unclean-shutdown \

downgrade-1.0 force-response-1.0

#   Per-Server Logging:

#   The home of a custom SSL log file. Use this when you want a

#   compact non-error SSL logfile on a virtual host basis.

CustomLog “/opt/lampp/logs/ssl_request_log” \

“%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \”%r\” %b”

</VirtualHost>

 

10. Kemudian untuk menguji SSL yang dibuat dengan menggunakan alamat https://192.168.1.19/wp-login.php?redirect_to=https%3A%2F%2F192.168.1.19%2Fwp-admin%2F&reauth=1”.

11. Akan keluar gambar seperti dibawah ini dan pilih “Proceed anyway”.

29a

Gambar 50

 2.6.3 Sesudah Diamankan

30a

Gambar 51

Dari gambar diatas dapat dilihat bahwa pada saat login pada user telah terkonfigurasi dengan protokol SSL.

2.7 Firewall

Firewall merupakan bagian penting untuk pengamanan jaringan sehingga server harus diinstall firewall agar dapat memfilter yang tidak diijinkan untuk dilewati agar tidak terjadi insiden yang tidak diharapkan. Firewall yang saya gunakan untuk server ubuntu ini adalah iptables. Cara untuk melakukan setting firewall adalah sebagai berikut ini.

2.7.1 Sebelum Pemasangan Firewall

ICMP Protocol Active

 31a

Gambar 52

Dari gambar diatas dapat dilihat bahwa paket ICMP masih aktif sehingga ada kemungkinan server dapat di DOS attack.

 Null Scanning Scanning Active 32a

Gambar 53

Dari gambar diatas dapat kita lihat bahwa port scanning yang dilakukan dengan nmap berhasil yaitu port yang active pada saat ini adalah port 80 (HTTP), 443 (SSL), dan port 22 (SSH).

2.7.2 Proses Pemasangan Firewall

1. Edit file “/etc/rc.local” dengan perintah “gedit /etc/rc.local

2. Kemudian masukkan rules dibawah ini di dalam filenya.

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will “exit 0″ on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.

#Allow HTTP,HTTPS,SSH Packet

iptables -A INPUT -i eth0 -p tcp -m state –state NEW -m multiport –sports ssh,http,https -j ACCEPT

 

#Drop ICMP Packet

iptables -A INPUT -p icmp -j DROP

iptables -A OUTPUT -p icmp -j DROP

 

#Block Port Scan

#iptables -A port-scan -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j RETURN

#iptables -A port-scan -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j RETURN

 

#Get log file

#iptables -N LOGGING

#iptables -A INPUT -j LOGGING

#iptables -A LOGGING -m limit –limit 2/min -j LOG –log-prefix “IPTables Packet Dropped: ” –log-level 7

 

#Block SYN packet CHeck

iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP

 

#Block Force Fragments Packets Check

iptables -A INPUT -f -j DROP

 

#Block Malformed XMAS Packet

iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP

 

#Drop all Null packets

iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP

 

exit 0

 

3. Gunakan perintah “sudo iptables -F” untuk menghapus rule dari iptables.

4. Gunakan perintah “/etc/rc.local restart” untuk merestart rule yang telah diubah.

5. Untuk melihat rules dari iptables yang telah dibuat gunakan perintah “iptables –L –n”.

6. Kemudian start service iptables dengan perintah “sudo service iptables-persistent start”. Service akan automatically di load pada saat awal booting dari sistem operasi.

2.7.3 Sesudah Pemasangan Firewall

ICMP Packet Filtering

33a

Gambar 54

Gambar diatas menunjukan bahwa paket ICMP telah didenied oleh filtering firewall.

Null Scanning Filtering

Perintah untuk melakukan Null scanning adalah “nmap –v SN 192.168.1.1934a

Gambar 55

Dari gambar diatas dapat dilihat bahwa scanning Null telah tidak dapat dilakukan lagi karena telah difiltering oleh firewall.

2.8 Install SSH dan Pengaturan SSH

SSH merupakan digunakan untuk melakukan remote login ke dalam suatu server. Pengamanan yang dilakukan adalah dengan memberikan user tertentu yang dapat mengakses servernya. Cara install ssh adalah sebagai berikut ini.

1. Install SSH Server di Ubuntu Desktop dengan menggunakan perintah “sudo apt-get install “openssh-server”.

2. Konfigurasi file sshnya dengan perintah “sudo nano /etc/ssh/sshd_config”.

3. Kemudian lakukan konfigurasi seperti tabel dibawah ini.

# Package generated configuration file

# See the sshd_config(5) manpage for details

# What ports, IPs and protocols we listen for

Port 22

AllowUsers chandra

# Use these options to restrict which interfaces/protocols sshd will bind to

#ListenAddress ::

#ListenAddress 0.0.0.0

Protocol 2

# HostKeys for protocol version 2

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

#Privilege Separation is turned on for security

UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key

KeyRegenerationInterval 3600

ServerKeyBits 768

# Logging

SyslogFacility AUTH

LogLevel INFO

# Authentication:

LoginGraceTime 120

PermitRootLogin yes

StrictModes yes

RSAAuthentication yes

PubkeyAuthentication yes

#AuthorizedKeysFile  %h/.ssh/authorized_keys

# Don’t read the user’s ~/.rhosts and ~/.shosts files

IgnoreRhosts yes

# For this to work you will also need host keys in /etc/ssh_known_hosts

RhostsRSAAuthentication no

# similar for protocol version 2

HostbasedAuthentication no

# Uncomment if you don’t trust ~/.ssh/known_hosts for RhostsRSAAuthentication

#IgnoreUserKnownHosts yes

 

# To enable empty passwords, change to yes (NOT RECOMMENDED)

PermitEmptyPasswords no

 

# Change to yes to enable challenge-response passwords (beware issues with

# some PAM modules and threads)

ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords

#PasswordAuthentication yes

# Kerberos options

#KerberosAuthentication no

#KerberosGetAFSToken no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

# GSSAPI options

#GSSAPIAuthentication no

#GSSAPICleanupCredentials yes

X11Forwarding yes

X11DisplayOffset 10

PrintMotd no

PrintLastLog yes

TCPKeepAlive yes

#UseLogin no

#MaxStartups 10:30:60

#Banner /etc/issue.net

# Allow client to pass locale environment variables

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

# Set this to ‘yes’ to enable PAM authentication, account processing,

# and session processing. If this is enabled, PAM authentication will

# be allowed through the ChallengeResponseAuthentication and

# PasswordAuthentication.  Depending on your PAM configuration,

# PAM authentication via ChallengeResponseAuthentication may bypass

# the setting of “PermitRootLogin without-password”.

# If you just want the PAM account and session checks to run without

# PAM authentication, then enable this but set PasswordAuthentication

# and ChallengeResponseAuthentication to ‘no’.

UsePAM yes

4. Buatlah user dengan nama “chandra” seperti gambar dibawah ini dengan mengetikkan perintah “adduser chandra”. 35a

Gambar 56

 5. Ikutin langkah-langkah seperti mengisi password dan lainnya.

6. Kemudian berikan perintah “service ssh start”. Service ssh akan selalu diload pada awal booting dari sistem operasinya. Kemudian buka putty untuk melakukan remote access.

7. Masukkan ip address server “192.168.1.19” dan buat nama saved sessions apa saja. Lalu tekan “Open” pada bagian bawah.

 36a

Gambar 57

8. Tekan “Yes” untuk melakukan instalasi RSA key pada client.

37a

Gambar 58

9. Kemudian masukkan username dan password dengan username chandra yang telah buat seperti gambar dibawah ini.

38a

Gambar 59

10. Username yang dapat dimasukan hanyalah username “chandra” karena di dalam file “/etc/ssh/sshd_config” kita telah melakukan pengaturan “AllowUsers chandra” sehingga hanya user dengan nama chandra yang diperbolehkan untuk login pada SSH. Berikut ini adalah jika login dengan username milik ardy maka tidak akan dapat melakukan remote login.

39a

Gambar 60

Dimana jika tidak dilakukan pengaturan tersebut hasilnya adalah sebagai berikut ini.

40a

Gambar 61

11. Dengan begitu berarti kita telah mengamankan server karena hanya user biasa yang dapat melakukan login dengan SSH.

 

Referensi:

  1. https://help.ubuntu.com/community/HowToMD5SUM
  2. http://serverfault.com/questions/136458/why-am-i-getting-403-forbidden-after-enabling-https-for-apache-on-mac-os-x
  3. http://wordpress.org/plugins/wordpress-https/installation/
  4. http://www.howtogeek.com/howto/ubuntu/change-ubuntu-server-from-dhcp-to-a-static-ip-address/
  5. http://ubuntuforums.org/showthread.php?t=1933974
  6. https://bbs.archlinux.org/viewtopic.php?pid=645922
  7. https://www.digitalocean.com/community/articles/how-to-set-up-a-firewall-using-ip-tables-on-ubuntu-12-04
  8. http://www.liberiangeek.net/2012/03/enable-ssh-secure-shell-in-ubuntu-12-04-precise-pangolin/
  9. http://ubuntuforums.org/showthread.php?t=159661
  10. http://www.techrepublic.com/blog/10-things/10-iptables-rules-to-help-secure-your-linux-box/

Artikel ini dibuat oleh:

  1. Rizka Widyarini-23213018
  2. Ardy Pratama-23213056
  3. Muhammad Erza Aminanto-23213058
  4. Harry Chandra-23213066
  5. Sundari Mega-23213069
  6. Dea Rahmatia-23213084
  7. Mukti Winanda-23213094
  8. Pertiwi Sapta Rini-23213095
  9. Alissa Ully Ashar-23213129

Disable Local Administrator Account

Disable Local Administrator

Oleh:

Hadi Rasyid Sono

Muhammad Ridho Dewanto

Yoko Hugo

 Disable local administrator merupakan langkah untuk menonaktifkan akun administrator untuk menghindari dimanfaatkannya akun administrator oleh penyerang. Disable local administrator dapat dilakukan cukup dengan langkah-langkah sederhana.

Ketika akan login pada Windows, terdapat beberapa pilihan akun yang bisa dipilih untuk melakukan login. Salah satu akun yang bisa dipilih yaitu akun yang memiliki akses privilege yang lebih tinggi, yang disebut local administrator account. Akun ini memiliki akses lebih tinggi untuk membaca, menulis, atau menjalankan program atau tertentu yang tidak bisa dilakukan user biasa. Akun inilah yang biasa disalahgunakan penyerang untuk mengeksploitasi sistem. Dengan memanfaatkan akun ini, penyerang dapat menjalankan malicious code untuk reformat harddisk, menghapus file, atau membuat akun baru dengan administrative privileges untuk kepentingan jahat.

Pada umunya, dalam menjalankan pekerjaan sehari-hari tidak diperlukan tingkat privilege sebagaimana local administrator account. Oleh karena itu, sebaiknya pengguna menggunakan akun biasa dengan privilege sesuai dengan kebutuhan pekerjaan. Dalam keamanan informasi terdapat konsep Principle of Least Privilege, yang berarti pengguna menggunakan akun yang memiliki batas akses minimum sesuai kebutuhan pekerjaannya. Local administrator account yang sedang tidak dipakai sebaiknya dimatikan untuk mengurangi vulnerabilities.

Berikut akan dijabarkan langkah-langkah untuk disable local administrator account pada Windows Vista & 7 Professional, Business, Ultimate, and Enterprise, and Windows 8.

  1. Klik kanan pada ikon My Computer
  2. Pilih Manage

3. Jika diminta izin oleh User account Control Scren, klik tombol Yes.

4. Layar Computer Management akan terbuka. Pilih folder System Tools, kemudian folder Local Users and Group, kemudian klik pada folder Users. Pada bagian kanan akan terlihat daftar akun pada komputer kita, termasuk Administrator account.

5. Klik kanan pada Administrator account dan klik Properties pada pilihan menu sebagaimana gambar di bawah.

6. Layar Administrator Properties akan terbuka seperti gambar di bawah.

 Aktifkan tanda check pada checkbox Account is disable jika ingin menonaktifkan Local Administrator account.

7. Klik tombol OK kemudian keluar dari layar Computer Management.

 

Referensi:

CMU (2006). Windows Administrator Account Guidelines. [Online], Available: http://www.cmu.edu/iso/governance/guidelines/win-admin.html [Accessed: 5 November 2013]

Lawrence Abrams (2010). How to Enable and Disable Windows Administrator Account. [Online], Available: http://www.bleepingcomputer.com/tutorials/enable-disable-windows-administrator-account/ [Accessed: 5 November 2013]

Mitigation Strategy #13 – Centralised and Time-Synchronised Logging of Allowed and Blocked Network Activity

Pendahuluan
Tidak ada satu pun strategi mitigasi yang mampu mencegah gangguan siber. Namun, diperlukan banyak strategi mitigasi yang dilakukan yang diharapkan mampu menempatkan diri dalam tiga tahap gangguan siber (tahap 1 – musuh yang melakukan pengintaian kepada user yang terpilih, tahap 2 – musuh yang biasanya menggunakan akun yang dikompromikan untuk mengeksploitasi kelemahan, dan tahap 3 – musuh yang menggunakan file arsip RAR/zip untuk mengkompresi dan mengenkripsi salinan dari informasi sensitif).
Penjelasan Teknik
Salah satu mitigasi yang dilakukan adalah pencatatan yang terpusat dan tersinkronisasi waktu pada aktivitas jaringan yang diperbolehkan dan diblok dengan analisis pencatatan aktual, penyimpanan catatan sekurangnya 18 bulan. Pencatatan penting meliputi DNS server, web proxy logs yang berisikan koneksi detail mencakup user-agent values, DHCP leases, firewall logs yang mana mendetailkan lalu lintas masuk dan keluar jaringan organisasi, dan data alir jaringan. Target penyerangan dari berbagai gangguan siber perlu dipantau aktivitas jaringannya demi mendapatkan info diserang atau tidaknya agar penanganan dapat dilakukan dengan segera.
HTTP traffic
HTTP traffic ini dilakukan agar mengetahui aktivitas penjelajahan dunia maya yang menggunakan HTTP sebagai protokolnya. Hal ini dilakukan sebagai bentuk antisipasi karena target serangan sering menggunakannya. Ada beberapa software yang dapat digunakan untuk melakukan pemantauan HTTP traffic ini. Di antaranya ada wireshark dan fiddler. Contoh pemantauan dapat dilihat pada gambar di bawah ini.

Contoh Pemakaian software Fiddler dalam pemantauan HTTP traffic 

DHCP leases (penyewaan Dynamic Host Configuration Protocol)
Dynamic Host Configuration Protocol (DHCP) adalah sebuah protokol standardisasi jaringan menggunakan jaringan IP yang secara dinamis mengatur IP address dan informasi lain yang dibutuhkan untuk komunikasi internet. DHCP ini juga merupakan layanan yang secara otomatis memberikan nomor IP kepada komputer yang memintanya. DHCP membolehkan komputer dan devais lainnya untuk menerima sebuah IP address secara otomatis dari server DHCP pusat, mengurangi kebutuhan untuk jaringan administrator atau pengguna dari memiliki menjadi mengatur aturan secara manual. Komputer yang memberikan nomor IP disebut sebagai DHCP server, sedangkan komputer yang meminta nomor IP disebut sebagai DHCP Client. Dengan demikian administrator tidak perlu lagi harus memberikan nomor IP secara manual pada saat konfigurasi TCP/IP, tapi cukup dengan memberikan referensi kepada DHCP server. Pada saat kedua DHCP client dihidupkan, maka komputer tersebut melakukan request ke DHCP-server untuk mendapatkan nomor IP. DHCP menjawab dengan memberikan nomor IP yang ada di database DHCP. DHCP Server setelah memberikan nomor IP, maka server meminjamkan nomor IP yang ada ke DHCP-Client dan mencoret nomor IP tersebut dari daftar pool. Nomor IP diberikan bersama dengan subnet mask dan default gateway. Jika tidak ada nomor IP yang dapat diberikan, maka client tidak dapat menginisialisasi TCP/IP, dengan sendirinya tidak dapat tersambung pada jaringan tersebut.
Kelebihan DHCP
1. Memudahkan dalam transfer data kepada PC client lain atau PC server
2. DHCP menyediakan alamat-alamat IP secara dinamis dan konfigurasi lain. DHCP ini didesain untuk melayani network yang besar dan konfigurasi TCP/IP yang kompleks.
3. DHCP memungkin suatu client menggunakan alamat IP yang reusable, artinya bisa dipakai oleh client yang lain jika client tidak sedang menggunakannya (off).
4. DHCP memungkiinkan suatu client menggunakan satu alamat IP untuk jangka waktu tertentu dari server.
5. DHCP akan memberikan satu alamat IP dan parameter-parameter konfigurasi lainnya kepada client.
Pencatatan DHCP log ini bertujuan agar dapat menelusuri serangan-serangan yang mungkin terjadi. Hampir sama dengan log lainnya, catatan ini juga memberi kita informasi
Log DNS Server
Melakukan pencatatan ini, secara cepat mampu mengidentifikasikan apakah sebuah mesin terinfeksi, diserang, atau mengalami gangguan siber. Sebagai contohnya, hal ini dilakukan dengan mengeksekusi command DNS server activity yang sedang terhubung pada server /var/log/messages files : #rndc querylog. Contoh potongan log file (yang didapat dari situs lain):
Log DNS dari situs http://www.linuxnix.com/2009/11/how-to-log-dns-server-activity.html

Firewall logs
Instalasi firewall yang dilakukan belumlah cukup dalam mengatasi gangguan siber. Dalam hal ini, pemantauan file log firewall sangatlah perlu dilakukan secara berkelanjutan. Dengan meninjau kembali log firewall, kita dapat menentukan apakah IP address baru mencoba untuk menggali jaringan dan juga memungkinkan membuat aturan dalam firewall agar lebih kuat dalam menghadapi serangan. Setelah itu, kita juga dapat menentukan penelusuran “penggalian” tersebut dan melakukan aksi untuk menghadapi masalah yang mungkin dihadapi pada saat itu ataupun mungkin setelahnya. Seluruh informasi log firewall dicatat pada logging server secara terpusat atau lokal. Kita harusnya dapat meninjau log tersebut secara rutin (harian), dan lebih disukai hal itu dilakukan pagi hari, untuk melihat aktivitas yang dinilai mencurigakan yang mungkin terjadi pada malam hari. Inilah beberapa hal-hal mendasar yang harus dilakukan:
Lihat IP address yang ditolak dan di-drop, telusuri dari manakah mereka berasa. Untuk mengetahuinya, coba untuk menyelesaikan IP address dengan sebuah nama menggunakan ping –a IP address. Jika hal itu benar, kita dapat menyelesaikannya dengan “Who Is” database, panggil pemiliknya, dan cari tahu mengapa seseorang pada situsnya menggali port kita. Sering pemiliknya berupa ISP, yang dapat menunjukkan pelaku pada “penggalian” tersebut jika si pelaku merupakan customer dari ISP tersebut.
Lihat pada login yang tidak berhasil ke firewall kita atau ke mission-critical server yang melindunginya. Jika kita melihat banyak sekali kegagalan login dari domain yang sama, kita mungkin dapat menuliskan suatu aturan untuk men-drop seluruh koneksi dari domain atau IP address. Sebelum melakukannya, pastikan IP address tidak di-spoof.
Lihat pada koneksi outbound yang mencurigakan. Sebagai contoh, koneksi outbound datang dari server jejaring publik dapat menjadi sebuah indikasi bahwa penyusup melancarkan sebuah serangan terhadap seseorang lainnya dari web server.
Lihat pada paket source-routed. Paket dengan sumber alamat internal ke jaringan yang aslinya dari luar jaringan dapat mengindikasikan bahwa seseorang berupaya untuk menipu satu dari alamat internal kita dengan tujuan untuk memperoleh akses ke jaringan internal kita.
Jika pemeriksaan log dilakukan tiap hari, kita akan mendapatkan hal yang wajar atau tidak dalam koneksi.
Berikut adalah cara untuk memeriksa log pada Windows Firewall. Buka direktori C:\Windows\System32\LogFiles\Firewall lalu cek isi file pfirewall.log.

Isi File pfirewall.log

Referensi:

fiddler2.com
http://www.linuxnix.com/2009/11/how-to-log-dns-server-activity.html
http://www.zdnet.com/news/read-your-firewall-logs/298230
http://hadi27.wordpress.com/pengertian-dan-kelebihan-dhcp/
http://threatsim.com/2011/12/19/fighting-advanced-attacker-9-security-controls-add-network/
http://social.technet.microsoft.com/Forums/windowsserver/en-US/f786b2aa-0045-4010-b433-50026895ae8a/logging-dns-server-queries?forum=winservergen

Kelompok:
Yoko Hugo – 23213060
Muhammad Ridho Dewanto – 23213088
Hadi Rasyid Sono – 23213154

Server application security configuration hardening

Server merupakan sebuah perangkat/mesin dengan sistem komputer untuk memberikan fasilitas layanan tertentu di dalam jaringan komputer. Aspek keamanan menjadi faktor yang penting untuk diperhatikan pada sebuah server dikarenakan berbagai serangan dari luar sering diluncurkan dengan memanfaatkan vulnerability yang ada pada server. Serangan yang timbul dapat mengakibatkan hal yang fatal terhadap bisnis suatu organisasi. Oleh karena itu, perlu dilakukan proses “hardening” untuk menambah tingkat keamanan pada server. Istilah “hardening” secara umum berarti melakukan proses pengerasan suatu lapisan yang lembut sehingga lapisan tersebut menjadi lebih kuat dan lebih tahan terhadap kerusakan. Prinsip itu juga yang digunakan untuk menerapkan hardening server yang berpengaruh terhadap keamanan server. Sebelum melanjutkan pembahasan mengenai hardening konfigurasi pada aplikasi server, akan dibahas terlebih dahulu pengertian server, jenis-jenis server, dan bagaimana melakukan hardening.

Gambar 1. [1]

Pengertian Server

Secara garis besar, server dibagi menjadi 3 macam yaitu:

1. application server

application server (server aplikasi) yang juga disebut appserver merupakan server yang mempunyai sebuah program untuk menangani berbagai operasi aplikasi antara user dan database (misalnya aplikasi bisnis dari organisasi). Berikut adalah ilustrasi operasi application server.

2. Data Server

Data server atau sering disebut database server merupakan server yang menyediakan layanan database dan melakukan beberapa task seperti analisa data, penyimpanan data, pengarsipan data, manipulasi, dan beberapa fungsi lainnya yang menggunakan arsitektur client/server.

3. proxy server

Proxy server dapat dikatakan sebagai server penghubung antara aplikasi pada klien dan aplikasi pada server yang ada diluar (atau server yang ingin diakses oleh client).

Mengapa server application?

Menurut Curtis Coleman, MSIA, CISSP, CISM direktur Global IT Governance dari perusahaan Seagate Technology [2] mengatakan bahwa kerawanan yang paling berbahaya pada perusahaan besar yang memiliki jaringan luas adalah pada aplikasinya. Sistem keamanaan telah  banyak terfokus pada antivirus dan keamanan jaringan, tapi bagian yang amat merisaukan adalah  transaksi bisnis yang memiliki data yang sangat berharga (valuable). Sistem keamanan pada Aplikasi merupakan tren masa depan yang dapat dikatakan sebagai era baru setelah era anti Virus dan era keamanan jaringan.

Penggunaan firewall dan SSL bukan menjadi jaminan bahwa pengamanan data dan aplikasi dapat terjaga dengan baik. Menurut [2], berdasarkan hasil pengecekan dengan menggunakan AppScan didapatkan lebih dari 1000 aplikasi yang telah memiliki firewall dan solusi enkripsi memiliki tingkat kerawanan rata-rata 98%. Oleh karena itu mengapa keamanan aplikasi merupakan obyek yang sangat penting, diantaranya:

1. frekuensi kejadian; sebanyak dua dari 4 website pada perusahaan bisnis rawan untuk dibobol.

2. Tingkat penembusan; sebanyak 75% para hacker dapat menembus sampai ke level aplikasi

3. Tidak terdeteksi; Perangkat untuk QA testing tidak didesain dengan baik untuk mendeteksi lubang keamanan pada suatu aplikasi.

4. Kerugian yang berakibat fatal; Keamanan pada aplikasi tidak dapat dijaga dengan baik rentan terhadap serangan dan eksploitasi. Ketika telah terjadi eksploitasi, maka kegiatan bisnis dari suatu perusahaan akan terganggu yang akan mengakibatkan customer value dan kepercayaan customer menjadi semakin menurun. Hal ini akan sangat berdampak terhadap performa perusahaan itu sendiri.

Kerentanan pada Aplikasi

Menurut Eugene Lebanidze [3] ada 10 besar kerawanan pada aplikasi, yaitu:

1. Unvalidated Input

   Unvalidated input adalah jenis kerawanan yang cukup sering terjadi sehingga akan menimbulkan masalah/kerusakan yang sangat serius. Semua aplikasi berbasis web harus dipastikan dapat menangani permasalahan unvalidated input sehingga menghindari adanya unauthorized user. Jika aplikasi tidak dapat memvalidasi dengan baik, maka ketika penyerang mempunyai kesempatan untuk masuk, komponen aplikasi bagian belakang seperti database dapat diserang dengan mudah. Beberapa poin pada kerawanan pertama:

  • HTTP request dari browse ke web apps

Bentuk masukan dalam aplikasi Web adalah URL, Querystring, From Fields, HIdden Fields, Cookies, Headers. Palikasi web menggunakan informasi ini untuk generate halaman web.

  • Attacker dapat mengubah semua jenis request

2. Broken Access Control

   Access Control yang baik dapat mencegah adanya unauthorized user mengakses informasi maupun data perusahaan. Akan tetapi ketika Access Control ini diasalahgunakan atau tidak berjalan dengan baik maka penyerang/unautorized user dapat mengakses informasi sehingga mengganggu CIA (Confidentiality, Integrity, Availability) dari suatu data maupun informasi itu sendiri. Kunci untuk menangani kerawanan ini melalui kebijaksanaan untuk access control dan dapat dilakukan dengan menggunakan two-way authentication.

3. Broken Authentication dan Session Management

4. Cross Site Scripting

5. Buffer Overflow

6. Injection Flaws

7. Improper Error Handling

8. Insecure Storage

9. Denial of Service

10. Insecure Configuration Management

Beberapa Teknik Hardening Server

Pentingnya menjaga keamanan jaringan maupun server harus dipahami oleh semua elemen di perusahaan sehingga timbulnya “awareness” terhadap permasalahan keamanan dan apa saja yang menimbulkan kerentanan terhadap sistem keamanan tersebut. Berikut adalah beberapa teknik untuk melakukan server hardening:

– Gunakan data encryption untuk komunikasi
– Hindari penggunaan protokol yang tidak aman yang mengirim informasi atau password dalam bentuk plain text (misalnya UDP)
– Hindari penggunaan software yang tidak diperlukan pada server
– Upgrade OS yang digunakan terutama security patches.
– Akun user sebaiknya memiliki password yang cukup kuat dan lakukan penggantian password secara berkala dan tidak menggunakan kembali password yang pernah digunakan.
– Kunci akun ketika terjadi event dimana terlalu banyak terjadi failure login.
– SSH hardening :
– ubah port dari default menjadi non-standard
– Disable root login secara langsung.  Mengubah lebel menjadi root hanya jika dibutuhkan.
– Layanan yang tidak dibutuhkan sebaiknya dinonaktifkan.
– Hardening sysctl.conf
– Server hardening dengan melakukan instalasi Root Kit Hunter dan ChrootKit hunter.
– Minimalisasi membuka port jaringan menjadi hanya yang dibutuhkan saja
– Instal Logwatch dan review logwatch email setiap hari. Hal ini untuk menginvestigasi jika terjadi aktivitas yang berbahaya pada server
– Gunakan firewall, IPS, dan IDS untuk menambah keamanan pada server
– Instal Linux Socket Monitor untuk mendeteksi ketika adanya socket baru yang dibuat pada sistem. Pembuatan socket baru dapat mengungkapkan aktivitas hacker pada sistem.
– Batasi akses pengguna sehingga hanya dapat mengakses yang dibutuhkan saja.
– Monitor log server

Software untuk melakukan hardening.

1. Basille Linux

Program hardening Bastille mengunci OS, secara aktif melakukan konfigurasi sistem untuk meningkatkan keamanan dan mengurangi  kerentanannya.

Bastille mensupport Red Hat (Fedora Core, Enterprise, and Numbered/Classic), SUSE, Debian, Gentoo, dan Mandrake dengan HPUX.

User/administrator diperbolehkan untuk memilih cara malakukan hardening pada OS.  Pada setting default hardeningnya, Bastille akan menanyakan apakah user memiliki pertanyaan, menjelaskan topic akan pertanyaan tersebut, dan membuat kebijakan berdasarkan jawaban user. Kebijakan tersebut akan diterapkan ke sistem. Dalam mode assessmentnya, Bastille membuat laporan yang dapat digunakan user untuk mempelajari lebih lanjut mengenai setting keamanan yang digunakan dan juga memberikan informasi ke user mengenai setting mana yang perlu diperketat.

2. JASS untuk Solaris systems

SolarisTM Security Toolkit, yang dikenal juga dengan JumpStartTM Architecture and Security Scripts (JASS) toolkit, menyediakan mekanisme yang fleksibel dan ekstensibel untuk meminimasi, melakukan hardening, dan mengamankan sistem Solaris Operating Environment systems. Goal utama pengembangan toolkit ini adalah untuk menyederhanakan dan meng-otomatis-kan proses pengamanan Solaris system.

Toolkit ini dikembangkan oleh anggota Enterprise Engineering and Professional Services teams, yang berdasarkan best practices keamanan yang telah diuji, dan pengalaman pengguna yang dikumpulkan selama bertahun-tahun.

3. Syhunt Apache/PHP Hardener

Syhunt Apache/PHP Hardener digunakan untuk melakukan evaluasi ancaman keamanan dan identifikasi countermeasure yang sesuai pada tahap konfigurasi web server, sehingga menyediakan proteksi ekstra terhadap web hacking dan merupakan level tertinggi keamanan aplikasi. Berikut ini merupakan fitur utama Syhunt.

  • Memeriksa konfigurasi keamanan web server dengan melakukan hampir 50 pemeriksaan keamanan
  • Menyediakan analisis heuristic file konfigurasi web server untuk mendeteksi error pada konfigurasi keamanan
  • Men-support file konfigurasi Apache dan PHP
  • Memproduksi laporan HTML yang simple dan mudah dimengerti
  • Melakukan update secara otomatis.

 

Oleh:  Alissa 23213129 & Pertiwi Sapta Rini 23213095

Referensi:

[1]  System Hardening Services [Online]. Available : http://www.secure-bytes.com/hardening+services.php

[2]  Coleman Curtis. Case Study: An Evolution of Putting Security into SDLC. Available: http://www.owasp.org/docroot/owasp/misc/COLEMAN-Putting_Security_IntoSDLS-OWASP_v2.ppt

[3]  Lebanidze Eugene.  Securing Enterprise Web Application at the Source. Available: http://www.owasp.org/docroot/owasp/misc/Securing_Enterprise_Web_Applications_at_the_Source.pdf

[4]  Akhmad Agus, et al. Sistem Keamanan pada Pengembangan Sistem Informasi. Available: http://directory.umm.ac.id/SI_UKM/125M-07-final1.0.pdf

[5]  http://www.bastille-linux.org/

[6] http://www.securityfocus.com/tools/2250/

Web Domain Whitelisting for HTTPS/SSL Domain

Proses whitelisting web domain bertujuan untuk membatasi akses internet hanya pada website yang terdapat dalam daftar putih (whitelist) tersebut. Proses whitelist website ini umumnya dilakukan menggunakan aplikasi tertentu. Dengan menggunakan aplikasi whitelisting yang terpercaya, whitelisting juga dapat dilakukan pada website yang berbasis HTTPS / SSL tanpa adanya intrusi dari aplikasi tersebut, sehingga data yang dikomunikasikan tetap terenkripsi tanpa terbaca oleh aplikasi whitelisting tersebut.

HTTPS

Dewasa ini, metode penyerangan melalui dunia maya semakin beragam dan akibat yang ditimbulkan pun semakin luas, baik secara langsung maupun tidak langsung. Salah satu jalur penyerangan yang paling mudah ialah melalui website, terutama karena tingkat penggunaannya yang sangat tinggi dan mencakup sebagian besar khalayak manusia. Berbagai usaha telah dilakukan untuk meningkatkan keamanan dari sisi website, salah satunya ialah penggabungan protokol HTTP dengan SSL menjadi protokol komunikasi yang lebih aman, yakni HTTPS.

HTTP merupakan protokol aplikasi yang menjadi landasan protokol komunikasi world wide web (www). Sementara itu, Transport Layer Security (TLS) / Secure Socket Layer (SSL) ialah protokol kriptografi yang digunakan untuk meningkatkan keamanan pada komunikasi melalui internet [1]. Kedua protokol ini terletak pada layer aplikasi model TCP / IP, seperti dapat dilihat pada gambar di bawah ini,

tcpip

Ide awal dari HTTPS (HTTP Secure) ialah mengintegrasikan protokol HTTP dengan kapabilitas keamanan yang dimiliki TLS / SSL sehingga menghasilkan protokol komunikasi internet yang jauh lebih aman. Karena tingkat keamanannya ini, HTTPS umum digunakan untuk menyediakan layanan yang membutuhkan keamanan lebih, seperti situs perbankan atau online shopping. Demikian perbedaan singkat antara HTTP dan HTTPS [2],

  • Teknis: url pada HTTP dimulai dengan “http://”, sementara url pada HTTPS dimulai dengan “https://”. Selain itu, HTTP menggunakan port 80 untuk komunikasi, sementara HTTPS menggunakan port 443.
  • HTTPS menggunakan proses enkripsi, sementara HTTP tidak.
  • HTTPS membutuhkan sertifikasi, sementara HTTP tidak.

Perbedaan yang mempengaruhi level keamanan ialah dua poin terakhir, terutama karena server dari sebuah HTTPS host memerlukan sertifikasi kunci publik yang umumnya diberikan oleh pihak ketiga yang terpercaya. Berikut ialah langkah-langkah protokol komunikasi HTTPS antara client dan server secara umum,

  1. Client melakukan koneksi awal
  2. Server menjawab koneksi awal dengan memberikan daftar metode enkripsi yang dapat dilakukan
  3. Client memilih metode enkripsi serta mengirimkan sertifikasi untuk otentikasi identitas
  4. Server mengirimkan sertifikasi web-nya untuk otentikasi identitas
  5. Client dan server saling bertukar informasi menggunakan metode enkripsi yang telah disetujui
  6. Koneksi ditutup

Dapat kita lihat bahwa koneksi HTTPS akan lebih aman dibandingkan koneksi HTTP, karena menggunakan enkripsi dan pertukaran sertifikat sebagai otentikasi. Namun, hal ini masih kurang karena intrusi terhadap dunia maya masih dapat dilakukan, terutama pada tahap pengintaian serta pemaketan data yang akan dicuri [3]. Salah satu proses mitigasi yang dapat dilakukan untuk mengurangi risiko ini ialah dengan melakukan whitelisting pada web yang berbasis HTTPS tersebut.

 

WHITELISTING WEBSITE

Whitelisting berlawan dengan blacklisting dimana pada whitelisting kita membuat daftar hal yang kita beri kapabilitas tertentu, dan hal-hal di luar daftar tersebut tidak memiliki kapabilitas tersebut. Pada dunia maya, whitelisting umum dilakukan terhadap email, LAN, program / perangkat lunak, serta aplikasi tertentu. Artikel ini akan membahas secara spesifik proses whitelisting web yang berbasi HTTPS / SSL.

Proses whitelisting web umumnya dilakukan menggunakan software atau aplikasi tertentu, dimana user mengisi daftar website yang dapat dikunjungi komputernya. Pengisian database whitelist ini dapat dilakukan user setelah proses otentikasi password pada aplikasi tersebut. Koneksi internet selanjutnya akan dilakukan melalui kanal aplikasi tersebut.

 

WHITELISTING WEBSITE BERBASIS HTTPS / SSL

Proses whitelisting pada web yang berbasis HTTPS sedikit berbeda dibandingkan proses whitelisting pada web umumnya. Di saat kita mencoba mengunjungi web berbasis HTTPS yang telah kita whitelist dengan aplikasi tertentu, umumnya akan muncul peringatan “bad certificate” dikarenakan protokol HTTPS membutuhkan pertukaran sertifikat seperti telah dijelaskan pada bagian sebelumnya, sementara saat kita masuk ke web HTTPS tersebut melalui aplikasi whitelist maka pertukaran sertifikat tersebut tidak berjalan lancar. Hal ini bertujuan untuk memberikan kita peringatan lebih mengenai konten yang akan kita whitelist.

Untuk mempermudah hal ini, pada umumnya aplikasi whitelisting HTTPS yang bersangkutan menyediakan sertifikat khusus untuk koneksi HTTPS / SSL yang dapat kita unduh [4]. Menggunakan sertifikat ini, proses pertukaran sertifikat dengan web yang berbasi HTTPS / SSL dapat dilakukan secara langsung. Apabila aplikasi penyedia jasa whitelist ini tidak melakukan kecurangan, maka komunikasi yang dilakukan semestinya akan tetap terenkripsi tanpa diintrusi / didekripsi oleh aplikasi tersebut.

Jadi, inti dari proses whitelisting pada web yang berbasis HTTPS ialah kita dapat melakukan proses whitelisting seperti pada web HTTP umumnya, namun proses komunikasi tetap terjamin dengan enkripsi tanpa diintrusi / dibaca oleh aplikasi penyedia jasa whitelisting.

peringkat

Saat ini strategi mitigasi intrusi dunia maya menggunakan proses whitelisting web berbasis HTTPS / SSL sudah umum dilakukan, dan berdasarkan Australian Signals Directorate strategi mitigasi ini termasuk ke dalam 35 besar (peringkat 17) strategi mitigasi terhadap intrusi dunia maya. Strategi ini umumnya tidak terlalu banyak menghabiskan biaya untuk diaplikasikan dalam suatu organisasi, namun strategi ini biasanya tidak dapat mendeteksi datangnya intrusi.

 

IMPLEMENTASI

Pada bagian ini akan dijelaskan contoh implementasi whitelisting website menggunakan software Whitetrash pada OS Ubuntu [5]. Pertama akan ditunjukkan implementasi whitelisting menggunakan Whitetrash pada domain web biasa (HTTP).

1.  Pengguna melakukan koneksi dengan website yang belum terdapat dalam whitelist

whitetrash7

2.  Pengguna akan terhubung pada aplikasi Whitetrash untuk konfirmasi mengenai website tersebut, namun sebelumnya terdapat otentikasi user

whitetrash1

3.  Apabila otentikasi yang dilakukan berhasil, maka pengguna akan diminta untuk memilih apakah website tersebut akan dimasukkan ke dalam whitelist-nya atau tidak, seperti berikut

whitetrash2

4.  Apabila pengguna setuju untuk memasukkan website tersebut ke dalam whitelist-nya, Whitetrash akan mengkonfirmasi penambahan website tersebut ke dalam database whitelist pengguna seperti berikut,

whitetrash3

5.  Setelah konfirmasi dari Whitetrash, pengguna akan diarahkan pada website tersebut seperti berikut,

whitetrash4

Selanjutnya, tiap koneksi pada website yang belum terdapat pada whitelist akan diarahkan terlebih dahulu pada konfirmasi penambahan website pada whitelist Whitetrash (poin 3). Otentikasi user hanya dilakukan di awal.

6.  Pengguna juga dapat mengamati daftar website dalam whitelist sebagai berikut,

whitetrash5

atau melalui akun admin sebagai berikut,

whitetrash6

 

CONTOH INSIDEN

Whitelisting web secara umum (HTTP) merupakan usaha mitigasi untuk menanggulangi intrusi dunia maya pada tahap pengintaian awal serta pemaketan data yang akan dicuri. Dua skenario intrusi yang mungkin terjadi ialah,

  • Seseorang menggunakan komputer orang lain untuk mengunjungi situs yang berbahaya.
  • Malware menghubungkan koneksi internet seseorang dengan sebuah situs berbahaya tanpa disadari pemilik komputer tersebut.

Kedua skenario ini dapat ditanggulangi dengan aplikasi whitelisting situs karena untuk penambahan daftar putih (whitelist) dibutuhkan otentikasi pengguna. Intrusi tidak dapat dilakukan apabila pihak penyerang tidak memiliki bukti otentikasi (password) yang valid.

Sementara itu, contoh skenario yang mungkin terjadi pada penggunaan aplikasi whitelisting situs yang spesifik pada HTTPS / SSL ialah sebagai berikut,

  • Aplikasi whitelisting yang digunakan kurang terpercaya, sementara pengguna melakukan koneksi HTTPS/SSL dengan sebuah situs. Komunikasi data yang seharusnya terenkripsi sebagaimana koneksi HTTPS/SSL pada umumnya tidak terenkripsi, atau diintrusi oleh aplikasi whitelisting tersebut sehingga data yang dikomunikasikan dibaca oleh aplikasi tersebut. Untuk menanggulangi hal ini, pilih aplikasi whitelisting yang terpercaya.

 

REFERENSI

  1. IETF, 2008. The Transport Layer Security (TLS) Protocol Version 1.2. [Online] Available at: http://tools.ietf.org/html/rfc5246 [Diakses 29 10 2013].
  2. Kumar, Naresh, 2012. HTTP vs HTTPS: Similarities and Difference. [Online] Available at: http://theprofessionalspoint.blogspot.com/2012/04/http-vs-https-similarities-and.html [Diakses 29 10 2013].
  3. Directorate, A. S., 2012. Strategies to Mitigate Targeted Cyber Intrusions.[Online] Available at: http://www.asd.gov.au/infosec/top-mitigations/top35mitigationstrategies-list.htm [Diakses 28 10 2013].
  4. Whitetrash, 2009. Frequently Ask Question (FAQ).[Online] Available at: http://whitetrash.sourceforge.net/FAQ.shtml [Diakses 28 10 2013].
  5. Whitetrash, 2009. Frequently Ask Question (FAQ).[Online] Available at: http://whitetrash.sourceforge.net/ [Diakses 28 10 2013].

 

Alan Yudhahutama / 23213028

Galih Gilang Wicaksono / 23213098