Category Archives: Uncategorized

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)

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

Manajemen Konfigurasi Komputer

Pendahuluan

Manajemen konfigurasi menjadi isu yang sangat penting saat ini. Saat ini, pengguna selalu ingin memiliki program yang dapat melakukan banyak hal dalam pada komputer yang dimilikinya, namun perlu diperhatikan bahwa program-program tersebut juga beresiko cukup tinggi sehingga justru dapat mengurangi performa dari komputer dalam menjalankan program yang dinginkan dan diharapkan pengguna. Untuk menghindari hal tersebut, pengguna perlu melakukan konfigurasi yang baik terhadap komputer yang digunakan. Selain itu, manajemen konfigurasi komputer juga sangat penting bagi organisasi ataupun perusahaan yang mengandalkan teknologi informasi dalam melakukan kegiatan operasional untuk keberlangsungan bisnis perusahaan. Hal ini dilakukan untuk melindungi aset perusahaan seperti data dan informasi, melindungi operasional bisnis dari berbagai serangan yang berbahaya pada komputer baik serangan dari internal maupun serangan eksternal, serta mejaga kesinambung kinerja perusahaan. Pada artikel ini, akan dibahas mengenai kendali pada manajemen konfigurasi pada komputer, contoh software yang digunakan untuk manajemen konfigurasi, dan juga contoh insiden yang menerapkan software tersebut.

Dekripsi
Manajemen konfigurasi adalah pengelolaan dalam mengendalikan perkembangan pada sistem yang kompleks. Manajemen konfigurasi komputer ini dapat diartikan sebagai proses pemeliharaan yang dilakukan secara terus menerus terhadap sistem dan jaringan komputer, serta memastikan bahwa sistem dan jaringan komputer ini dapat tetap melayani dan memenuhi kebutuhan dan misi perusahaan yang memanfaatkan penggunaan sistem dan jaringan komputer. Manajemen konfigurasi ini penting untuk mengatur penggunaan komputer oleh end user ataupun user workstation. Berikut ini adalah manfaat dari manajemen konfigurasi yang dilakukan secara konsisten.

  1. Mudah mendeteksi anomalous software pada user workstation. Hal ini dapat dilakukan dengan cara menerapkan application whitelisting.
  2. Administrator jaringan dapat mengetahui software apa yang sedang digunakan pada jaringan.
  3. Dapat mencegah user workstation dari pembuatan scheduled task untuk mengeksekusi program berbahaya (malicious).
  4. Dapat mencegah pengguna untuk menjalankan sistem yang biasa digunakanan untuk melakukan pengintaian.

 

os1

Gambar 1 Configuration Management

Kendali
Berikut ini terdapat beberapa kendali yang dapat dilakukan terkait manajemen konfigurasi komputer menurut Australian Government Information Security Manual (ISM), yaitu:

Kendali 0380

Kendali ini mengharuskan bahwa manajemen konfigurasi perlu dilakukan dengan mengembangkan SOE (Standard Operating Environments) yang aman untuk server dan workstation, yang mencakup beberapa hal berikut.

  • Penghapusan software, hardware, serta komponen sistem operasi yang dibutuhkan.
  • Menonaktifkan fungsionalitas yang tidak dibutuhkan pada software, hardware, dan sistem operasi. Fungsionalitas yang tidak dibutuhkan ini seperti driver untuk wireless, bluetooth, webcamera, autorun pada sistem operasi, dan lain-lain.
  • Penggunaan fungsi pencegahan eksekusi data, sebaiknya berbasis hardware, jika tersedia.
  • Mengimplementasikan kontrol akses terhadap objek yang sesuai untuk membatasi program dan system user sesuai dengan akses minimum yang dibutuhkan.
  • Memasang antivirus dan internet software security lainnya.
  • Memasang firewall berbasis software yang membatasi keluar masuk koneksi jaringan.
  • Mengkonfigurasi remote logging ataupun transfer of local events log ke pusat server

Kendali 0382

Kendali ini mengharuskan manajemen konfigurasi untuk memastikan pada seluruh server dan workstation, pengguna tidak memiliki kemampuan untuk memasang ataupun menonaktifkan software.

Kendali 0383
Kendali ini mengharuskan manajemen risiko mengurangi kerentanan (vulnerability) yang potensial pada SOE dengan cara beberapa cara berikut.
• Menghapus atau menonaktifkan akun yang tidak digunakan.
• Menamai ulang atau menghapius akun utama.
• Mengganti passphrases utama.

Kendali 0341
Kendali ini mengharuskan manajemen konfigurasi utntuk menonaktifkan berbagai fitur eksekusi otomatis pada sistem operasi terhadap connectable media.

Contoh Software
Berikut ini akan disebutkan beberapa software yang menerapkan manajemen konfigurasi pada komputer.
1. Windows 7 user account control
User Account Control (UAC) membantu menjaga PC melawan hacker dan software yang berbahaya. Setiap kali program akan membuat perubahan terhadap komputer, UAC akan memberi tahu user dan meminta izin untuk melakukan perubahan. Berikut ini akan dijelaskan mengenai pilihan pengaturan yang ada di User Account Control:
• Always notify
Dengan pengaturan ini setiap kali ada perubahan, UAC akan meminta konfirmasi. Pilihan ini cocok digunakan jika pengguna sering memasang dan mencoba aolikasi baru di Windows atau mengunjungi situs-situs yang belum bisa dipastikan keamanannya.
• Default – notify me when programs try to make changes to my computer
Dengan pengaturan ini, UAC akan meminta konfirmasi hanya jika terjadi perubahan yang bukan dilakukan oleh administrator. Pilihan ini juga cocok digunakan untuk pengguna yang sering mengunjungi situs yang memang selalu diku njungi banyak orang.
• Notify me when programs try to make changes to my computer
Pada pengaturan ini, UAC tidak akan meredupkan cahaya pada layar saat meminta konfirmasi kemudian memberikan perintah pada windows untuk melanjutkan tuga.s
• Never notify
Pengaturan ini adalah pengaturan yang paling rawan terhadap serangan malware atau spyware. Pengguna tidak akan mengetahui jika spyware, malware, atau virus sedang mencoba menginfeksi komputer. Akibatnya, komputer menjadi lebih lambat akibat pemakaian resource dari malware atau spyware.

os2

Gambar 2 User Account Control Setting

