Panduan Pengerasan dan Keamanan Server Web Apache

Diterbitkan: 2015-02-14

Panduan praktis untuk mengamankan dan memperkuat Apache HTTP Server.

Server Web adalah bagian penting dari aplikasi berbasis web. Apache Web Server sering ditempatkan di tepi jaringan sehingga menjadi salah satu layanan yang paling rentan untuk diserang.

Memiliki konfigurasi default menyediakan banyak informasi sensitif yang dapat membantu peretas untuk mempersiapkan serangan terhadap aplikasi. Mayoritas serangan aplikasi web melalui XSS, Info Leakage, Session Management dan serangan SQL Injection yang disebabkan oleh kode pemrograman yang lemah dan kegagalan untuk membersihkan infrastruktur aplikasi web.

Penelitian menarik oleh Positive Technologies mengungkapkan, 52% dari aplikasi yang dipindai memiliki kerentanan yang tinggi.

laporan kerentanan

Pada artikel ini, saya akan berbicara tentang beberapa praktik terbaik untuk mengamankan server HTTP Apache di platform Linux.

Berikut ini diuji pada Apache versi 2.4.x.

  • Ini mengasumsikan Anda telah menginstal Apache pada platform UNIX. Jika tidak, Anda dapat melalui panduan Instalasi.
  • Saya akan memanggil direktori instalasi Apache /opt/apache sebagai $Web_Server di seluruh panduan ini.
  • Anda disarankan untuk membuat cadangan file konfigurasi yang ada sebelum modifikasi apa pun.

Hadirin

Ini dirancang untuk Administrator Middleware, Dukungan Aplikasi, Analis Sistem, atau siapa pun yang bekerja atau ingin mempelajari pedoman Pengerasan & Keamanan.

Pengetahuan yang adil tentang Apache Web Server & perintah UNIX adalah wajib.

Catatan

Anda memerlukan beberapa alat untuk memeriksa Header HTTP untuk beberapa verifikasi implementasi. Ada dua cara untuk melakukan ini.

  1. Gunakan alat pengembang bawaan browser untuk memeriksa header HTTP. Biasanya, itu di bawah tab Jaringan
  2. Gunakan alat pemeriksa tajuk respons HTTP online

Hapus Spanduk Versi Server

Saya akan mengatakan ini adalah salah satu hal pertama yang perlu dipertimbangkan, karena Anda tidak ingin mengekspos versi server web yang Anda gunakan. Mengekspos versi berarti Anda membantu peretas untuk mempercepat proses pengintaian.

Konfigurasi default akan mengekspos Versi Apache dan tipe OS seperti yang ditunjukkan di bawah ini.

apache-server-spanduk

  • Buka folder $Web_Server/conf
  • Ubah httpd.conf dengan menggunakan editor vi
  • Tambahkan direktif berikut dan simpan httpd.conf
 ServerTokens Prod ServerSignature Off
  • Mulai ulang apache

ServerSignature akan menghapus informasi versi dari halaman yang dibuat oleh Apache.

ServerTokens akan mengubah Header menjadi produksi saja, yaitu Apache

Seperti yang Anda lihat di bawah, informasi versi & OS hilang.

apache-server-spanduk-bertopeng

Nonaktifkan daftar browser direktori

Nonaktifkan daftar direktori di browser, sehingga pengunjung tidak melihat semua file dan folder yang Anda miliki di bawah root atau subdirektori.

Mari kita uji bagaimana tampilannya di pengaturan default.

  • Buka direktori $Web_Server/htdocs
  • Buat folder dan beberapa file di dalamnya
 # mkdir test # touch hi # touch hello

Sekarang, mari kita coba mengakses Apache dengan http://localhost/test

apache-direktori-daftar

Seperti yang Anda lihat, itu mengungkapkan semua file/folder yang Anda miliki dan saya yakin Anda tidak ingin mengeksposnya.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi
  • Cari Direktori dan ubah direktif Opsi menjadi Tidak Ada atau –Indeks
 <Directory /opt/apache/htdocs> Options -Indexes </Directory>

(atau)

 <Directory /opt/apache/htdocs> Options None </Directory>
  • Mulai ulang Apache

Catatan : jika Anda memiliki beberapa arahan Direktori di lingkungan Anda, Anda harus mempertimbangkan untuk melakukan hal yang sama untuk semua.

