Apache merupakan salah satu webserver yang paling banyak digunakan.
Akibatnya banyak pihak yang mencari kelemahan dari apache, terutama melakukan identifikasi bug-bug yang dimiliki oleh Apache untuk selanjutnya dilakukan penetrasi ke dalam server.
Untuk memperkuat keamanan dari Apache, ada beberapa langkah yang dapat di lakukan.
Sebelumnya perlu diingat bahwa hardening yang dilakukan harus disesuaikan dengan kebutuhan layanan dari website yang kita kelola, karena beberapa dari hardening akan membatasi fitur dari web server kita.
Tutorial Apache Hardening
Berikut saya memberikan beberapa tips untuk melakukan hardening terhadap Apache webserver:
Menyembunyikan versi dan OS, edit httpd.conf
ServerSignature Off -> untuk menghilangkan signature dari server
ServerTokens Prod -> untuk menghilangkan Server HTTP Header, Server: Apache
Pastikan apache berjalan dibawah akun user dan grup
User apache
Group apache
Pastikan file di luar web root tidak dapat dijalankan, misal dibawah /web
<Directory />
Order Deny, Allow
Deny from all
Options None
AllowOverride None
</Directory>
<Directory /web>
Order Allow, Deny
Allow from all
</Directory>
Option none(mematikan semua option) AllowOverride None(mematikan Override dari server): jadi harus disetting secara eksplisit di masing-masing direktori yang membutuhkan option atau override
Mematikan directory browsing
Options -Indexes, bisa juga diletakkan di dalam tag Directory
Mematikan server side includes
Options -Includes
Mematikan CGI execution
Options -ExcecCGI
Tidak memperbolehkan apache untuk mengikuti symbolic links
Options –FollowSymLinks
Mematikan multiple Options (langsung semua service dimatikan, dan harus di declare manual untuk mengaktifkan)
Options None
Mematikan support untuk .htaccess file
AllowOverride None
Jika membutuhkan overrides, memastikan suatu file tidak dapat di download atau diganti nama selain .htaccess, kita dapat mengubahnya ke .httpdoverride, dan blok semua file yang berawalan .ht sehingga file tersebut tidak dapat didownload
AccessFileName .httpdoverride
<Files ~ “^\.ht”>
Order allow, deny
Deny from all
Satisfy All
</Files>
Jalankan mod_security
Disable module yang ga perlu
Lihat httpd.conf yang berisi LoadModule, yang ga perlu cukup tambahkan "#" di depan (tanpa tanda petik)
Untuk mencari modul yang berjalan: grep LoadModule httpd.conf atau grep -n LoadModule httpd.conf
Module yang seringkali enable tapi jarang dibutuhkan:
mod_imap, mod_include, mod_info, mod_userdir,mod_status, mod_cgi, mod_autoindex.
Pastikan hanya root yang bisa mengakses apache’s config dan binaries
Misalkan apache terletak pada /usr/local/apache
Chown –R root:root /usr/local/apache
Chmod –R o-rwx /usr/local/apache
Kecilkan nilai Timeout, default nya 300 detik
Timeout 45
Batasi request yang besar,
Misal tidak boleh upload file yang lebih dari 1MB
LimitRequestBody 1048576
Lihat juga: LimitRequestFields, LimitRequestFieldSize, Limit RequestLine
Batasi ukuran body XML
Jika menjalankan mod_dav,maka kemjungkinan perlu dibatasi
LimitXMLRequestBody 10485760 (hanya terdapat di apache 2)
Jika value = 0, maka berapapun size file, dapat di upload
Batasi concurrency
MaximumClients
MaxSpareServers, MaxRequestPerChild, di apache 2: ThreadsPerChild, ServerLimit, MaxSpareThreads
Restricting Access by IP
Order Deny, Allow
Deny from all
Allow from 176.16.0.0/16
Atau
Allow from 127.0.0.1
Adjusting KeepAlive settings, defaultnya 100
MaxKeepAliveRequests 15
Jalankan Apache di Chroot environment
SecChrootDir /chroot/apache
Selain beberapa cara di atas, tentunya masih banyak cara yang lebih ampuh, misalnya menambahkan su-PHP, dan sebagainya. Tetapi untuk perlindungan minimal, cara di atas sudah cukup ampuh. Jika ada tambahan, atau saran hardening yang lebih ampuh, silakan beri komentar di bawah