Mencegah Web Deface dengan Mod Security (khusus APACHE SERVER)
Tuesday, November 21st, 2006dua-tiga hari kemaren ada temen gw yg nanyain ‘eh ip 10.14.x.x, siapa sih tu. anak tele apa bukan?’. gw trus bertanya tanya, ada apa dengan ip address itu tadi? dia jawab, ‘kmaren itu ada yg nginputin ga jelas gitu ke web XXX (web LAB ………….. adaa deh ) ‘.ada lagi yang lebih parah, kmaren gw surfing surfing intranet, ngeliat web salah satu lab PPDU kena deface lagi, hal itu malah lebih parah lagi.Mengapa hal itu bisa terjadi? Menurut pendapat gw, web deface tuh berasal dari pengamanan aplikasi web server yang kurang. contohnya, inputan-inputan di web server itu tidak di filter, dari kasus kasus diatas, aplikasi web server mereka mengijinkan inputan bahasa html, javascript, php, (xss -> cross site scripting). Mungkin mereka semua merasa bahwa interface web tuh lebih penting ketimbang security dari aplikasi web tersebut. Oke, sekarang ambil contoh ada suatu web, dimana dia munya inputan buat buku tamu, dalam inputan tersebut, terdapat inputan nama dan salam. trus gw coba nginputin nama tadi dengan inputan sebagai berikut:
COBA DULU
dan inputan salam gw inputin dengan inputan sebagai berikut : alert(”XSS”);. apa yang akan terjadi jika di web tadi tidak di filter inputan inputan seperti diatas? maka yang akan terjadi adalah, web tersebut akan mengeksekusi bahasa html tadi. tampilannya akan berubah. apa yang akan terjadi jika attacker mencoba menginputkan image/gambar di web tersebut? pasti malu lah admin mereka………………………
untuk mencegah serangan web deface seperti diattas, ada cara gampang dan cara susah. cara susahnya adalah, bagi yang suka coding, mereka harus membuat filter-filter inputan untuk menangkal inputan, inputan diatas. bagi yang cara gampang, alias bagi yang enggak suka coding, cukup dengan pake mod security (gw biasa sebut mod_sec). Apa itu mod_sec?, mod_sec berdasarkan arti resmi dari penciptanya adalah “ModSecurity is an embeddable web application firewall. It provides protection from a range of attacks against web applications and allows for HTTP traffic monitoring and real-time analysis with no changes to existing infrastructure. It is also an open source project that aims to make the web application firewall technology available to everyone”. silakan anda mengartikan sendiri.menurut gw mod_sec adalah IDS khusus bwat APACHE. secara default mod_sec, bukan merupakan modul bawaan dari APACHE. jadi kita harus meninstall mod_sec agar dapat menambahkannya menjadi modul APACHE. cara installnya adalah sebagai berikut :
1. dapetin dulu source code mod_security
2. abis itu tar xzvf mod_security-x.x.x.tar.gz
3. masuk ke direktori mod_security-x.x.x/apache2 (gw pake apache 2.x)
4. untuk menambahkan modul mod_sec ke apache, jalankan perintah berikut :
apxs -cia mod_security.c (diasumsikan apxs sudah ada di /bin)
5. apachectl stop
6. apachectl start
mod_sec sudah terinstall sebagai modul apache….. gamppang kan? nah sekarang, kita tinggal menamabahkan konfigurasi mod_sec tersebut ke dalam file httpd.conf. caranya adalah sebagai berikut :
1. buka file httpd.conf
2. tambahkan baris berikut ini.
SecFilterEngine On
SecServerSignature “Microsoft-IIS/6.0″
ServerTokens Full
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off
SecFilterForceByteRange 0 255
SecAuditEngine RelevantOnly
SecAuditLog /var/log/httpd/audit_log
SecFilterDebugLog /var/log/httpd/debug_log
SecFilterDebugLevel 1
SecFilterScanPOST On
SecFilterDefaultAction “deny,log,status:500″
SecFilter “<script”
SecFilter forum/
SecFilter /bin/sh
SecFilter /etc/passwd
SecFIlter “\.\./”
SecFilter “”
SecFilter “<[[:space:]]*script”
SecFilter “delete[[:space:]]+from”
SecFilter “insert[[:space:]]+into”
SecFilter “select[[:space:]]+from”
SecFilter “\.(conf|cf|ini|htpasswd|htaccess|htgroup|inc|history|bash|history|exe|pwd|cnf|dll)”
SecFilterSelective ARG_b2inc “!^$”
SecFilterSelective ARG_authorised “!^$”
SecFilterSelective COOKIE_authorised “!^$”
SecFilterSelective OUTPUT “Volume Serial Number”
SecFilterSelective OUTPUT “Command completed”
SecFilterSelective OUTPUT “Bad command or filename”
SecFilterSelective OUTPUT “file(s) copied”
SecFilterSelective OUTPUT “.*uid\=\(”
Penjelasan baris-per-baris :
SecFilterEngine On = enable filtering engine. jika Off maka mod_sec tidak aktif
SecServerSignature “Microsoft-IIS/6.0″ = mengubah default server signature menjadi Microsoft-IIS/6.0, bukan apache-x.x. untuk membuktikannya, coba nmap server kmu
ServerTokens Full =
SecFilterCheckURLEncoding On = Special character harus di encode sebelum ditransimisikan di URL. dengan SecFilterCheckURLEncoding On, kita dapat mengecek apakah encoding tersebut valid.
SecFilterCheckUnicodeEncoding Off = mendisable validasi unicode/decode.
SecFilterForceByteRange 0 255 = memaksa request hanya terdiri dari byte tertentu ddari rentan waktu byte tertentu, disini didefinisikan byte yang diterima adalah dari 0 hingga 255.
SecAuditEngine RelevantOnly = meng-enable-kan mod_sec logging.RelevantOnly berarti hanya akan me-log request request yang relevant. relevan request adalah request request yang disebabkan karena adanya filter filter dari mod_sec
SecAuditLog /var/log/httpd/audit_log = kemana mod_sec akan dilog?
SecFilterDebugLog /var/log/httpd/debug_log = path untuk mod_sec debug.
SecFilterDebugLevel 1 = mode debug log (default value 0-9)
SecFilterScanPOST On = jika di On, maka modsec tidak hanya akan memeriksa GET variable, tetapi juga POST variable (bisa berasal dari inputan (form) di web).
SecFilterDefaultAction “deny,log,status:500″ = action default dari mod_sec. jika ada suatu filter yang terpenuhi, maka mod_sec akan melakukan action deny, kemudian mod_sec akan me-log request tersebut dan menampilkan status kode html 500 (error request). agar apache dapat menampilkan kode 500, kamu dapat mengubah file httpd.conf, trus cari yg ada tulisan 500, ubah aja sesuai dengan nama filenya
tiba saat yg paling mengasyikkan:
SecFilter “<script” = jika dalam suatu inputan/url terdapat tulisan <script, maka mod_sec akan melakukan aksinya seperti yang telah didefinisikan di SecFilterDefaultAction “deny,log,status:500″.
SecFilter forum/ = mod_sec akan mencegah request masuk ke direktori forum/
SecFilter /bin/sh = mod_sec akan mencegah pengeksekusian perintah /bin/sh
SecFilter /etc/passwd = mod_sec akan mencegah pengaksesan /etc/passwd
SecFIlter “\.\./” = mencegah PATH transversal attack
SecFilter “” = jika ada suatu inputan yang diawali dengan karakter ”, maka akan di reject request tersebut.
SecFilter “<[[:space:]]*script” = hampir sama dengan yang diatas, jika ada karakter yang diawali dengan ‘<’ dan ada terdapat kata script, maka akan di reject request tsb
SecFilter “delete[[:space:]]+from” = mencegah sql Injection, yaitu dimana di dalam suatu url jika ada tulisan delete xxxxx from, maka request ditolak, atau di reject.
SecFilter “insert[[:space:]]+into” = sama dengan yg diatas……….
SecFilter “select[[:space:]]+from” = idem juga,
SecFilter “\.(conf|cf|ini|htpasswd|htaccess|htgroup|inc|history|bash|history|exe|pwd|cnf|dll)” = mencegah pengaksesan file yg berekstensi conf,cf,ini,htpasswd,htaccess,htgroup,inc,history,bash,history,exe,pwd,cnf,dll
mungkin cukup segitu dulu penjelasan tentang mod_security, kamu dapat juga menambahkan rule-rule yang lain. tergantung dari kamu juga untuk mengeksplorasi lebih jauh lagi tenang mod security..,
hampir lupa, rule diatas, masih belum relatif aman/ secure. kalo ada salah tolong dibenerin yee……………..
happy ngoprek…………………………….