Sekarang, mari kita coba mengakses Apache dengan http://localhost/test

dinonaktifkan-direktori-daftar

Seperti yang Anda lihat, ini menampilkan kesalahan terlarang alih-alih menampilkan daftar folder uji.

Etag

Ini memungkinkan penyerang jarak jauh untuk mendapatkan informasi sensitif seperti nomor inode, batas MIME multi-bagian, dan proses anak melalui header Etag.

Untuk mencegah kerentanan ini, mari kita implementasikan seperti di bawah ini. Ini diperlukan untuk memperbaiki kepatuhan PCI.

  • Buka direktori $Web_Server/conf
  • Tambahkan direktif berikut dan simpan httpd.conf
 FileETag None
  • Mulai ulang apache

Jalankan Apache dari akun yang tidak memiliki hak istimewa

Sebuah instalasi default berjalan sebagai tidak ada atau daemon. Menggunakan pengguna non-istimewa terpisah untuk Apache itu bagus.

Idenya di sini adalah untuk melindungi layanan lain yang berjalan jika ada lubang keamanan.

  • Buat pengguna dan grup bernama Apache
 # groupadd apache # useradd –G apache apache
  • Ubah kepemilikan direktori instalasi Apache menjadi pengguna non-hak istimewa yang baru dibuat
 # chown –R apache:apache /opt/apache
  • Buka $Web_Server/conf
  • Ubah httpd.conf menggunakan vi
  • Cari Petunjuk Pengguna & Grup dan ubah sebagai apache akun non-hak istimewa
 User apache Group apache
  • Simpan httpd.conf
  • Mulai ulang Apache

grep untuk menjalankan proses http dan pastikan itu berjalan dengan pengguna Apache

 # ps –ef |grep http

Anda akan melihat satu proses berjalan dengan root. Itu karena Apache mendengarkan pada port 80 dan harus dimulai dengan root.

Lindungi izin direktori biner dan konfigurasi

Secara default, izin untuk biner dan konfigurasi adalah 755 yang berarti setiap pengguna di server dapat melihat konfigurasi. Anda dapat melarang pengguna lain untuk masuk ke folder conf dan bin.

  • Buka direktori $Web_Server
  • Ubah izin folder bin dan conf
 # chmod –R 750 bin conf

Perlindungan Pengaturan Sistem

Dalam instalasi default, pengguna dapat mengganti konfigurasi apache menggunakan .htaccess. Jika Anda ingin menghentikan pengguna mengubah pengaturan server apache Anda, Anda dapat menambahkan AllowOverride ke None seperti yang ditunjukkan di bawah ini.

Ini harus dilakukan di tingkat root.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi
  • Cari Direktori di tingkat root
 <Directory /> Options -Indexes AllowOverride None </Directory>
  • Simpan httpd.conf
  • Mulai ulang Apache

Metode Permintaan HTTP

Protokol HTTP 1.1 mendukung banyak metode permintaan yang mungkin tidak diperlukan dan beberapa di antaranya memiliki potensi risiko.

Biasanya Anda mungkin memerlukan metode permintaan GET, HEAD, POST dalam aplikasi web, yang dapat dikonfigurasi dalam direktif Direktori masing-masing.

Konfigurasi default mendukung metode OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT dalam protokol HTTP 1.1.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi
  • Cari Direktori dan tambahkan yang berikut ini
 <LimitExcept GET POST HEAD> deny from all </LimitExcept>
  • Mulai ulang Apache

Nonaktifkan Lacak Permintaan HTTP

Secara default, metode Trace diaktifkan di server web Apache.

Mengaktifkan ini dapat memungkinkan serangan Pelacakan Lintas Situs dan berpotensi memberikan opsi kepada peretas untuk mencuri informasi cookie. Mari kita lihat bagaimana tampilannya dalam konfigurasi default.

  • Lakukan IP server web telnet dengan port mendengarkan
  • Buat permintaan TRACE seperti yang ditunjukkan di bawah ini
 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 200 OK Date: Sat, 31 Aug 2013 02:13:24 GMT Server: Apache Transfer-Encoding: chunked Content-Type: message/http 20 TRACE / HTTP/1.1 Host: test 0 Connection closed by foreign host. #