Contoh lain manajemen konfigurasi pada windows utnuk mencegah pengguna yang melakukan pemasangan program-program tanpa izin pemilik adalah dengan cara menonaktifkan windows installer melalui group policy editor, registry editor. Selain itu, dapat juga dilakukan dengan membuat user account dengan type limited.

2. Autorun Eater
Sebuah software yang dikembangkan untuk melindungi user dari virus yang memakai metode pemanfaatan “autorun.inf”. Software ini dapat memperingatkan dan menghapus file “autorun.inf” yang mencurigakan sehingga malware tidak dijalankan saat mengakses drive yang terinfeksi. Selain itu Autorun Eater memiliki fitur sebagai berikut.
• memonitor semua drive (kecuali drive A, B, dan CD / DVD) secara real time.
• Mencegah infeksi malware yang menggunakan metode “autorun.inf” dari perangkat penyimpanan yang dapat dilepas (flashdisk, harddisk eksternal, dll).
• Memindai perangkat penyimpanan yang terinfeksi secara otomatis dengan Microsoft Security Essentials.
• Menghapus file “autorun.inf” yang mencurigakan dan dibackup secara otomatis
• Setiap event (kejadian) dicatat untuk referensi di masa mendatang
• Memperbaiki 3 perubahan registry critical umum yang dibuat oleh malware.
• Hotkey untuk mengaktifkan memindai / scan

3. CFEngine
CFEngine adalah sistem manajemen konfigurasi open source yang cukup populer, fungsi utamanya adalah untuk menyediakan konfigurasi otomatis terhadap sistem komputer dengan skala besar, termasuk manajemen terpadu dari server, desktop, embedded networkod devices, smartphone, serta komputer tablet. CFEngine ini biasa digunakan pada skala perusahaan.

4. Faronics Anti-Executabe Standard
Faronics Anti-Executabe Standard adalah software utility yang berfungsi untuk mengontrol dan memblok aplikasi installer seperti .exe .msi. Software ini memblokir aplikasi yang tidak termasuk dalam whitelist, sehingga sangat aman untuk menghindari virus, ancaman hacker, penggunaan cheat game online, dan pengguna yang jahil.

os3

