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)

Mitigation Strategy #32 – Langkah-langkah mudah blok IP address dari dalam network dengan konfigurasi router

Pendahuluan

Keamanan informasi menurut HISA framework [1] memiliki 3 buah komponen dimensi meliputi manusia, proses dan teknologi. Tiga buah komponen tersebut saling melengkapi satu sama lain demi terwujudnya keamanan informasi yang mendukung tujuan bisnis maupun organisasi. Persepsi yang beredar pada khalayak umum “teknologi yang canggih menjamin keamanan informasi”. Tentu hal tersebut tidak akan terjadi jika proses dan manusia yang menggunakannya tidak mengerti pentingnya keamanan informasi. Proses yang dimaksud merupakan prosedur kerja, kebijakan organisasi dan standar kerja yang melekat pada sistem untuk mencapai tujuan organisasi bagian keamanannya. Proses yang menjunjung tinggi keamanan informasi dapat dicapai bila pimpinan perusahaan atau organisasi telah sadar akan keamanan informasi. Sehingga faktor terakhir yang perlu diurus adalah manusia.

Ancaman yang berasal dari manusia

Manusia pada konteks ancaman dapat berupa faktor internal dan eksternal. Faktor eksternal dapat berupa pengguna layanan teknologi maupun orang luar yang mencoba menyerang sistem untuk kepentingannya. Faktor eksternal dapat diredam dengan pengamanan berlapis (defense in depth) yang dirancang dengan baik. Sama berbahayanya dengan faktor eksternal, faktor internal juga dapat menjadi ancaman paling besar, bahkan kebanyakan ancaman pada keamanan informasi muncul dari faktor internal[2]. Tidak seperti mesin yang mudah diatur dan sedikit variabel, manusia memiliki banyak variabel yang dapat menjadi vulnerabilities untuk di-exploit. Vulnerabilities tersebut meliputi lalai, lupa, ceroboh, tidak patuh dan banyak lagi yang bisa menjadi ancaman besar dalam keamanan informasi.

Dewasa ini, internet sudah menjadi hal yang wajib dalam suatu organisasi atau perusahaan. Kedatangan internet membantu suatu badan dalam konektivitas, produksi, penyimpanan data dan layanan lainnya yang tidak ditemui sebelumnya bahkan dengan harga yang relatif murah. Hanya saja selain keuntungan juga timbul ancaman yang sama besar dengan keuntungannya. Ancaman tersebut sesuai dengan model keamanan (gambar 1) yang membahayakan confidentiality, integrity dan availability[3] dari badan tersebut. Kembali merujuk tiga komponen sebelumnya dalam HISA framework yaitu manusia, proses dan teknologi. Manusia sebagai salah satu sebab kerentanan, harus diminimalisir khususnya dari bagian internal. Minimalisir ancaman tersebut beragam antara lain memberikan kesadaran pada manusianya, membuat kebijakan, hingga implementasi teknologi yang mendukung.

cia_triad

Gambar 1. Model Komponen Cyber Security

Ancaman dari dalam perusahaan atau organisasi sangat beragam. Hal yang biasa terjadi merupakan kecerobohan seperti menggunakan flashdisk, mencatat password di media fisik, tidak tertib dengan peraturan perusahaan, hingga kecerobohan dalam menggunakan internet.

Malicious Site

Tidak dapat dipungkiri bahwa kini banyak situs yang berbahaya[4]. Situs tersebut memungkinkan komputer pengunjung disusupi spyware, worm, trojan dan malicious code lainnya, baik dilindungi anti-virus maupun tidak. Untuk itu menjadi perlu adanya interfensi dari perusahaan atau organisasi untuk blok akses internet pada beberapa situs yang dikenal dan diduga mengandung malicious code.

Cara blok akses situs dari dalam memiliki metode dan implementasi yang beragam. Metode tersebut meliputi packet filtering, url block, domain block, dan lainnya. Begitu juga dengan implementasi yang memiliki beragam cara pula seperti setting router, proxy server, firewall, mikrotik, patch panel dan lainnya. Pada artikel ini dibahas langkah-langkah mudah blok IP address dari dalam jaringan pada router.

Blok IP address dapat dilakukan melalui berbagai cara meliputi router, proxy server dan firewall. Blok IP address dari dalam jaringan bertujuan agar pengguna tidak masuk ke dalam situs-situs berbahaya, yang dapat menurunkan produktifitas hingga faktor keamanan. Blok IP address lebih aman dibandingkan blok nama domain. Hal ini dikarenakan jika DNS server berhasil diserang dan mengarahkan suatu situs ke IP address yang tidak seharusnya (biasanya malicious), maka hal tersebut biasanya tidak terdeteksi oleh domain name filter. Tetapi hal tersebut tidak berlaku untuk IP address filtering, karena yang diblok adalah IP address-nya tidak peduli apapun nama domain-nya.