Seperti yang Anda lihat di permintaan TRACE di atas, itu telah menjawab pertanyaan saya. Mari kita nonaktifkan dan ujilah.

  • Buka direktori $Web_Server/conf
  • Tambahkan direktif berikut dan simpan httpd.conf
 TraceEnable off
  • Mulai ulang apache

Lakukan IP server web telnet dengan mendengarkan port dan membuat permintaan TRACE seperti gambar di bawah ini

 #telnet localhost 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. TRACE / HTTP/1.1 Host: test HTTP/1.1 405 Method Not Allowed Date: Sat, 31 Aug 2013 02:18:27 GMT Server: Apache Allow:Content-Length: 223Content-Type: text/html; charset=iso-8859-1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>405 Method Not Allowed</title> </head><body> <h1>Method Not Allowed</h1> <p>The requested method TRACE is not allowed for the URL /.</p> </body></html> Connection closed by foreign host. #

Seperti yang Anda lihat dalam permintaan TRACE di atas, permintaan saya telah diblokir dengan Metode HTTP 405 Tidak Diizinkan.

Sekarang, server web ini tidak mengizinkan permintaan TRACE dan membantu memblokir serangan Pelacakan Lintas Situs.

Setel cookie dengan HttpOnly dan bendera Aman

Anda dapat mengurangi sebagian besar serangan Cross Site Scripting yang umum menggunakan HttpOnly dan bendera Aman dalam cookie. Tanpa HttpOnly dan Secure, dimungkinkan untuk mencuri atau memanipulasi sesi aplikasi web dan cookie, dan itu berbahaya.

  • Pastikan mod_headers.so diaktifkan di httpd.conf . Anda
  • Buka direktori $Web_Server/conf
  • Tambahkan direktif berikut dan simpan httpd.conf
 Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
  • Mulai ulang apache

Serangan Clickjacking

Clickjacking adalah kerentanan aplikasi web yang terkenal.

  • Pastikan mod_headers.so diaktifkan di httpd.conf . Anda
  • Buka direktori $Web_Server/conf
  • Tambahkan direktif berikut dan simpan httpd.conf
 Header always append X-Frame-Options SAMEORIGIN
  • Mulai ulang apache

apache-x-frame-options

X-Frame-Options juga mendukung dua opsi lagi yang saya jelaskan di sini.

Sisi Server Termasuk

Server Side Include (SSI) memiliki risiko meningkatkan beban pada server. Jika Anda telah berbagi lingkungan dan aplikasi web lalu lintas padat, Anda harus mempertimbangkan untuk menonaktifkan SSI dengan menambahkan direktif Termasuk dalam Opsi.

Serangan SSI memungkinkan eksploitasi aplikasi web dengan menyuntikkan skrip di halaman HTML atau mengeksekusi kode dari jarak jauh.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi
  • Cari Direktori dan tambahkan Termasuk dalam direktif Opsi
 <Directory /opt/apache/htdocs> Options –Indexes -Includes Order allow,denyAllow from all </Directory>
  • Mulai ulang Apache

Catatan: jika Anda memiliki beberapa arahan Direktori di lingkungan Anda, Anda harus mempertimbangkan untuk melakukan hal yang sama untuk semua.

Perlindungan X-XSS

Perlindungan Cross Site Scripting (XSS) dapat dilewati di banyak browser. Anda dapat menerapkan perlindungan ini untuk aplikasi web jika dinonaktifkan oleh pengguna. Ini digunakan oleh sebagian besar perusahaan web raksasa seperti Facebook, Twitter, Google, dll.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi dan tambahkan arahan Header berikut
 Header set X-XSS-Protection "1; mode=block"
  • Mulai ulang Apache

Seperti yang Anda lihat, XSS-Protection disuntikkan di header respons.

apache-xss

Nonaktifkan Protokol HTTP 1.0

Ketika kita berbicara tentang keamanan, kita harus melindungi sebanyak yang kita bisa. Jadi mengapa kita menggunakan protokol versi HTTP yang lebih lama, mari kita nonaktifkan juga?

HTTP 1.0 memiliki kelemahan keamanan terkait dengan pembajakan sesi. Kita dapat menonaktifkan ini dengan menggunakan modul mod_rewrite.

  • Pastikan untuk memuat modul mod_rewrite di file httpd.conf
  • Aktifkan arahan RewriteEngine sebagai berikut dan tambahkan kondisi Rewrite untuk mengizinkan hanya HTTP 1.1
 RewriteEngine On RewriteCond %{THE_REQUEST} !HTTP/1.1$ RewriteRule .* - [F]

