13 Tips Security and Hardening Server Web Apache

Kita semua sangat mengenal server web Apache , ini adalah server web yang sangat populer untuk meng-host file web Anda atau situs web Anda di web. Berikut adalah beberapa tautan yang dapat membantu Anda mengonfigurasi server web Apache pada kotak Linux Anda.

Kiat Keamanan Apache

Tips Keamanan dan Pengerasan Apache

  1. Instal Apache Web Server
  2. Siapkan Situs Web Anda di Kotak Linux Anda

Di sini, di tutorial ini, saya akan membahas beberapa tips utama untuk mengamankan server web Anda. Sebelum Anda menerapkan perubahan ini di server web Anda, Anda harus memiliki beberapa dasar-dasar server Apache.

  1. Direktori root dokumen: / var / www / html atau / var / www
  2. File Konfigurasi Utama: /etc/httpd/conf/httpd.conf (RHEL / CentOS / Fedora) dan /etc/apache2/apache2.conf (Debian / Ubuntu).
  3. Port HTTP Default: 80 TCP
  4. Port HTTPS Default: 443 TCP
  5. Uji pengaturan file Konfigurasi dan sintaksis Anda: httpd -t
  6. File Log Akses Server Web: / var / log / httpd / access_log
  7. File Log Kesalahan Server Web: / var / log / httpd / error_log

1. Cara menyembunyikan Versi Apache dan Identitas OS dari Kesalahan

Ketika Anda menginstal Apache dengan sumber atau penginstal paket lain seperti yum , itu akan menampilkan versi server web Apache Anda yang diinstal di server Anda dengan nama Sistem operasi server Anda di Galat . Ini juga memperlihatkan informasi tentang modul Apache yang diinstal di server Anda.

Tampilkan Versi Apache

Tampilkan Versi Apache

Pada gambar di atas, Anda dapat melihat bahwa Apache menunjukkan versinya dengan OS yang diinstal di server Anda. Ini bisa menjadi ancaman keamanan utama bagi server web Anda dan juga kotak Linux Anda. Untuk mencegah Apache agar tidak menampilkan informasi ini kepada dunia, kita perlu membuat beberapa perubahan pada file konfigurasi utama Apache.

Buka file konfigurasi dengan editor vim dan cari ” ServerSignature “, secara default Hidup. Kita perlu mematikantanda tangan server ini dan baris kedua ” ServerTokens Prod ” memberitahu Apache untuk mengembalikan hanya Apache sebagai produk di header respons server pada setiap permintaan halaman, Ini menekan OS, info versi mayor dan minor.

# vim /etc/httpd/conf/httpd.conf (RHEL / CentOS / Fedora)
# vim /etc/apache2/apache2.conf (Debian / Ubuntu)

ServerSignature Mati
ServerTokens Prod

# layanan httpd restart (RHEL / CentOS / Fedora)
# service apache2 restart (Debian / Ubuntu)
Sembunyikan Versi Apache

Sembunyikan Versi Apache

2. Nonaktifkan Listing Direktori

Secara default Apache mencantumkan semua isi direktori root Dokumen tanpa adanya file indeks . Silakan lihat gambar di bawah ini.

Daftar Direktori Apache

Daftar Direktori Apache

Kami dapat mematikan daftar direktori dengan menggunakan direktif Opsi dalam file konfigurasi untuk direktori tertentu. Untuk itu kita perlu membuat entri di file httpd.conf atau apache2.conf .

<Direktori / var / www / html>
    Pilihan -Indeks
</Directory>
Sembunyikan Daftar Direktori Apache

Sembunyikan Daftar Direktori Apache

3. Terus perbarui Apache secara teratur

Komunitas pengembang Apache terus berupaya mengatasi masalah keamanan dan merilis versi terbarunya dengan opsi keamanan baru . Jadi, selalu disarankan untuk menggunakan versi terbaru dari Apache sebagai server web Anda.