Blok melalui router

Router merupakan sebuah alat untuk mengirimkan paket data dalam jaringan komputer. Router kini menjadi hal yang umum dimiliki karena dapat membagi IP address publik menjadi beberapa IP address privat. Router baik yang disediakan oleh ISP hingga yang dapat dibeli di pasaran, tidak hanya memiliki fungsi routing saja tetapi juga memiliki fungsi memfilter paket. Hanya saja fungsi filter paket yang dimiliki router terbatas hingga beberapa IP address saja[5]. Sehingga bila dibutuhkan banyak IP address untuk di blok, lebih baik menggunakan firewall. Pada percobaan ini penulis menggunakan router TP-LINK sehingga untuk router lain harus disesuaikan konfigurasinya.

Langkah-langkah untuk blok IP address pada router TP-LINK sebagai berikut :
1. Masuk ke router admin yang biasa terdapat pada IP address 192.168.1.1

gambar2

Gambar 2. Address router gateway

2. Masukkan username dan password
gambar3

Gambar 3. Masukkan username dan password router3. Masuk ke access management > filter
gambar4

Gambar 4. Tampilan panel IP filtering

4. Kemudian set untuk index 1

5. Set interface PVC 1, hal ini karena PVC 0 digunakan untuk host, dan PVC terakhir untuk broadcast

6. Set direction menjadi incoming, hal ini karena kita inginkan blok akses situs dari dalam

7. Set Active menjadi yes

8. Pada kali ini dilakukan blok IP address sakana.com (50.62.230.1)

9. isi Source IP address dengan 0.0.0.0, subnet 0.0.0.0 dan port 0 (untuk mengikat seluruh user), isikan Destination IP address yang akan di blok 50.62.230.1, subnet 255.255.255.255 dan port 0

10. click save.

 

Verifikasi

Setelah melakukan konfigurasi tersebut maka diperlukan verifikasi. Verifikasi yang akan dilakukan adalah memanggil situs yang akan diblok berdasarkan domain namenya dan IP address-nya. Situs yang digunakan untuk diblok adalah sakanamn.com (50.62.230.1). Sebelum dilakukan konfigurasi diatas terlihat pada gambar 5 bahwa website dapat diakses.

gambar5

Gambar 5. Sebelum filter IP address dinyalakan

gambar6

Gambar 6. Setalah filter dinyalakan percobaan dengan IP address

gambar7

Gambar 7. Setelah filter dinyalakan percobaan dengan nama domain

Setelah dinyalakan IP address filtering, maka dihasilkan tampilan seperti pada gambar 6 dan gambar 7. Pada gambar 6 verifikasi ini dicoba masukan IP address dan terlihat bahwa ditampilkan request time out. Sedang pada gambat 7 verifikasi ini dicoba dengan masukan nama domain dan tertampilkan hasil request time out. Hasil menunjukkan filter berhasil dilakukan, dengan hasil IP address yang ingin diakses maupun domain name tidak memberikan respon. Hal tersebut menghasilkan request time out karena terdapat batasan waktu dari browser untuk memproses request yang tidak kunjung datang.

Kesimpulan

Dari hasil tersebut maka dapat diimplementasikan blok IP address menggunakan router. Blok IP address dengan router terbatas oleh jumlah yang dapat diblok, sehingga jika membutuhkan IP address yang diblok dalam jumlah banyak akan lebih baik menggunakan web proxy atau firewall. Langkah-langkah diatas cukup mudah diimplementasikan pada network yang kecil yang tidak membutuhkan memblok banyak IP address.

-M. Fadhli Zakiy (232 13 127) & Renard X. A. Pramono (232 13 031)-

Referensi

1. HISA framework, Hogan Kusnadi, [online diakses pada 23 Oktober 2013]
http://www.aptika.kominfo.go.id/forumegov2011/unduh.php?name=forum-egov3.pptx&ei=_qRuUsvcHceNrQfq0YCwCg&usg=AFQjCNHWXQJmX4ucap9KW0g4iZjWvcUq0g&sig2=sz_jKi32GOAI27I7SfLblA&bvm=bv.55123115,d.bmk
2. Sambutan Kapusdatin Kemhan pada pembukaan Workshop Keamanan Informasi, [online diakses pada 25 Oktober 2013]
http://pusdatin.kemhan.go.id/artikel.php?id_artikel=6
3. Confidentiality, Integrity, and Availability, [online diakses pada 30 Oktober 2013]
http://it.med.miami.edu/x904.xml
4. Malware Domain List, [online diakses pada 30 Oktober 2013]
http://www.malwaredomainlist.com/mdl.php
5. TP-LINK user guide
http://www.tp-link.com/resources/document/TD-W8901N_V1_User_Guide_191001.pdf