Konfigurasi nilai batas waktu

Secara default, nilai time-out Apache adalah 300 detik, yang dapat menjadi korban serangan Slow Loris dan DoS. Untuk mengurangi ini, Anda dapat menurunkan nilai batas waktu menjadi mungkin 60 detik.

  • Buka direktori $Web_Server/conf
  • Buka httpd.conf menggunakan vi
  • Tambahkan yang berikut ini di httpd.conf
 Timeout 60

SSL

Memiliki SSL adalah lapisan keamanan tambahan yang Anda tambahkan ke dalam Aplikasi Web. Namun, konfigurasi SSL default menyebabkan kerentanan tertentu, dan Anda harus mempertimbangkan untuk mengubah konfigurasi tersebut.

Kunci SSL

Melanggar kunci SSL itu sulit, tetapi bukan tidak mungkin. Ini hanya masalah daya komputasi dan waktu.

Seperti yang mungkin Anda ketahui, menggunakan PC era 2009 yang retak selama sekitar 73 hari, Anda dapat merekayasa balik kunci 512-bit.

Jadi semakin tinggi panjang kunci yang Anda miliki, semakin rumit untuk memecahkan kunci SSL. Mayoritas Perusahaan Web raksasa menggunakan kunci 2048 bit, seperti di bawah ini jadi mengapa kita tidak?

  • Outlook.com
  • Microsoft.com
  • Live.com
  • Skype.com
  • Apple.com
  • Yahoo.com
  • Bing.com
  • Hotmail.com
  • Twitter.com

Anda dapat menggunakan OpenSSL untuk menghasilkan CSR dengan 2048 bit seperti di bawah ini.

 openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key

Ini akan menghasilkan CSR yang perlu Anda kirim ke otoritas sertifikat untuk menandatanganinya. Setelah Anda menerima file sertifikat yang ditandatangani, Anda dapat menambahkannya di file httpd-ssl.conf

 SSLCertificateFile #Certificate signed by authority SSLCertificateChainFile #Certificate signer given by authority SSLCertificateKeyFile #Key file which you generated above
  • Mulai ulang server web Apache dan coba akses URL dengan https

Sandi SSL

SSL Cipher adalah algoritma enkripsi, yang digunakan sebagai kunci antara dua komputer melalui Internet. Enkripsi data adalah proses mengubah teks biasa menjadi kode sandi rahasia.

Berdasarkan konfigurasi SSL Cipher server web Anda, enkripsi data akan dilakukan. Jadi penting untuk mengkonfigurasi SSL Cipher, yang lebih kuat dan tidak rentan.

  • Buka folder $Web_Server/conf/extra
  • Ubah arahan SSLCipherSuite di httpd-ssl.conf seperti di bawah ini untuk hanya menerima algoritma enkripsi yang lebih tinggi
 SSLCipherSuite HIGH:!MEDIUM:!aNULL:!MD5:!RC4
  • Simpan file konfigurasi dan mulai ulang server Apache

Catatan: jika Anda memiliki banyak sandi lemah dalam laporan audit SSL, Anda dapat dengan cepat menolaknya dengan menambahkan ! pada awalnya.

Nonaktifkan SSL v2 & v3

SSL v2 & v3 memiliki banyak kelemahan keamanan, dan jika Anda bekerja untuk uji penetrasi atau kepatuhan PCI, maka Anda diharapkan untuk menutup penemuan keamanan untuk menonaktifkan SSL v2/v3.

Setiap komunikasi SSL v2/v3 mungkin rentan terhadap serangan Man-in-The-Middle yang dapat memungkinkan gangguan atau pengungkapan data.

Mari kita terapkan server web apache untuk hanya menerima TLS terbaru dan menolak permintaan koneksi SSL v2/v3.

  • Buka folder $Web_Server/conf/extra
  • Ubah arahan SSLProtocol di httpd-ssl.conf seperti di bawah ini untuk menerima hanya TLS 1.2+
 SSLProtocol –ALL +TLSv1.2