Gambar 3 Faronics Anti-Executable Standard Edition (Sumber http://belajaritsaja.com/review/software/anti-executable)

 

 

Contoh insiden
Salah satu contoh insiden yang menggunakan salah satu software manajemen konfigurasi adalah penggunaan Anti executable pada warnet. Adanya pengguna warnet yang jahil membuat pemilik warnet khawatir sistem warnet dapat diserang termasuk sistem billing. Oleh karena itu, pihak operator warnet menggunakan software Anti-executable untuk mencegah hal tersebut.

 

Contributor:

Sundari Mega P (23213069), Dea Rahmatia (23213084)

Referensi:

http://www.asd.gov.au/infosec/top-mitigations/top35mitigation-details.htm
http://www.asd.gov.au/publications/Information_Security_Manual_2013_Controls.pdf?&updatedAug13
http://www.cs.tufts.edu/tech_reports/reports/2006-4/report.pdf
http://windows.microsoft.com/en-us/windows7/products/features/user-account-control
http://blog.fastncheap.com/uac-user-account-control-windows-7/
http://amdnet.net/download-anti-executable-standard-3-50-full-serial/

 

Mitigation Strategy #35 – Selected network traffic capture

Network Monitoring

Penggunaan komputer dan media-media digital sebagai alat penyimpanan data semakin banyak digunakan. Penggunaan media-media digital tersebut dikarenakan kemudahan dalam penyimpanan dan penggunaannya. Namun secara tidak sadar dengan menyimpan berbagai data dalam bentuk digital ternyata akan memperbesar kemungkinan data tersebut dapat dibaca atau diambil oleh orang yang tidak bertanggung jawab. Dengan semakin majunya teknologi internet pada era yang semakin berkembang ini, maka kemungkinan data tersebut tersebar akan semakin besar. Dikarenakan ada kemungkinan data tersebut diambil atau disebarkan maka ada baiknya jika suatu jaringan komputer selalu dimonitor trafficnya.

Lalu apa sebenarnya network monitoring itu ?. salah satu sumber menyebutkan “the term network monitoring describes the use of a system that constantly monitor a computer network for slow or failing components and that notifies the network administrator”. Atau pada tautan lain disebutkan “monitoring an active communications network in order to diagnose problems and gather statistics for administration and fine tuning”. Berdasarkan dua penjelasan diatas dapat diambil sebuah kesimpulan bahwa network monitoring adalah suatu system yang memonitor traffic didalam suatu jaringan komputer untuk dicatat dan dilaporkan semua kejadian yang terjadi kepada admin untuk dikelola sehingga jaringan komputer tersebut tetap dalam keadaan baik.

Monitoring yang baik dibutuhkan pengawasan secara berkelanjutan, hal ini dikarenakan kita tidak dapat mengetahui kapan akan terjadinya masalah dalam suatu jaringan komputer. Ketika memonitor jaringan maka seorang admin jaringan harus mengetaui keadaan jaringan apakah ada hal yang tidak berjalan dengan benar atau perlu diperbaiki.  Hal ini diperlukan ketika terjadi error/troubleshoot pada jaringan sehingga admin dapat dengan cepat memperbaiki sehingga layanan pada jaringan tetap terjaga dengan baik.

Selain itu seorang admin juga memerlukan suatu tools untuk mengukur pernggunaan bandwidth, sehingga dapat diketahui berapa penggunaan rata-rata tiap harinya. Ketika terjadi kejanggalan pada data maka dapat aplikasi-aplikasi apa saja yang mengakibatkan bandwidth habis atau dapat disebabkan oleh malware. Ketika suatu aplikasi membutuhkan bandwidth besar maka ada kemungkinan bahwa aplikasi lain seperti web browser akan mengalami kesulitan dalam mengakses internet. Dengan memonitoring jaringan tersebut maka kita dapat mengembalikan bandwidth dengan mematikan aplikasi yang mengambil bandwidth besar tersebut. Pada beberapa aplikasi bahkan dapat menentukan besar pembagian besar kecilnya pembagian bandwidth supaya lebih seimbang seperti misallnya pada mikrotik.

1

Queue pada mikrotik

Monitoring juga dapat digunakan untuk memastikan bahwa tidak ada orang asing atau hacker yang mengakses jaringan komputer kita. Dengan mengenkripsi traffic pada jaringan maka kita dapat menjaga keamanan data yang dipertukarkan dalam lingkup internal. Pada umumnya suatu instansi menggunakan tunnel  atau VPN untuk melindungi pertukaran data yang terjadi dalam lingkup internal.

Selain ketiga hal diatas hal yang tidak kalah penting adalah mencatat semua kejadian pada suatu logs. Hal ini diperlukan ketika suatu kejadian terulang kembali maka hal tesebut dapat dengan mudah diperbaiki.selain itu log pun berfungsi untuk mengembalikan jaringan kekeadaan sebelumnya. Pengembalian ini berfungsi ketika jaringan diupgrade ´namun kualitas jaringam bertambah buruk,  maka dengan dikembalikan ke pengaturan sebelumnya, kualitas layanan jaringan akan menjadi lebih baik lagi.

Ada dua macam teknik yang umum digunakan dalam memonitor jaringan komputer yaitu :

  1. Synthetic / Active monitoring
  2. Passive monitoring

Synthetic atau Active monitoring digunakan untuk melihat performa kerja jaringan secara real time. active monitoring umumnya menggunakan  sebuah web browser. Active monitoring akan terus menerus memonitoring kinerja jaringan seperti  kecepatan akses, respon waktu, bandwidth pemakaian dll.  Karena sifatnya yang menggunakan web browser untuk memonitor kinerja jaringan, maka active monitoring sering digunakan untuk melihat  proses bisnis yang bersifat vital. Beberapa tools yang dapat digunakan untuk active monitoring adalah “ping”, “traceroute”, “MTR” (kombinasi antara ping dan traceroute), SNMP collectors, MRTG.

Passive monitoring adalah sebuah teknik monitoring jaringan yang digunakan untuk menangkap penggunaan jaringan dengan cara menyalin penggunaan sebenarnya. Passive monitoring membantu sebuah instansi untuk menganalisis keamanan jaringan, flow of traffic, dll dengan hasil akhir menghasilkan laporan berdasarkan traffic jaringan. Beberapa tool yang dapat digunakan untuk passive monitoring adalah log monitoring, SNMP trap receiver, NetFlow.

Berikut adalah perbedaan antara Active monitoring dengan passive monitoring :

Active monitoring

Passive monitoring

Configuration

Multi-point

Single or multi-point

Data size

Small

Large

Network overhead

Additional traffic

– Device overhead

– No overhead if splitter is used

Purpose

Delay, packet loss, availability

Throughput, traffic pattern, trend, & detection

CPU Requirement

Low to Moderate

High

 

Salah satu cara untuk menangkap traffic data yang lewat pada jaringan adalah dengan menggunakan wireshark. Dengan menggunakan wireshark kita dapat mengetahui jenis suatu paket, paket tersebut berasal dari mana, menggunakan port berapa dll. Wireshark menyediakan list yang cukup lengkap untuk memonitor jaringan. Kali ini akan dicoba memonitor jaringan menggunakan wireshark. Pada jaringan akan dimonitor lalu lintas program “achat” antara dua buah komputer. achat merupakan sebuah program yang menggunakan port 9256 untuk melakukan proses pertukaran data. Untuk mengetahui sebuah program menggunakan port berapa pada komputer kita dapat dengan menggunakan program “currports”.

2Currports

Pertama untuk memonitor antara dua buah komputer diperlukan filter dalam wireshark sehingga hanya dua buah komputer yang diinginkan saja yang akan terlihat aktifitasnya.

Berikut adalah filter wireshark yang digunakan untuk menangkap pembicaraan antara dua buah komputer.

3Pada gambar diatas dapat dilihat bahwa kita hanya ingin menangkap pembicaraan dari ip 192.168.0.120 dengan komputer dengan ip 192.168.0.20 pada port 9256 yaitu port aplikasi achat. Pada awal percobaan, komputer A (ip 192.168.0.120) akan mengirim private message ke komputer B (ip 192.168.0.20).

4Seperti dapat dilihat pada gambar diatas bahwa komputer A mengirim private message ke komputer B dengan isi “bahan test kuliah keamanan os”. Traffic pertukaran data ini yang akan dicoba untuk dimonitor oleh wireshark.ketika pesan tersebut terkirim maka pada wireshark akan tercatat satu kejadian baru seperti pada gambar dibawah ini.

12

Isi dari paket yang berkotak merah adalah sebagi berikut.

13

Dapat dilihat pada gambar diatas bahwa komputer a mengirim privateMsg ke komputer b. isi dari privateMsg tersebut dapat dilihat pada paket dibawah ini.

14

Dimana isi dari paket tersebut adalah sebagi berikut.

15

Dapat dilihat pada gambar diatas bahwa isi paket tersebut adalah merupakan isi dari private message yang dikirimkan oleh komputer a ke komputer b. lalu bagai mana dengan mengirim suatu file melalui program tersebut. Sama halnya dengan mengirimkan private message diatas, karena masih menggunakan program yang sama maka port yang digunakan akan sama. Sehingga filter pada wireshark tidak perlu dirubah. Berikut adalah pengiriman file menggunakan achat

9

Ketika file tersebut dikirmkan maka pada wireshark kembali tercatat kejadian baru yang dapat dilihat sebagai berikut.

10

Dapat dilihat pada gambar diatas bahwa komputer a ingim mengirimkan suatu file kepada komputer b. ketika komputer b ingin menerima file tersebut maka pada wireshark akan tercatat lagi suatu kejadian baru dapat dilihat pada gambar dibawah ini.

11

Dapat dilihat pada gambar diatas bahwa  file yang dikirimkan berada pada folder E:\Belajar\ Dropbox\Dropbox\Dropbox\File Derry\Keamanan OS.  Dan file yang akan dikirim adalah Top_ 35_Mitigations_Details_2012.pdf.

Jika kita ibaratkan hal ini terjadi pada suatu perusahaan  dan folder tersebut berisikan file-file penting maka kita, seorang admin jaringan harus dapat memblok pengiriman paket tersebut. Memblok pengiriman paket tersebut dapat dilakukan dengan beberapa cara yaitu dengan hanya meberikan user control kepada pengakses folder tersebut sehingga dapat diketahu siapa saja yang mengakses file yang berada pada folder tersebut. Selain itu dapa juga memblockir pengiriman paket tersebut.

Penulis :

Muhammad Abduh / 23213153

Retri Derry F / 23213057

Referensi :

http://en.wikipedia.org/wiki/Passive_monitoring

http://en.wikipedia.org/wiki/Synthetic_monitoring

http://nabellahendra.blogspot.com/2013/02/pengujian-dan-monitoring-jaringan.html

http://en.wikipedia.org/wiki/Network_monitoring

obiona.olatunde, Bandwidht monitoring & measurement (tools and services), Obafemi Awolowo University, Ilelfe, Nigeria.

Miao luo, Wei Jiang. Network Monitoring and measurement and its application in security field

-. Introduction to Networking monitoring and management.

Mitigation Strategy #34 : Gateway blacklisting

Managing Sinkhole DNS Domain and Hosts File using Windows Server DNS

 

Ardy Pratama/23213056

Harry Chandra/23213066

1. Pendahuluan

Ketika kita ingin membuka suatu situs internet, misalnya google.com, DNS server akan mengubah alamat yang kita masukkan menjadi ip address, lalu menggunakan ip tersebut untuk mengakses situs web yang dituju. Tapi dalam perkembangannya, banyak ancaman berupa malware, spyware, phising, scams, pornography, bandwidth wasting video, dan masih banyak lagi gangguan yang dapat menyerang computer kita. Beberapa website secara otomatis akan membuat computer kita mendownload “material” ketika kita membuka website tersebut. Hal ini tentu sangat mengganggu, apalagi jika website tersebut berupa pop up yang muncul ketika kita hendak mendownload file dari situs web hosting. Oleh karena itu, kita akan mencoba menggunakan Windows Power Shell untuk membuat sinkhole guna mengatasi masalah tersebut. Apa itu sinkhole? Sinkhole merupakan DNS server yang memberikan kode ip address yang salah terhadap beberapa situs, sehingga meskipun pop up website terbuka, kita tidak akan pernah masuk ke web tersebut karena ip website tersebut sudah “dibuat menjadi salah” oleh sinkhole DNS server.

Sebuah DNS Sinkhole bekerja dengan melakukan spoofing DNS server terhadap domain-domain berbahaya yang mengandung malware. Admin mengkonfigurasi DNS yang dikirimkan ke internet untuk mengembalikan alamat IP yang salah sehingga domain bermalware menjadi tidak bisa diakses. JIka klien mengirimkan request alamat domain bermalware, sinkhole akan memberikan alamat yang tidak bisa dibuka atau alamat lain (selain alamat asli domain bermalware tersebut). Dengan demikian, klien tidak akan bisa melakukan koneksi ke target host dan terlindung dari malware. Ketika domain baru ditambahkan ke list domain bermalware, domain tersebut akan diawasi langsung oleh sinkhole administrator. User tidak akan lagi bisa mengakses domain tersebut. Untuk notifikasi realtime, digunakan IDS seignature yang akan memberikan peringatan ketika seorang klien melakukan koneksi ke host IP yang terdapat pada DNS sinkhole.

Dalam arsitektur jaringan, biasanya digunakan split DNS, dimana internal DNS server mengirimkan alamat request ke eksternal DNS server. Eksternal DNS server biasanya terdapat di area DMZ firewall. Di eksternal server inilah kita akan menggunakan sinkhole untuk memainkan Fully Qualified Domain Names (FQDN) sehingga memberikan ip address yang salah terhadap situs-situs yang ingin kita block. Misalnya, kita membuat list website-website yang ingin diblok lalu mengeset semua website yang tersebut ke ip 0.0.0.0, karena ip ini tidak ada maka web tersebut tidak akan pernah terbuka di browser computer.

Kita bisa mendapatkan list domain name FQDN dari website-website yang mengandung malware/potensi ancaman lainnya di web berikut:

DNS Sinkhole juga dapat digunakan untuk memblok situs-situs yang tidak diinginkan, seperti situs pornografi, sehingga anak-anak di bawah umur tidak dapat mengakses situs tersebut. Selain itu, akhir-akhir ini, serangan botnet semakin merajalela. Dapat dilihat pada grafik di bawah ini, jumlah serangan botnet terus meningkat dari tahun ke tahun.

1

2. DNS Sinkhole Overview

2.1   Key Feature

Sistem yang digunakan cukup simple sehingga dapat secara efektif mendeteksi dan memblok malicious traffic pada internet. Sinkhole harus dapat memitigasi berbagai macam ancaman yang menggunakan DNS resolution. Menggunakan DNS zone fies, administrator dapat dengan mudah menambahkan host dan domain untuk diblok. DNS Sinkhole yang akan dibahas pada bagian tiga menyediakan fitur deteksi dan blocking domain yang berbahya. Sistem yang digunakan cukup sederhana dan mudah untuk digunakan. Modul tambahan dapat ditambahkan ketika instalasi sinkhole untuk menyediakan notifikasi real time pada sinkhole event dan juga log traffic pada sinkhole. Fitur ini akan membuat sinkhole menjadi elemen kunci dalam proses monitoring suatu perusahaan.

2.2   Tipe Sinkhole

Sinkhole merupakan sistem jaringan yang hampir mirip dengan honeypot. Beberapa ISP telah menggunakan sinkhole untuk melindung pelanggan mereka ketika melakukan browsing. Sinkhole untuk single platform dapat dibuat menggunakan host file sederhana. Teknik ini telah ada sejak beberapa tahun yang lalu. Namun, sinkhole jenis ini hanya cocok digunakan untuk jumlah host yang sedikit. Intrusion Prevention System (IPSs) menyediakan beberapa kendali terhadap paket DNS, misalnya seperti DNS time to live (TTL). TTL efektif ketika digunakan untuk mengatur fast-flux DNS system, namun tidak berfungsi dengan baik untuk normal DNS. Jenis lainnya adalah dengan menggunakan darknet. Darknet adalah IP space teralokasi, dimana tidak ada service atau aktivitas server di dalamnya. Darknet dapa digunakan untuk mengumpulkan data pada network traffic yang janggal. Kejanggalan ini biasanya disebabkan oleh mass scanner, malware yang sedang mencari korban, atau salah konfigurasi host.

2.3   Keuntungan Sinkhole

Terdapat banyak keuntungan ketika menggunakan internal DNS sinkhole. Keuntungan tersebut antara lain: sinkhole tidak mahal, scalable, efektif, dan mudah untuk dirawat. Perawatan yang bersifat kontinyu diperlukan untuk menjaga sinkhole tetap up to date dengan domain-domain malware yang baru.

2.4   Batasan Sinkhole

Internal DNS Sinkhole memiliki beberapa batasan yang harus diketahui oleh system administrator. Batasan utama yang ada adalah sesungguhnya DNS Sinkhole tidak dapat mendeteksi malware, memblok instalasi malware, atau memusnahkan malware. DNS sinkhole hanya mendeteksi indicator dari malware. Indikator tersebut yang kemudian di follow up oleh security analis untuk menentukan langkah selanjutnya. DNS sinkhole log digunakan sebagai indikasi telah terjadi infeksi malware.

3.Arsitektur DNS Sinkhole

3.1   Normal DNS Flow

Berikut ilustrasi arsitektur dari normal DNS flow (tanpa menggunakan sinkhole):

2

 

Arsitetur jenis ini sangat rentan terhadap serangan botnet, DDoS attack, keylogger, spam, identity theft, traffic sniffer, email storms, dan berbagai serangan lainnya.

3.2   DNS Sinkhole Flow-Basic

Basic DNS Sinkhole terdiri dari komponen-komponen berikut ini:

  1. Commodity Server
  2. OS Linux dengan bind
  3. Daftar host dan domain yang mengandung malicious malware
  4. Custom configuration dan updated script

Berikut ilustrasi dari DNS flow yang terjadi ketika seorang attacker menyerang klien untuk berusaha membuat kontak dengan botnet:

3

DNS sinkhole akan mengintersep DNS request dan memberikan response ip address sesuai dengan configurasi admin sinkhole. Ketika suatu malware berusaha menginfeksi klien dengan membuatnya melakukan koneksi ke 1010101.org (malicious domain yang sudah ada dalam list dns sinkhole), request yang dikirimkan ke sinkhole akan mendapatkan respon ke ip 127.0.0.1 sehingga klien akan melakukan koneksi ke dirinya sendiri, bukan ke ip malware tersebut. Dengan demikian, klien terlindung dari domain-domain yang mengandung malware.

3.3   DNS Sinkhole Flow-Advanced

Suatu advanced DNS Sinkhole memiliki komponen dari basic sinkhole, ditambah elemen-elemen berikut ini:

  1. Socat service emulating one atau listening service yang digunakan untuk network forensic analysis.
  2. Snort IDS dengan customized sinkhole sigbature untuk real time alert.
  3. Script untuk scheduled reporting

Figure di bawah ini memberikan ilustrasi tentang DNS flow chart yang terjadi ketika seorang attacker berusaha membuat klien melakukan koneksi ke botnet.

4

Empat langkah awal sama dengan basic sinkhole, kecuali bahwa sinkhole menyediakan valid internal address (buika 127.0.0.1) sebagai respon terhadap bot controller. Valid internal address kemudia diredirect ke administrator controller IP address (step 5). Karena outbond command dan control traffic adalah web based, listening service dikonfigurasi dalam HTTP ports. Port HTTP yang biasanya dimonitor adalah port 80, 8000, dan 8080. Namun, admin juga harus mengawasi port 443 dan 8443 dengan menkonfigurasi SSL certificate. Tiap sinkhole grup sebaiknya dikonfigurasi dengan IP address yang berbeda, dengan demikian admin dapat mengirimkan traffic dengan jenis yang berbeda ke IP masing-masing sehingga analisis dan reporting menjadi lebih cepat.

3.4 Scalability and Performance

BIND DNS adalah system dengan skala besar dimana sinkhole dapat digunakan dalam organisasi dengan puluhan ribu pengguna. Sepasang DNS sinkhole yang akan dibahas pada bagian selanjutnya telah digunakan dalam organisasi dengan lebih dari 15.000 pengguna selama setahun tanpa terjadi down atau masalah performa. Sebuah DNS Bind server dengan RAM 1 GB dapat bekerja dengan baik mengelola 20000 domain.

4 Use Case

Ketika klien diredirect ke sinkhole, hal ini disebabkan oleh satu atau dua alasan: yang pertama klien telah terinfeksi sehingga mencoba melakukan kontak ke bot controller atay yang kedua, klien tidak sengaja teredirect lewat link suatu website. Berikut dua macam kasus penggunaan sinkhole, drive by downloads dan command-and-control channels.

4.1   Blocking Drive By Downloads

Tipe redirect yang satu ini sering terjadi ketika seorang klien mengakses suatu website yang telah disisipi malicious hidden link yang memaksa klien mendownload dan mengeksekusi suatu code tanpa sepengetahuan dirinya.

Sinkhole Socat packet log di bawah ini menunjukkan seorang klien berusaha mendownload malicious javascript code, js.php. Malicious download tersebut pun diblokir dan tidak ada koneksi yang tersambung ke zettapetta.com

5

4.2   Blcoking Command and Control Channels

Contoh di bawah ini menunjukkan seorang klien yang secara langsung berusaha mengakses C&C bot controller yang terdapat di hjwbxhqr.com. Karena domain hjwbxhqr.com terdapat di sinkhole list, klien menjadi tidak dapat mengakses bot controller.

6

 

5 Deploying and Maintaining DNS Sinkhole

5.1   Sonfigure BIND

Tujuan utama melakuakn konfigurasi bind adalah untuk melakukan automatisasi proses download dan parsing domain list ke sinkhole. Untuk melakukan automatisasi, kita gunakan suatu shell script untuk mendownload informasi dari list, mengumpulkan, lalu menjadikannya sebuah list dalam bind server.

5.1.1          Bind Zone File SOA Configuration for a single host

Misalnya, www.sans.org adalah domain dengan malware dan memiliki ip address 66.35.45.201. Sinkhole akan memberikan ip yang salah pada klien, dalam kasus ini 192.168.25.5 sehingga klien tidak akan bisa mengakses website bermalware.

7

5.1.2          BIND Zone File ZOA Configuration Multiple Domains (Wildcard)

Metode kedua adalah dengan menambahkan record yang ada menggunakan wildcard *. Jadi bila domain sans.org dimasukkan, sub domain yang ada seperti isc.sans.org dan testing.sans.org otomatis akan juga masuk.

8

5.1.3          Master Zone Configuration

Di bawah ini merupakan contoh bagaimana menambahkan single domain our.sink.com ke suatu sinkhole. Single site sinkhole filenya bernama site_specific_sinkhole.conf dan berisi informasi target domain.

9

Contoh lainnya saat menambahkan domain sans.org ke sinkhole, dengan menambahkan wildcard *.sans.org, semua child domain yang berakhiran .sans.org akan dimasukkan ke sinkhole. Wildcard sinkhole filenya disebut entire_domain_sinkhole.conf.

10

Kita lakukan tes dan memberikan output sebagai berikut:

11

5.2   Download dan Sinkronisasi Lists

Nama domain yang disimpan harus diperiksa untuk memastikan bahwa mereka tidak mengandung extranet. Untuk itu, The Time To Live (TTL) perlu digunakan agar domain yang salah masuk dapat segera dihapus.

5.3   Configuring Custom Lists

Salah satu fitur kunci dari internal DNS sinkhole adalah kemampuan untuk membuat custom list. Setiap kali klien mengakses domain berbahaya, sinkhole dapat secara langsung memasukkannya ke custom list sehingga klien lain dapat dicegah memasuki domain tersebut. Contohnya dapat kita lihat di bawah ini:

12

13

 5.4   Configuring Socat

Ada bermacam-macam cara untuk mengcapture sinkhole traffic, namun fleksibilitas dan tingkat kerumitan menjadi syarat utama. Socat dapat digunakan untuk mendengarkan beberapa port seperti TCP 80, 7070, 8000, 8080 dalam sebuah single IP address. Jika dikombinasikan dengan sniffer/custom IDS signature, sinkhole dapat menyediakan data real time, domain apa yang sedang berkomunikasi dengan klien.

14

 5.5   Configuring IDS

Snort signature berikut akan memberikan alert pada sinkhole traffic dan mengcapture domain yang melakukan komunikasi dengan klien:

15

Snort signature yang dikombinasikan dengan Socat listener akan memberikan alert setiap kali klien diredirect ke sinkhole based pada IP 192.168.25.5. Signature tersebut juga termasuk kombinasi TCP flag untuk mengcapture GET atau POST.

 5.6   Configure Reporting

Shell Script dengan httpry dapat digunakan untuk menggenerate report harian semua paket yang dicapture menggunakan Socat atau web listener yang lain. Report tersebut menunjukkan jumlah koneksi ke domain di sinkhole untuk setiap URL. Berikut contoh daily DNS Sinkhole Report:

16

6. Simulasi Membuat DNS Sinkhole menggunakan Windows Power Shell

Berikut tools dan requirements yang diperlukan untuk membuat DNS Sinkhole:

  • Power Shell versi 2.0 atau versi di atasnya
  • Windows Server 2003 atau versi di atasnya
  • Windows Management Instrumentation (WMI) enable
  • Memiliki hak lokal admin pada DNS server

Selanjutnya, kita akan mencoba membuat sinkhole sebagai berikut:

  1. Kita download source code dari http://www.sans.org/windows-security/downloads/

2. Selanjutnya kita harus mengatur permission pada power shell sebagai berikut:

17

Atur permission pada process, CurrentUser, dan LocalMachine menjadi RemoteSigned

3. Setelah itu, kita enable koneksi pada laptop lewat WMI (Windows Management Instrumentation seperti berikut ini:

18

4. Lalu kita akan melakukan sinkhole terhadap suatu website, misalnya kita ingin memblok www.sans.org, maka pada power shell kita ketikkan

./Sinkhole-DNS.ps1 -Domain “www.sans.org”

Maka www.sans.org akan dialihkan ke alamat ip 0.0.0.0

5. Untuk melakukan sinkhole terhadap semua domain yang tersimpan dalam file .txt, kita gunakan perintah

Sinkhole-DNS.ps1 -InputFile file.txt -IncludeWildCard -RemoveLeadingWWW

6. Untuk melakukan sinkhole terhadap semua domain yang tersimpa dalam file.txt dalam sebuah remote DNS server “server7.sans.org”, kita gunakan command:

Sinkhole-DNS.ps1 -InputFile file.txt -DnsServerName “server7.sans.org” -Credential “server7&#92administrator”

Hasilnya dapat dilihat berikut ini:

19

Terlihat bahwa semua domain pada file txt telah diimport ke remote DNS server.

7. Untuk menghapus semua domain yang sudah disinkhole, gunakan perintah:

Sinkhole-DNS.ps1 –DeleteSinkHoleDomains

Selain membuat sinkhole pada DNS server, kita juga bisa melakukan pengeblockan server melalui hosts file. Host file digunakan sebagai alternative karena memiliki beberapa kelebihan jika dibandingkan dengan melakukan pengeblockan menggunakan DNS server. Kelebihan tersebut antara lain:

1)      Jika laptop dibawa ke tempat lain dan konek ke server DNS lain, website akan tetap diblok karena host file yang digunakan tidak berubah.

2)      Tidak memerlukan hak akses root ke server untuk memodifiaksi hosts file