Untuk memeriksa versi Apache : Anda dapat memeriksa versi Anda saat ini dengan perintah httpd -v .

# httpd -v
Versi server: Apache / 2.2.15 (Unix)
Server dibangun: 13 Agustus 2013 17:29:28

Anda dapat memperbarui versi Anda dengan perintah berikut.

# yum perbarui httpd
# apt-get install apache2

Anda juga disarankan untuk terus memperbarui Kernel dan OS Anda ke rilis stabil terbaru jika Anda tidak menjalankan aplikasi tertentu yang hanya berfungsi pada OS atau Kernel tertentu.

4. Nonaktifkan Modul yang Tidak Perlu

Itu selalu baik untuk minor kemungkinan menjadi korban dari serangan web apa pun . Jadi disarankan untuk menonaktifkan semua modul yang saat ini tidak digunakan. Anda dapat membuat daftar semua modul server web yang dikompilasi, menggunakan perintah berikut.

# grep LoadModule /etc/httpd/conf/httpd.conf

# harus menempatkan baris `LoadModule 'yang sesuai di lokasi ini jadi
# LoadModule foo_module modules / mod_foo.so
LoadModule auth_basic_module modules / mod_auth_basic.so
LoadModule auth_digest_module modules / mod_auth_digest.so
LoadModule authn_file_module modules / mod_authn_file.so
LoadModule authn_alias_module modules / mod_authn_alias.so
LoadModule authn_anon_module modules / mod_authn_anon.so
LoadModule authn_dbm_module modules / mod_authn_dbm.so
LoadModule authn_default_module modules / mod_authn_default.so
LoadModule authz_host_module modules / mod_authz_host.so
LoadModule authz_user_module modules / mod_authz_user.so
LoadModule authz_owner_module modules / mod_authz_owner.so
LoadModule authz_groupfile_module modules / mod_authz_groupfile.so
LoadModule authz_dbm_module modules / mod_authz_dbm.so
LoadModule authz_default_module modules / mod_authz_default.so
LoadModule ldap_module modules / mod_ldap.so
LoadModule authnz_ldap_module modules / mod_authnz_ldap.so
LoadModule include_module modules / mod_include.so
LoadModule log_config_module modules / mod_log_config.so
LoadModule logio_module modules / mod_logio.so
LoadModule env_module modules / mod_env.so
LoadModule ext_filter_module modules / mod_ext_filter.so
....

Di atas adalah daftar modul yang diaktifkan secara default tetapi sering tidak diperlukan: mod_imap , mod_include , mod_info , mod_userdir , mod_autoindex . Untuk menonaktifkan modul tertentu, Anda dapat memasukkan ” # ” di awal baris itu dan memulai kembali layanan.

5. Jalankan Apache sebagai Pengguna dan Grup yang terpisah

Dengan instalasi default, Apache menjalankan prosesnya dengan tidak ada pengguna atau daemon . Untuk alasan keamanan, disarankan untuk menjalankan Apache di akunnya yang tidak istimewa . Misalnya: http-web .

Buat Pengguna dan Grup Apache
# groupadd http-web
# useradd -d / var / www / -g http-web -s / bin / nologin http-web

Sekarang Anda harus memberi tahu Apache untuk menjalankan dengan pengguna baru ini dan untuk melakukannya, kita perlu membuat entri di /etc/httpd/conf/httpd.conf dan restart layanan.

Buka /etc/httpd/conf/httpd.conf dengan vim editor dan cari kata kunci ” Pengguna ” dan ” Grup ” dan di sana Anda harus menentukan nama pengguna dan nama grup yang akan digunakan.

Pengguna http-web
Grup http-web

6. Gunakan Izinkan dan Tolak untuk Membatasi akses ke Direktori

