Tutorial Apache Hardening

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

Menambah security apache web server, tutorial apache hardening

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

Leave a Comment