3)      Untuk memodifikasi hosts file, user harus login sebagai administrator pc mereka, sehingga lebih terlindung dari virus

Selain kelebihan tersebut, juga terdapat beberapa kekurangan dari penggunaan host file. Kekurangan tersebut antara lain:

  1. Semakin besar ukuran host file, performance pc akan semakin menurun
  2. Jika diserang oleh virus yang dapat mengakses pc kita sebagai admin, host file dapat dimodifikasi oleh virus tersebut.
  3. Mengatur host file pada ribuan computer akan jauh lebih susah daripada mengatur sinkhole pada sebuah DNS server
  4. Tidak seperti DNS record yang bersifat time expire, entry host file yang salah tidak akan dihapus hingga dilakukan modifikasi oleh user.

Software requirement yang diperlukan antara lain:

  1. Powershell 2.0 atau versi di atasnya
  2. Memiliki hak akses administrator untuk memodifikasi host file

Langkah-langkah:

  1. Download source code dari http://www.sans.org/windows-security/downloads/
  2. Atur permission pada power shell, set process, CurrentUser, dan LocalMachine menjadi RemoteSigned
  3. Untuk memasukkan domain www.MalwareDomainList.com ke hostfile dan menjadikan ipnya menjadi 0.0.0.0, gunakan command berikut:
./ Update-HostsFile.ps1

20

Terlihat bahwa domain telah berhasil dimasukkan ke hostfile.

4. Untuk melakukan blackhole ke semua domain yang terdapat pada sebuah file txt dan mengubah ipnya menjadi 10.1.1.1, digunakan command berikut:

Update-HostsFile.ps1 -FilePathOrURL “c:&#92folder&#92file.txt &#92&#92server&#92share&#92remotefile.txt http://www.malwaredomainlist.com/hostslist/hosts.txt” -BlackHoleIP “10.1.1.1”

21

Terlihat bahwa semua domain pada file txt telah didownload ke hostfile.

5. Untuk menambahkan www pada list domain yang hanya mencamtukan nama web lalu mengimportnya ke hostfile, gunakan command:

Update-HostsFile.ps1 -AddDuplicateWWW

22

6. Untuk menghapus hostfile dan mengembalikannya ke localhost standart entries, gunakan command:

Update-HostsFile.ps1 -ResetToDefaultHostsFile

 7. Kesimpulan

  1. Untuk memblock situs web yang mengandung virus/malware, dapat digunakan metode sinkhole pada DNS server dan sinkhole pada hostfile
  2. Metode sinkhole pada hostfile lebih cocok digunakan pada personal computer, sedangkan metode sinkhole pada DNS server dimanfaatkan untuk computer dengan jumlah yang banyak.