Kita dapat membatasi akses ke direktori dengan opsi ” Izinkan ” dan ” Tolak ” dalam file httpd.conf . Di sini, dalam contoh ini, kita akan mengamankan direktori root , untuk itu dengan mengatur yang berikut di file httpd.conf .

<Direktori />
   Opsi Tidak Ada
   Order deny, allow
   Tolak dari semuanya
</Directory>
  1. Opsi “Tidak Ada” – Opsi ini tidak akan memungkinkan pengguna untuk mengaktifkan fitur opsional apa pun.
  2. Orde deny, allow – Ini adalah urutan di mana arahan ” Tolak ” dan ” Bolehkan ” akan diproses. Di sini ia akan ” menolak ” pertama dan ” mengizinkan ” berikutnya.
  3. Tolak dari semua – Ini akan menolak permintaan dari semua orang ke direktori root , tidak ada yang akan dapat mengakses direktori root.

7. Gunakan mod_security dan Modul mod_evasive untuk Mengamankan Apache

Dua modul ini “ mod_security ” dan “ mod_evasive ” adalah modul Apache yang sangat populer dalam hal keamanan.

Mod_security

Di mana mod_security berfungsi sebagai firewall untuk aplikasi web kami dan memungkinkan kami untuk memantau lalu lintas secara real time. Ini juga membantu kita melindungi situs web atau server web kita dari serangan brute force . Anda cukup menginstal mod_security di server Anda dengan bantuan pemasang paket default Anda.

Instal mod_security di Ubuntu / Debian
$ sudo apt-get install libapache2-modsecurity
$ sudo a2enmod mod-security
$ sudo /etc/init.d/apache2 pemuatan paksa
Instal mod_security di RHEL / CentOS / Fedora /
# yum instal mod_security
# /etc/init.d/httpd restart
Mod_evasive

mod_evasive bekerja sangat efisien, dibutuhkan satu permintaan untuk memproses dan memprosesnya dengan sangat baik. Ini mencegah serangan DDOS dari melakukan banyak kerusakan. Fitur ini dari mod_evasivememungkinkan untuk menangani HTTP kekerasan dan Dos atau DDos serangan. Modul ini mendeteksi serangan dengan tiga metode.

  1. Jika begitu banyak permintaan datang ke halaman yang sama dalam beberapa kali per detik.
  2. Jika ada proses anak mencoba untuk membuat lebih dari 50 permintaan bersamaan.
  3. Jika ada IP masih mencoba untuk membuat permintaan baru ketika sementara itu daftar hitam .

mod_evasive dapat diinstal langsung dari sumbernya. Di sini, kami memiliki panduan Instalasi dan pengaturan modul-modul ini yang akan membantu Anda mengatur modul-modul Apache ini dalam kotak Linux Anda.

  1. Lindungi Apache menggunakan Mod_Security dan Mod_evasive

8. Nonaktifkan Apache sebagai berikut dari Symbolic Links

Secara default Apache mengikuti symlinks , kita dapat mematikan fitur ini dengan FollowSymLinks dengan direktif Opsi . Dan untuk melakukannya kita perlu membuat entri berikut di file konfigurasi utama.

Opsi -IkutiSymLinks

Dan, jika ada pengguna atau situs web tertentu yang perlu mengaktifkan FollowSymLinks , kita cukup menulis aturan dalam file “ .htaccess ” dari situs web itu.

# Aktifkan tautan simbolis
Pilihan + FollowSymLinks

Catatan: Untuk mengaktifkan aturan penulisan ulang di dalam file ” .htaccess ” ” AllowOverride All ” harus ada dalam konfigurasi utama secara global.

9. Matikan Server Side Includes dan Eksekusi CGI

Kita dapat mematikan sisi server termasuk ( mod_include ) dan eksekusi CGI jika tidak diperlukan dan untuk itu kita perlu memodifikasi file konfigurasi utama.

Pilihan -Termasuk
Pilihan -ExecCGI

