Mengamankan Apache
Jika Anda menjalankan situs yang menanggung hajat hidup orang banyak Sebaiknya Anda meningkatkan keamanan Web Server Anda.
Bagian ini akan menjelaskan sedikit cara mengamankan APache dari 'serbuan' kaum barbar Hehehe
Sebelum memulai, ada aturan emas yang sebaiknya Anda ikuti :
Jangan sesumbar bahwa website Anda Tak dapat di tembus ! Mengatakan secara terbuka bahwa Hacker bakalan Keok !
Ingatlah selalu diatas langit masih ada langit !
Dengan rendah hati Anda akan selalu waspada dan.........tidak mengundang Macan ke kandang Domba.
Mari kita mengamankan kandang domba :)
Buang Modul Apache lainnya..
Pertimbangkan membuang modul di bawah yang 'biasanya' tidak di pakai.
Cukup beri tanda # pada baris LoadModule.
LoadModule info_module
LoadModule status_module
LoadModule cgi_module
LoadModule dav_fs_module
LoadModule autoindex_module
LoadModule userdir_module
LoadModule include_module
Samarkan Identitas Apache
Senapan angin buat menembak burung. Exocet buat menembak kapal laut. Tomahawk buat menghancurkan gedung.
ServerSignature Off
MaxKeepAliveRequests
Meski di default 100, Jika webserver Anda dari hari ke hari Maksimum cuma di hit < 15 secara bersamaan, kecilkan ajadech. :)
MaxKeepAliveRequests 60
TimeOut
Default 300. Mungkin Anda ingin mengecilkan untuk mengurangi efek DDoS :)
TimeOut 75
KeepAliveTimeout
Mungkin Anda ingin sedikit membesarkan KeepAliveTimeout ?. :)
Semakin besar akan mengurangi performance akses bertubi2 user (karena di beri jangka waktu 10 detik) Tapi hal ini akan mengurangi efek DDoS.
KeepAliveTimeout 10
Disable Trace
Trace umumnya digunakan untuk acara gedebag-debug :). Matikan Trace dengan menambah beberapa baris pada konfigurasi HTTPD Apache.
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
Mod_security
Mod_security perlu dipertimbangkan sebagai firewall internal web server. Modul ini bukan modul default Httpd Apache dan Slackware. Anda bisa memulai dengan mengkompile modul mod_security.c dengan apxs, kemudian memulai dengan rule dasar modsecurity.
Lihat di http://modsecurity.org untuk info lebih lanjut.
Contoh rule dasar :
< IfModule mod_security.c>
# Enable ModSecurity
SecFilterEngine On
# Reject requests with status 403
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
# SecServerSignature "Microsoft-IIS/5.0"
# Designate a directory for temporary files
# storage. It is a good idea to change the
# value below to a private directory, just as
# an additional measure against race conditions
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
# Uncomment below to record responses with unusual statuses
# SecAuditLogRelevantStatus ^5
SecAuditLog /var/log/apache/audit.log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug.log
# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply "text/html" as Content-Type
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"
# Do not accept GET or HEAD requests with bodies
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"
# Require Content-Length to be provided with
# every POST request
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"
# Don't accept transfer encodings we know we don't handle
SecFilterSelective HTTP_Transfer-Encoding "!^$"
< /IfModule>
Chrootjail
Jika ingin repot, model 'penjara' dapat Anda terapkan bagi HTTPD Apache :).
Patch !
Jangan lupakan Patch ! Jika web server Anda sangat kadaluarsa, maka titik rentan sudah terekspos cukup lama. Upgrade program web server Anda jika Ada patch yang tersedia.
PHP
Selain konfigurasi HTTPD Apache, 'tetangga' lain yang perlu mendapat perhatian adalah PHP. Akan saya sarikan dari http://apachesecurity.net chapter 2 mengenai PHP :)
Konfigurasi agak paranoid buat php.ini :P
allow_url_fopen = Off
register_global = Off
enable_dl = Off
expose_php = Off
disable_functions = openlog,apache_child_terminate,apache_get_modules,apache_get_versions,apache_getenv, apache_note,apache_setenv,virtual
open_basedir = /home/slackerbox/public_html/
display_errors = off
display_startup_errors = off
max_input_time = 60
max_execution_time = 30
safe_mode = On
Suhosin Extension.
Alternatif lain untuk mengamankan PHP adalah Patch atau extension dari Suhosin. Lihat di situs mereka. Saya menjelaskan Suhosin di http://slackerbox.com/?q=node/359
Libsafe
Secara global, penggunaan Libsafe (ada di CD extra Slackware) akan menyaring penggunaan/pemanggilan library pada system yang ada kemungkinan akan menyebabkan kerusakan.(Buffer overflow, kiss of death- stack overflow, dan lain2)
Anda tinggal install saja Libsafe, selesai :)
Terakhir, Anda bisa cek keamanan web server dengan tool scanner macam nikto.
Cek dengan Nikto !
Mungkin Anda ingin mencoba program Nikto untuk men-scan web server Anda ? Nikto akan memberitahukan titik lemah web server Anda.
perl nikto.pl -h hostAnda
Akhirnya...Selamat berjuang !