Mitigation Strategy #21 : Operating System Exploit Mitigation Mechanism

Muhammad Akbar Jamaludin (23213020)

Elian Daiva (23213021)

Penggunaan ASLR dan DEP pada Operating System

Data Extension Prevention (DEP) dan Address Space Layout Randomization (ASLR) merupakan dua buah countermeasure yang telah terbukti di dalam menghadapi tipe-tipe eksploit yang saat ini banyak dilakukan untuk memanfaatkan celah keamanan pada aplikasi. DEP mencegah sektor memori tertentu untuk dieksekusi, sementara ASLR merupakan teknologi yang digunakan mencegah shellcode untuk berhasil dieksekusi. Kombinasi keduanya akan menghasilkan pengamanan yag memadai untuk menangkal serangan yang mengekspoitasi kelemahan dengan return-oriented programming (ROP) dan shellcode.

Data Extension Prevention (DEP) dan Cara Kerjanya

DEP secara khusus, akan mencegah konten dari suatu region memori diidentifikasi sebagai data berisi selain instruksi executable yang akan dieksekusi sebagai instruksi oleh program, service, device driver, dan sebagainya. DEP melindungi beberapa program error dan membantu mencegah beberapa program exploit tertentu yang menyimpan instruksi executable pada data area seperti pada buffer overflow. DEP ini diperkenalkan penggunaannya untuk produk massal pada Linux tahun 2004 (kernel 2.6.8), Microsoft tahun 2004 (bagian dari Windows XP SP2), dan Apple tahun 2006 (saat migrasi arsitektur x86).