Kita dapat melakukan ini untuk direktori tertentu juga dengan tag Direktori. Di sini, dalam contoh ini, kita mematikan eksekusi file Includes dan Cgi untuk direktori “ / var / www / html / web1 ”.

<Direktori "/ var / www / html / web1">
Pilihan -Termasuk -ExecCGI
</Directory>

Berikut adalah beberapa nilai lain yang dapat dinyalakan atau dimatikan dengan direktif Opsi.

  1. Opsi Semua – Untuk mengaktifkan Semua opsi sekaligus. Ini adalah nilai default, Jika Anda tidak ingin menentukan nilai apa pun secara eksplisit di file conf Apache atau .htaccess.
  2. Opsi TermasukNOEXEC – Opsi ini memungkinkan sisi server menyertakan tanpa izin eksekusi ke perintah atau file cgi.
  3. Opsi MultiViews – Memungkinkan konten yang dinegosiasikan multiview dengan modul mod_negotiation.
  4. Opsi SymLinksIfOwnerMatch – Mirip dengan FollowSymLinks. Tapi, ini hanya akan mengikuti ketika pemiliknya sama antara tautan dan direktori asli yang ditautkan.

10. Batasi Ukuran Permintaan

Secara default, Apache tidak memiliki batasan pada ukuran total permintaan HTTP, yaitu tidak terbatas dan ketika Anda mengizinkan permintaan besar pada server web, ada kemungkinan bahwa Anda bisa menjadi korban serangan Denial of service . Kami dapat Membatasi ukuran permintaan arahan Apache ” LimitRequestBody ” dengan tag direktori.

Anda dapat mengatur nilai dalam byte dari 0 ( tidak terbatas ) hingga 2147483647 ( 2GB ) yang diizinkan di badan permintaan. Anda dapat menetapkan batas ini sesuai dengan kebutuhan situs Anda, Misalkan Anda memiliki situs tempat Anda mengizinkan unggahan dan Anda ingin membatasi ukuran unggahan untuk direktori tertentu.

Di sini dalam contoh ini, user_uploads adalah direktori yang berisi file yang diunggah oleh pengguna. Kami menetapkan batas 500 ribu untuk ini.

<Direktori "/ var / www / myweb1 / user_uploads">
   LimitRequestBody 512000
</Directory>

11. Lindungi serangan DDOS dan Pengerasan

Ya, memang benar bahwa Anda tidak dapat sepenuhnya melindungi situs web Anda dari serangan DDos . Berikut adalah beberapa arahan yang dapat membantu Anda untuk mengendalikannya.

  1. TimeOut : Arahan ini memungkinkan Anda untuk mengatur jumlah waktu server akan menunggu sampai acara tertentu selesai sebelum gagal. Nilai standarnya adalah 300 detik . Adalah baik untuk menjaga nilai ini rendah di situs-situs yang terkena serangan DDOS . Nilai ini sangat tergantung pada jenis permintaan yang Anda dapatkan di situs web Anda. Catatan : Ini bisa menimbulkan masalah dengan skrip CGI yangdatang .
  2. MaxClients : Arahan ini memungkinkan Anda untuk menetapkan batas koneksi yang akan dilayani secara bersamaan. Setiap koneksi baru akan antri setelah batas ini. Ini tersedia dengan Prefork dan Workerkeduanya MPM . Nilai defaultnya adalah 256 .
  3. KeepAliveTimeout : Jumlah waktu server akan menunggu permintaan berikutnya sebelum menutup koneksi. Nilai default adalah 5 detik .
  4. LimitRequestFields : Ini membantu kita untuk menetapkan batas pada jumlah bidang header permintaan HTTP yang akan diterima dari klien. Nilai standarnya adalah 100 . Disarankan untuk menurunkan nilai ini jika serangan DDos terjadi sebagai akibat dari begitu banyak header permintaan http.
  5. LimitRequestFieldSize : Ini membantu kita untuk menetapkan batas ukuran pada header Permintaan HTTP.