Setelah Anda selesai dengan konfigurasi SSL, ada baiknya untuk menguji aplikasi web Anda dengan alat Sertifikat SSL/TLS online untuk menemukan kesalahan konfigurasi.

Keamanan Mod

Mod Security adalah Firewall Aplikasi Web sumber terbuka, yang dapat Anda gunakan dengan Apache.

Itu datang sebagai modul yang harus Anda kompilasi dan instal. Jika Anda tidak mampu membeli firewall aplikasi web komersial, ini akan menjadi pilihan yang sangat baik untuk melakukannya.

Untuk memberikan perlindungan aplikasi web generik, Aturan Inti menggunakan teknik berikut:

  • Perlindungan HTTP – mendeteksi pelanggaran protokol HTTP dan kebijakan penggunaan yang ditentukan secara lokal
  • Pencarian Daftar Hitam Real-time – menggunakan Reputasi IP Pihak Ketiga
  • Deteksi Malware Berbasis Web – mengidentifikasi konten web berbahaya dengan memeriksa Google Safe Browsing API.
  • Perlindungan Penolakan Layanan HTTP – pertahanan terhadap Banjir HTTP dan Serangan HTTP DoS Lambat.
  • Perlindungan Serangan Web Umum – mendeteksi serangan keamanan aplikasi web umum
  • Deteksi Otomatisasi – Mendeteksi bot, crawler, pemindai, dan aktivitas permukaan berbahaya lainnya
  • Integrasi dengan AV Scanning for File Uploads – mengidentifikasi file berbahaya yang diunggah melalui aplikasi web.
  • Melacak Data Sensitif – Melacak penggunaan Kartu Kredit dan memblokir kebocoran.
  • Perlindungan Trojan – Mendeteksi akses ke kuda Trojan.
  • Identifikasi Cacat Aplikasi – peringatan tentang kesalahan konfigurasi aplikasi.
  • Deteksi dan Penyembunyian Kesalahan – Menyamarkan pesan kesalahan yang dikirim oleh server.

Unduh & Instalasi

Prasyarat berikut harus diinstal di server tempat Anda ingin menggunakan Mod Security dengan Apache. Jika salah satu dari ini tidak ada maka kompilasi Mod Security akan gagal. Anda dapat menggunakan yum install di Linux atau Centos untuk menginstal paket-paket ini.

  • apache 2.x atau lebih tinggi
  • paket libpcre
  • paket libxml2
  • paket libua
  • paket libcurl
  • paket libapr dan libapr-util
  • modul mod_unique_id dibundel dengan server web Apache

Sekarang, mari unduh Mod Security 2.7.5 versi stabil terbaru dari sini

  • Transfer file yang diunduh ke /opt/apache
  • Ekstrak modsecurity-apache_2.7.5.tar.gz
 # gunzip –c modsecurity-apache_2.7.5.tar.gz | tar xvf –
  • Buka folder yang diekstrak modsecurity-apache_2.7.5
 # cd modsecurity-apache_2.7.5
  • Jalankan skrip konfigurasi termasuk jalur apxs ke Apache yang ada
 # ./configure –with-apxs=/opt/apache/bin/apxs
  • Kompilasi & instal dengan skrip make
 # make # make install
  • Setelah instalasi selesai, Anda akan melihat mod_security2.so di folder modules di bawah /opt/apache

Sekarang ini menyimpulkan, Anda telah menginstal modul Mod Security di server web Apache yang ada.

Konfigurasi

Untuk menggunakan fitur keamanan Mod dengan Apache, kita harus memuat modul keamanan mod di httpd.conf. Modul mod_unique_id adalah prasyarat untuk Keamanan Mod.

Modul ini menyediakan variabel lingkungan dengan pengidentifikasi unik untuk setiap permintaan, yang dilacak dan digunakan oleh Mod Security.

  • Tambahkan baris berikut untuk memuat modul untuk Mod Security di httpd.conf dan simpan file konfigurasi
 LoadModule unique_id_module modules/mod_unique_id.so LoadModule security2_module modules/mod_security2.so
  • Mulai ulang server web Apache

Mod Keamanan sekarang diinstal!

Hal berikutnya yang harus Anda lakukan adalah menginstal aturan inti Mod Security untuk memanfaatkan fiturnya sepenuhnya.