Kita akan menggunakan contoh kasus untuk melihat bagaimana kerentanan normal dapat dieksploitasi, contohnya adalah stack buffer overflow. Dengan menggunakan nilai 0x41414141 kedalam sebuah payload, dan eip disetting dengan 0x41414141, sehingga kita tahu bahwa payload ini dapat exploitasi. Bantuan dari software untuk melakukan penetration test seperti Metasploit, dapat digunakan untuk menemukan offset dari nilai yang dimasukkan dalam eip. Hal ini akan menjadi start offset dari kode eksploit ini. Untuk memverifikasi, kita akan memuat 0x41 sebelum offset, 0x42424242 pada offset, dan 0x43 setelah offset.

Pada proses tanpa ASLR dan tanpa DEP, stack address akan tetap sama setiap kali kita memulai proses. Kita tahu dengan pasti dimana proses pada memori. Maka akan kita lihat bagaimana stack memori akan tampak dengan data test seperti yang didefinisikan di atas:

1

Seperti yang kita lihat pada gambar, esp menunjuk pada stack address 000ff6b0, yang telah diset 0x42424242. Nilai sebelum ini adalah 0x41 dan nilai setelahnya adalah 0x43, seperti yang kita harapkan. Sekarang kita tahu bahwa address yang disimpan pada 000ff6b0 akan dilangkahi. Sehingga kita akan mengatur address ini pada alamat dari beberapa memori yang bisa kita kontrol:

 2

Sekarang kita sudah mengatur nilai dari address 000ff6b0 sehingga eip akan di set ke alamat 000ff6b4, offset berikutnya pada stack. Hal ini akan mengakibatkan 0xCC akan dieksekusi. Yang mana nilai int3 akan dieksekusi. Int3 merupakan op-code dari instruksi yang didefinisikan untuk digunakan oleh debugger untuk secara temporari mengganti suatu instruksi dengan breakpoint pada suatu program yang sedang berjalan. Ketika CPU mengeksekusi Int3, CPU akan memanggil OS interrupt handler yang akan melaporkan sebagai exception pada tipe EXCEPTION_BREAKPOINT pada OllyDbg. Dengan mengeksekusi nilai 0xCC pada stack address, akan mengaktifkan exception dan  menghentikan proses debugger. Hal ini akan mengizinkan kita untuk memverifikasi bahwa program exploit dilakukan dengan sukses.

 3

Sekarang kita akan mengganti memori pada 000ff6b4 dengan shellcode, dengan mengubah payload kita. Ini akan mengakhiri program exploit kita.

Untuk mencegah program exploit ini berhasil dijalankan, maka Data Execution Prevention (DEP) dikembangkan. DEP memaksakan struktur tertentu, termasuk didalamnya adalah stack, yang akan ditandai sebagai non-executable. Hal ini juga semakin didukung oleh dukungan CPU dengan No-Execution (NX) bit, yang juga dikenal dengan XD bit, EVP bit, atau XN bit, yang akan mengizinkan CPU untuk menjalankan eksekusi hingga ke level hardware. Dengan DEP diaktifkan, program exploit sebelumnya tidak akan berjalan.

 4