12. Aktifkan Apache Logging

Apache memungkinkan Anda untuk login secara independen dari logging OS Anda . Adalah bijaksana untuk mengaktifkan pendataan Apache, karena menyediakan lebih banyak informasi, seperti perintah yang dimasukkan oleh pengguna yang telah berinteraksi dengan server Web Anda.

Untuk melakukannya, Anda perlu memasukkan modul mod_log_config . Ada tiga arahan terkait penebangan utama yang tersedia dengan Apache.

  1. TransferLog : Membuat file log.
  2. LogFormat : Menentukan format khusus.
  3. CustomLog : Membuat dan memformat file log.

Anda juga dapat menggunakannya untuk situs web tertentu jika Anda melakukan hosting virtual dan untuk itu Anda perlu menentukannya di bagian virtual host. Sebagai contoh, di sini adalah konfigurasi host virtual situs web saya dengan logging diaktifkan.

<VirtualHost *: 80>
DocumentRoot /var/www/html/example.com/
ServerName www.example.com
DirectoryIndex index.htm index.html index.php
ServerAlias ​​example.com
ErrorDocument 404 /story.php
ErrorLog /var/log/httpd/example.com_error_log 
CustomLog /var/log/httpd/example.com_access_log digabungkan 
</VirtualHost>

13. Mengamankan Apache dengan Sertifikat SSL

Terakhir, tetapi bukan yang terkecil sertifikat SSL , Anda dapat mengamankan semua komunikasi Anda dengan cara terenkripsi melalui Internet dengan sertifikat SSL. Misalkan Anda memiliki situs web di mana orang-orang masuk dengan membuktikan kredensial Login mereka atau Anda memiliki situs web E-Commerce di mana orang-orang memberikan rincian bank mereka atau rincian kartu Debit / Kredit untuk membeli produk, secara default server web Anda mengirimkan rincian ini dalam bentuk teks biasa format tetapi ketika Anda menggunakan sertifikat SSL ke situs web Anda, Apache mengirim semua informasi ini dalam teks terenkripsi.

Anda dapat membeli sertifikat SSl dari Begitu banyak penyedia SSL yang berbeda seperti namecheap.com . Jika Anda menjalankan bisnis web yang sangat kecil dan tidak mau membeli sertifikat SSL, Anda masih dapat menetapkan sertifikat yang ditandatangani sendiri untuk situs web Anda. Apache menggunakan modul mod_ssl untuk mendukung sertifikat SSL .

# openssl genrsa -des3 -out example.com.key 1024
# openssl req -baru -kunci contoh.com.key -keluar exmaple.csr
# openssl x509 -req -days 365 -di example.com.com.csr -signkey example.com.com.key -keluar contoh.com.com.crt

Setelah sertifikat Anda dibuat dan ditandatangani. Sekarang Anda perlu menambahkan ini dalam konfigurasi Apache. Buka file konfigurasi utama dengan editor vim dan tambahkan baris berikut dan restart layanan.

<VirtualHost 172.16.25.125:443>
        SSLEngine aktif
        SSLCertificateFile /etc/pki/tls/certs/example.com.crt
        SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
        SSLCertificateChainFile /etc/pki/tls/certs/sf_bundle.crt
        ServerAdmin ravi.saive@example.com
        ServerName example.com
        DocumentRoot / var / www / html / example /
        ErrorLog /var/log/httpd/example.com-error_log
        CustomLog /var/log/httpd/example.com-access_log umum
</VirtualHost>

Buka browser Anda, ketik https://example.com , dan Anda akan dapat melihat sertifikat yang ditandatangani sendiri .

Ini adalah beberapa tips keamanan yang dapat Anda gunakan untuk mengamankan instalasi server web Apache Anda . Untuk tips dan ide keamanan yang lebih berguna, lihat dokumentasi online resmi Apache HTTP Server .