Aturan Inti Terbaru dapat diunduh dari tautan berikut, yang gratis. https://github.com/SpiderLabs/owasp-modsecurity-crs/zipball/master

  • Salin zip aturan inti yang diunduh ke folder /opt/Apache/conf
  • Buka zip file aturan inti
  • Anda mungkin ingin mengganti nama folder menjadi sesuatu yang singkat dan mudah diingat. Dalam contoh ini, saya akan mengganti nama menjadi crs.
  • Buka folder crs dan ganti nama modsecurity_crs10_setup.conf.example menjadi modsecurity_crs10_setup.conf

Sekarang, mari aktifkan aturan ini untuk membuatnya bekerja dengan server web Apache.

  • Tambahkan yang berikut ini di httpd.conf
 <IfModule security2_module> Include conf/crs/modsecurity_crs_10_setup.confInclude conf/crs/base_rules/*.conf </IfModule>

Pada konfigurasi di atas, kita memuat file konfigurasi utama Mod Security modsecurity_crs_10_setup.conf dan aturan dasar base_rules/*.conf yang disediakan oleh Aturan Inti Keamanan Mod untuk melindungi aplikasi web.

  • Mulai ulang server web Apache

Anda telah berhasil mengonfigurasi Mod Security dengan Apache!

Bagus sekali. Sekarang, server Web Apache dilindungi oleh firewall aplikasi web Mod Security.

Mulai

Mari kita mulai dengan beberapa konfigurasi penting di Mod Security untuk memperkuat & mengamankan aplikasi web.

Pada bagian ini, kita akan melakukan semua modifikasi konfigurasi di /opt/Apache/conf/crs/modsecurity_crs_10_setup.conf.

Kami akan merujuk /opt/Apache/conf/crs/modsecurity_crs_10_setup.conf sebagai setup.conf di bagian ini sebagai contoh tujuan.

Sangat penting untuk memahami apa saja aturan OWASP yang disediakan secara gratis. Ada dua jenis aturan yang disediakan oleh OWASP.

Aturan Dasar – aturan ini sangat diuji, dan mungkin rasio alarm palsu lebih sedikit.

Aturan Eksperimental – aturan ini untuk tujuan eksperimental, dan Anda mungkin memiliki alarm palsu yang tinggi. Sangat penting untuk mengonfigurasi, menguji, dan mengimplementasikan di UAT sebelum menggunakannya di lingkungan produksi.

Aturan Opsional – aturan opsional ini mungkin tidak cocok untuk seluruh lingkungan. Berdasarkan kebutuhan Anda, Anda dapat menggunakannya.

Jika Anda mencari perlindungan CSRF, Pelacakan pengguna, Pembajakan sesi, dll., maka Anda dapat mempertimbangkan untuk menggunakan aturan opsional. Kami memiliki aturan dasar, opsional, dan eksperimental setelah mengekstrak file zip crs yang diunduh dari halaman unduhan OWASP.

File konfigurasi aturan ini tersedia di folder crs/base_rules, crs/optional_rules dan crs/experimental_rules. Mari kita mengenal beberapa aturan dasar.

  • modsecurity_crs_20_protocol_violations.conf: Aturan ini melindungi dari kerentanan Protokol seperti pemisahan respons, penyelundupan permintaan, menggunakan protokol yang tidak diizinkan (HTTP 1.0).
  • modsecurity_crs_21_protocol_anomalies.conf: Ini untuk melindungi dari permintaan, yang hilang dengan Host, Accept, User-Agent di header.
  • modsecurity_crs_23_request_limits.conf:Aturan ini memiliki ketergantungan pada aplikasi tertentu seperti ukuran permintaan, ukuran unggahan, panjang parameter, dll.
  • modsecurity_crs_30_http_policy.conf: Ini untuk mengkonfigurasi dan melindungi metode yang diizinkan atau tidak diizinkan seperti CONNECT, TRACE, PUT, DELETE, dll.
  • modsecurity_crs_35_bad_robots.conf: Mendeteksi robot jahat
  • modsecurity_crs_40_generic_attacks.conf: Ini untuk melindungi dari injeksi perintah OS, penyertaan file jarak jauh, dll.
  • modsecurity_crs_41_sql_injection_attacks.conf:Aturan ini untuk melindungi SQL dan permintaan injeksi SQL buta.
  • modsecurity_crs_41_xss_attacks.conf:Perlindungan dari permintaan Cross-Site Scripting.
  • modsecurity_crs_42_tight_security.conf: Deteksi dan perlindungan traversal direktori.
  • modsecurity_crs_45_trojans.conf:Aturan ini untuk mendeteksi keluaran manajemen file umum, mengunggah halaman pintu belakang HTTP, tanda tangan yang diketahui.
  • modsecurity_crs_47_common_exceptions.conf: Ini digunakan sebagai mekanisme pengecualian untuk menghapus kesalahan positif umum yang mungkin ditemui payah seperti koneksi dummy internal Apache, pinger SSL, dll.

Masuk

Logging adalah salah satu hal pertama yang harus dikonfigurasi sehingga Anda dapat membuat log untuk apa yang dilakukan Mod Security. Ada dua jenis logging yang tersedia; Debug & Log audit.

Debug Log: ini untuk menduplikasi pesan kesalahan Apache, peringatan dan pemberitahuan dari log kesalahan.

Log Audit: ini untuk menulis log transaksi yang ditandai dengan aturan Mod Security Mod Security memberi Anda fleksibilitas untuk mengonfigurasi Audit, Debug, atau keduanya logging.

Secara default konfigurasi akan menulis kedua log. Namun, Anda dapat mengubah berdasarkan kebutuhan Anda. Log dikontrol dalam arahan SecDefaultAction . Mari kita lihat konfigurasi logging default di setup.conf

 SecDefaultAction “phase:1,deny,log”

Untuk mencatat Debug, Log audit – gunakan “log” Untuk mencatat log audit saja – gunakan “nolog,auditlog” Untuk mencatat log debug saja – gunakan “log,noauditlog” Anda dapat menentukan lokasi Log Audit yang akan disimpan yang dikendalikan oleh SecAuditLog pengarahan.

Mari kita tulis log audit ke /opt/apache/logs/modsec_audit.log dengan menambahkan seperti yang ditunjukkan di bawah ini.

  • Tambahkan direktif SecAuditLog di setup.conf dan restart Apache Web Server
 SecAuditLog /opt/apache/logs/modsec_audit.log
  • Setelah restart, Anda akan melihat modsec_audit.log dihasilkan

Aktifkan Mesin Aturan

Secara default Engine Rule adalah Off, artinya jika Anda tidak mengaktifkan Rule Engine, Anda tidak memanfaatkan semua keuntungan dari Mod Security.

Pengaktifan atau penonaktifan Rule Engine dikontrol oleh arahan SecRuleEngine .

  • Tambahkan direktif SecRuleEngine di setup.conf dan restart Apache Web Server
 SecRuleEngine On

Ada tiga nilai untuk SecRuleEngine:

  • Aktif – untuk mengaktifkan Mesin Aturan
  • Mati – untuk menonaktifkan Mesin Aturan
  • DetectionOnly – aktifkan Rule Engine tetapi jangan pernah melakukan tindakan apa pun seperti memblokir, menolak, menjatuhkan, mengizinkan, proxy, atau pengalihan

Setelah Rule Engine aktif – Mod Security siap melindungi dengan beberapa jenis serangan umum.

Perlindungan Jenis Serangan Umum

Sekarang server web siap untuk melindungi dengan jenis serangan umum seperti XSS, SQL Injection, Pelanggaran Protokol, dll. Karena kami telah menginstal Core Rule dan menyalakan Rule Engine. Mari kita uji beberapa di antaranya.

Serangan XSS

  • Buka Firefox dan akses aplikasi Anda dan letakkan tag <script> di akhir atau URL
  • Pantau modsec_audit.log di folder apache/logs

Anda akan melihat permintaan blok Keamanan Mod karena berisi tag <script> yang merupakan akar dari serangan XSS.

Serangan Traversal Direktori: - Serangan traversal direktori dapat membuat banyak kerusakan dengan memanfaatkan kerentanan ini dan mengakses file terkait sistem. Contoh – /etc/passwd, .htaccess, dll.

  • Buka Firefox dan akses aplikasi Anda dengan traversal direktori
  • Pantau modsec_audit.log di folder apache/logs
 http://localhost/?../.../boot
  • Anda akan melihat permintaan blok Keamanan Mod karena berisi traversal direktori.

Ubah Spanduk Server

Sebelumnya dalam panduan ini, Anda telah mempelajari cara menghapus Apache dan tipe OS, bantuan versi dari arahan ServerTokens.

Mari kita selangkah lebih maju, bagaimana dengan menjaga nama server apa pun yang Anda inginkan? Itu mungkin dengan arahan SecServerSignature di Mod Security. Anda lihat itu menarik.

Catatan: untuk menggunakan Mod Security untuk memanipulasi Server Banner dari header, Anda harus mengatur ServerTokesn ke Full di httpd.conf server web Apache.

  • Tambahkan direktif SecServerSignature dengan nama server yang Anda inginkan di setup.conf dan restart Apache Web Server
 SecServerSignature YourServerName

Mantan:

 [/opt/apache/conf/crs] #grep SecServer modsecurity_crs_10_setup.conf SecServerSignature geekflare.com [/opt/apache/conf/crs] #

Konfigurasi Umum

Mari kita periksa beberapa konfigurasi umum sebagai praktik terbaik.

Konfigurasi Dengarkan

Ketika Anda memiliki beberapa antarmuka dan IP pada satu server, disarankan untuk memiliki direktif Listen yang dikonfigurasi dengan IP absolut dan nomor Port.

Ketika Anda membiarkan konfigurasi Apache untuk Mendengarkan pada semua IP dengan beberapa nomor port, hal itu dapat menimbulkan masalah dalam meneruskan permintaan HTTP ke beberapa server web lain. Ini cukup umum di lingkungan bersama.

  • Konfigurasikan Listen directive di httpd.conf dengan IP absolut dan port seperti contoh di bawah ini
 Listen 10.10.10.1:80

Akses Pencatatan

Sangat penting untuk mengonfigurasi log akses dengan benar di server web Anda. Beberapa parameter penting untuk ditangkap di log adalah waktu yang dibutuhkan untuk melayani permintaan, ID SESI.

Secara default, Apache tidak dikonfigurasi untuk menangkap data ini. Anda harus mengonfigurasinya secara manual sebagai berikut.

  • Untuk menangkap waktu yang dibutuhkan untuk melayani permintaan dan ID SESI dalam log akses
  • Tambahkan %T & %sessionID di httpd.conf di bawah direktif LogFormat
 LogFormat "%h %l %u %t "%{sessionID}C" "%r" %>s %b %T" common

Anda dapat merujuk http://httpd.apache.org/docs/2.2/mod/mod_log_config.html untuk daftar lengkap parameter yang didukung dalam arahan LogFormat di Server Web Apache.

Nonaktifkan Memuat modul yang tidak diinginkan

Jika Anda telah mengkompilasi dan menginstal dengan semua modul, maka ada kemungkinan besar Anda akan memiliki banyak modul yang dimuat di Apache, yang mungkin tidak diperlukan.

Praktik terbaik adalah mengonfigurasi Apache dengan modul yang diperlukan di aplikasi web Anda. Modul berikut memiliki masalah keamanan, dan Anda mungkin tertarik untuk menonaktifkan httpd.conf dari Apache Web Server.

WebDAV (Web-based Distributed Authoring and Versioning) Modul ini memungkinkan klien jarak jauh untuk memanipulasi file di server dan tunduk pada berbagai serangan penolakan layanan. Untuk menonaktifkan komentar berikut di httpd.conf

 #LoadModule dav_module modules/mod_dav.so #LoadModule dav_fs_module modules/mod_dav_fs.so #Include conf/extra/httpd-dav.conf

Modul Info Modul mod_info dapat membocorkan informasi sensitif menggunakan .htaccess setelah modul ini dimuat. Untuk menonaktifkan komentar berikut di httpd.conf

 #LoadModule info_module modules/mod_info.so

Referensi: Ini tidak akan mungkin tanpa panduan dari tautan berikut:

  • http://httpd.Apache.org/docs/2.4/
  • http://www.modsecurity.org/documentation/
  • https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

Itulah beberapa praktik terbaik yang dapat Anda gunakan untuk mengamankan server web Apache Anda.

Periksa tautan ini jika Anda ingin menerapkan halaman kesalahan khusus di Apache.

Jika Anda baru mengenal Apache HTTP, maka saya akan merekomendasikan untuk mengambil kursus administrasi HTTP Apache.