SecuringApache

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 :

    Rendah hatilah !

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 !