Exploit akan gagal karena stack ditandai sebagai non-executable, dan kita mencoba untuk mengeksekusinya. Untuk bisa mengatasi hal tersebut, biasanya attacker mengembangkan Return-Oriented Programming (ROP). Hal ini dilakukan dengan menggunakan potongan kecil kode, yang disebut ROP gadget, yang merepresentasikan modul yang sah untuk suatu proses. Gadget ini berisi satu atau lebih instruksi, yang diakhiri oleh return. Dengan menyisipkan ROP ke dalam suatu nilai tertentu pada stack, akan mengizinkan kode untuk dieksekusi.

Pertama-tama, mari kita lihat bagaimana stack kita saat ini:

 5

Kita tahu bahwa kita tidak bisa mengeksekusi kode pada 000ff6b4, maka kita akan mencari kode yang sah yang dapat kita gunakan. Bayangkan jika tugas pertama kita adalah untuk mendapatkan suatu nilai ke dalam register eax. Kita akan mencari kombinasi pop eax; ret , di dalam modul yang dijalankan oleh proses. Setelah kita menemukannya, katakanlah 00401f60, kita akan menempatkan nilai ini pada stack:

 6

Ketika shellcode ini dieksekusi, maka kita akan mendapatkan peringatan access violation:

 7

CPU saat ini akan selesai melakukan hal berikut :

–          Melompati instruksi pop eax ke alamat 00401f60

–          Pop off 0xCCCCCCCC dari stack, ke dalam eax

–          Mengeksekusi ret, pop 0x43434343 ke dalam eip

–          Mengeluarkan preingatan access violation karena 43434343 bukanlah address memori yang valid

Sekarang, dengan membayangkan hal tersebut, bukannya nilai 43434343, nilai pada 000ff6b8 telah diarahkan ke alamat dari ROP gadget yang lain. Yang mana menunjukkan bahwa pop eax telah dieksekusi, yang kemudian adalah gadget kita berikutnya. Kita dapat menghubungkan gadget kita bersama seperti ini. Tujuan awal kita adalah untuk menemukan address dari proteksi memori API, seperti VirtualProtect, dan menandai stack tersebut sebagai executable. Kemudian kita akan memasukkan final dari ROP gadget untuk melakukan proses instruksi jmp esp dan mengeksekusi shellcode.  Dengan ini, maka DEP dapat diterobos.

ASLR dan Cara Kerjanya

Untuk dapat menambal kekurangan dari DEP, dikembangkan ASLR atau Address Space Layout Randomization. ASLR dikembangkan pada 1997 oleh Memco Software, yang diimplementasikan secara terbatas pada stack randomization sebagai bagian dari produk SeOS Access Control. Pengembangan selanjutnya dilakukan dalam PaX Projects, yang merupakan patch pada Linux kernel, dimana desain dan implementasi pertama ASLR diterapkan pada July 2001. Dan mulai penyempurnaan lebih lanjut mulai Oktober 2002 dengan kernel stack randomization.

ASLR menjaga ketika attacker secara tiba-tiba meloncat ke suatu fungsi yang mudah untuk dieksploitasi pada memori tertentu. ASLR akan melakukan pengacakan (randomization) pada posisi key data area pada suatu program, termasuk base dari executable dan posisi dari alokasi memori stack, memori dinamis, dan libraries pada process’s address space.

Pada Windows Vista dan 7, ASLR akan mengacak lokasi dari file executable, DLL, stack dan heap dalam memori. Ketika file executable dimuat ke dalam memori, Windows akan mendapatkan nilai dari timestamp counter (TSC) dari prosesor, untuk kemudian akan digeser (shifted) 4 kali, melakukan pembagian mod dengan 254, kemudian ditambahkan dengan 1. Hasil dari penghitungan tersebut akan dikalikan dengan 64 KB, dan gambar dari file executable akan dimuat didalam memori. Hal ini berarti ada 256 kemungkinan dari lokasi file executable di dalam memori. File-file DLL, melalui proses, akan secara bersama berada pada memori. Offset dari DLL akan ditentukan dari nilai bias sistem yang akan dihitung saat proses boot. Nilai akan dikomputasi sebagai TSC dari CPU ketika fungsi MiInitializeRelocations pertama kali dipanggil, digeser (shifted), dan disamarkan ke dalam nilai 8 bit. Nilai ini hanya akan dihitung sekali saat proses boot dilakukan.

Ketika DLL dimuat, mereka akan menuju shared memory region antara 0x50000000 dan 0x780000000. DLL pertama yang akan dimuat dalam memori yaitu ntdll.dll, yang akan dimuat pada 0x780000000 – bias * 0x100000, yang mana nilai bias adalah merupakan lebar bias sistem (widesystem bias). Karena menghitung offset module akan menjadi sangat trivial ketika mengetahui base dari ntdll.dll, maka urutan dimana module akan dimuat akan teracak juga.

Ketika threads dibuat, maka lokasi dari stack base mereka akan teracak. Hal ini akan dilakukan dengan menemukan 32 lokasi yang sesuai di dalam memori, untuk kemudian dipilih nilai TSC saat itu dan menggeser serta menyamarkannya ke dalam nilai 5 bit. Setelah base address selesai dihitung, bilangan 9 bit lain yang diturunkan dari TSC akan digunakan untuk menghitung final stack base address. Hal ini secara teoretis akan menghasilkan derajat keteracakan (randomness) yang tinggi.

Pada akhirnya, lokasi dari heap dan alokasinya akan teracak. Hal ini dihitung dari nilai 5-bit TSC yang diturunkan, kemudian dikalikan dengan 64KB, yang akan menghasilkan rentang heap yang memungkinkan dari 00000000 hingga 001f0000.

Ketika mekanisme ASLR ini dikombinasikan dengan DEP, kita akan terhindarkan dari eksekusi shellcode atau proses exploit secara umum. Hal ini tidak hanya dikarenakan kita tidak bisa mengeksekusi stack, melainkan juga kita tidak tahu dimanakah instruksi ROP akan berada di dalam memori.

Referensi:

[1] http://en.wikipedia.org/wiki/Address_space_layout_randomization (diakses 30 Oktober 2013 pukul 18.00)

[2] http://en.wikipedia.org/wiki/Data_Execution_Prevention  (diakses 30 Oktober 2013 pukul 18.00)

[3] http://security.stackexchange.com/questions/18556/ (diakses 29 Oktober 2013 pukul 20.00)

[4] ________, DEP/ASLR Implementation Progress in Popular Third-party Windows Applications, Secunia Research (2010)