Panduan Pengerasan dan Keamanan Server Web Apache

Panduan praktis untuk mengamankan dan mengeraskan Server HTTP Apache.


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 bersiap menghadapi serangan aplikasi. Mayoritas serangan aplikasi web adalah melalui XSS, Kebocoran Info, Sesi Manajemen dan serangan SQL Injection yang disebabkan oleh kode pemrograman yang lemah dan kegagalan untuk membersihkan infrastruktur aplikasi web.

Penelitian menarik oleh Teknologi Positif mengungkapkan, 52% dari aplikasi yang dipindai memiliki kerentanan tinggi.

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

Berikut ini diuji pada versi Apache 2.4.x.

  • Ini mengasumsikan Anda telah menginstal Apache pada platform UNIX. Jika tidak, Anda dapat membaca 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 belajar Hardening & Pedoman keamanan.

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

Catatan

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

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

Hapus Banner 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. Versi yang terbuka berarti Anda membantu peretas untuk mempercepat proses pengintaian.

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

  • Buka folder $ Web_Server / conf
  • Ubah httpd.conf dengan menggunakan editor vi
  • Tambahkan arahan berikut dan simpan httpd.conf

ServerTokens Prod
ServerSignature Mati

  • Mulai ulang apache

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

ServerTokens akan mengubah Header menjadi hanya produksi, mis., Apache

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

Nonaktifkan daftar peramban direktori

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

Mari kita uji bagaimana tampilannya di pengaturan default.

  • Pergi ke direktori $ Web_Server / htdocs
  • Buat folder dan beberapa file di dalamnya

Tes # mkdir
# sentuh hai
# sentuh halo

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

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

  • Pergi ke direktori $ Web_Server / conf
  •  Buka httpd.conf menggunakan vi
  •  Cari Direktori dan ubah direktif Opsi ke Tidak Ada atau –Indeks

Pilihan -Indeks

(atau)

Opsi Tidak Ada

  • 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 http: // localhost / test

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

Etag

Ini memungkinkan penyerang jarak jauh untuk mendapatkan informasi sensitif seperti nomor inode, batas MIME multipart, dan proses anak melalui tajuk Etag.

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

  • Pergi ke direktori $ Web_Server / conf
  • Tambahkan arahan berikut dan simpan httpd.conf

FileETag Tidak Ada

  • Mulai ulang apache

Jalankan Apache dari akun yang tidak istimewa

Instalasi default berjalan sebagai bukan siapa-siapa atau daemon. Menggunakan pengguna non-istimewa terpisah untuk Apache adalah baik.

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

  • Buat pengguna dan grup yang disebut apache

# groupadd apache
# useradd –G apache apache

  • Ubah kepemilikan direktori instalasi apache menjadi pengguna non-privilege yang baru dibuat

# chown –R apache: apache / opt / apache

  •  Pergi ke $ Web_Server / conf
  •  Ubah httpd.conf menggunakan vi
  •  Cari Pengguna & Petunjuk Grup dan ubah sebagai apache akun yang tidak diistimewakan

Apache pengguna
Apache grup

  •  Simpan httpd.conf
  •  Mulai ulang Apache

grep untuk menjalankan proses http dan memastikannya berjalan dengan pengguna apache

# ps –ef | grep http

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

Melindungi 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 dari mengubah pengaturan server apache Anda, Anda dapat menambahkan AllowOverride ke None seperti yang ditunjukkan di bawah ini.

Ini harus dilakukan di tingkat root.

  • Pergi ke direktori $ Web_Server / conf
  •  Buka httpd.conf menggunakan vi
  •  Cari Direktori di tingkat root

Pilihan -Indeks
AllowOverride Tidak Ada

  •  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 perlu DAPATKAN, HEAD, metode permintaan POST dalam aplikasi web, yang dapat dikonfigurasi dalam direktif Direktori masing-masing.

Konfigurasi default mendukung OPSI, DAPATKAN, KEPALA, POST, PUT, HAPUS, TRACE, CONNECT metode dalam protokol HTTP 1.1.

  •  Pergi ke direktori $ Web_Server / conf
  •  Buka httpd.conf menggunakan vi
  • Cari Direktori dan tambahkan berikut ini

tolak dari semua

  • Mulai ulang Apache

Nonaktifkan Lacak Permintaan HTTP

Secara default metode Jejak diaktifkan di server web Apache.

Dengan mengaktifkan ini dapat memungkinkan serangan Penelusuran Situs Silang dan berpotensi memberikan opsi kepada peretas untuk mencuri informasi cookie. Mari kita lihat tampilannya dalam konfigurasi default.

  •  Lakukan IP server web telnet dengan mendengarkan port
  •  Buat permintaan TRACE seperti yang ditunjukkan di bawah ini

#telnet localhost 80
Mencoba 127.0.0.1…
Terhubung ke localhost.
Karakter melarikan diri adalah ‘^]’.
TRACE / HTTP / 1.1 Host: test
HTTP / 1.1 200 OK
Tanggal: Sabtu, 31 Agustus 2013 02:13:24 GMT
Server: Apache
Transfer-Pengkodean: chunked
Jenis-Konten: pesan / http 20
TRACE / HTTP / 1.1
Tuan rumah: tes
0
Koneksi ditutup oleh tuan rumah asing.
#

Seperti yang Anda lihat di permintaan TRACE di atas, permintaan saya telah saya jawab. Mari menonaktifkan dan mengujinya.

  •  Pergi ke direktori $ Web_Server / conf
  • Tambahkan arahan berikut dan simpan httpd.conf

Tidak bisa dilacak

  •  Mulai ulang apache

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

#telnet localhost 80
Mencoba 127.0.0.1…
Terhubung ke localhost.
Karakter melarikan diri adalah ‘^]’.
TRACE / HTTP / 1.1 Host: test
HTTP / 1.1 405 Metode Tidak Diizinkan
Tanggal: Sabtu, 31 Agustus 2013 02:18:27 GMT
Server: Apache Mengizinkan: Konten-Panjang: 223-Jenis Isi: teks / html; charset = iso-8859-1
405 Metode Tidak Diizinkan

Metode Tidak Diizinkan

Metode yang diminta TRACE tidak diizinkan untuk URL /.

Koneksi ditutup oleh tuan rumah asing.
#

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

Sekarang, server web ini tidak mengizinkan permintaan dan bantuan TRACE dalam memblokir serangan Cross Site Tracing.

Tetapkan cookie dengan HttpOnly dan Amankan bendera

Anda dapat mengurangi sebagian besar serangan Cross Site Scripting yang umum menggunakan HttpOnly dan Secure flag 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
  •  Pergi ke direktori $ Web_Server / conf
  •  Tambahkan arahan berikut dan simpan httpd.conf

Edit Header Set-Cookie ^ (. *) $ $ 1; HttpOnly; Aman

  •  Mulai ulang apache

Serangan Clickjacking

Clickjacking adalah kerentanan aplikasi web yang terkenal.

  •  Pastikan mod_headers.so diaktifkan di httpd.conf Anda
  •  Pergi ke direktori $ Web_Server / conf
  •  Tambahkan arahan berikut dan simpan httpd.conf

Header selalu menambahkan X-Frame-Options SAMAORIGIN

  •  Mulai ulang apache

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

Sisi Server Termasuk

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

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

  • Pergi ke direktori $ Web_Server / conf
  •  Buka httpd.conf menggunakan vi
  •  Cari Direktori dan tambahkan Termasuk dalam direktif Opsi

Pilihan –Index-Termasuk
Memesan memungkinkan, tolak dari semua

  • 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.

  • Pergi ke direktori $ Web_Server / conf
  • Buka httpd.conf menggunakan vi dan tambahkan direktif Header berikut

Header set X-XSS-Protection "1; mode = blok"

  •  Mulai ulang Apache

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

Nonaktifkan Protokol HTTP 1.0

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

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

  • Pastikan untuk memuat modul mod_rewrite dalam file httpd.conf
  •  Aktifkan arahan RewriteEngine sebagai berikut dan tambahkan kondisi Rewrite untuk hanya mengizinkan HTTP 1.1

Tulis Ulang Hidup
RewriteCond% {THE_REQUEST}! HTTP / 1.1 $
RewriteRule. * – [F]

Konfigurasi nilai batas waktu

Secara default, nilai batas waktu Apache adalah 300 detik, yang bisa menjadi korban serangan Loris Lambat dan DoS. Untuk mengurangi ini, Anda dapat menurunkan nilai batas waktu hingga 60 detik.

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

Batas waktu 60

SSL

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

Kunci SSL

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

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

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

  •  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 a otoritas sertifikat untuk menandatanganinya. Setelah Anda menerima file sertifikat yang ditandatangani, Anda dapat menambahkannya dalam file httpd-ssl.conf

SSLCertificateFile #Certificate ditandatangani oleh otoritas
SSLCertificateChainFile #Penandatanganan sertifikat yang diberikan oleh otoritas
File #Key SSLCertificateKeyFile yang Anda buat di atas

  • Mulai ulang server web Apache dan coba akses URL dengan https

SSL Cipher

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.

Ini didasarkan pada konfigurasi server SSL Cipher server Anda enkripsi data akan berlangsung. 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 cipher yang lemah dalam laporan audit SSL Anda, Anda dapat dengan cepat menolaknya menambahkan! pada awalnya.

Nonaktifkan SSL v2 & v3

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

Setiap komunikasi SSL v2 / v3 mungkin rentan terhadap serangan Man-in-The-Middle yang dapat memungkinkan perusakan 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 hanya menerima TLS 1.2+

SSLProtocol –ALL + TLSv1.2

Setelah Anda selesai dengan konfigurasi SSL, merupakan ide bagus untuk menguji aplikasi web Anda dengan alat Sertifikat SSL / TLS online untuk menemukan kesalahan konfigurasi.

Mod Security

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 Blacklist Real-time – menggunakan Reputasi IP Pihak Ketiga
  • Deteksi Malware Berbasis Web – mengidentifikasi konten web jahat dengan mencentang API Penjelajahan Aman Google.
  • HTTP Denial of Service Protection – pertahanan terhadap HTTP Flooding dan Slow HTTP DoS Attacks.
  • Common Web Attacks Protection – mendeteksi serangan keamanan aplikasi web umum
  • Deteksi Otomatis – Mendeteksi bot, perayap, 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 Trojan horse.
  • Identifikasi Cacat Aplikasi – peringatan tentang kesalahan konfigurasi aplikasi.
  • Deteksi dan Sembunyi 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 liblua
  • paket libcurl
  •  paket libapr dan libapr-util
  •  modul mod_unique_id dibundel dengan server web Apache

Sekarang, mari kita unduh versi terbaru dari Mod Security 2.7.5 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 –

  • Pergi ke folder modsecurity-apache_2.7.5 yang diekstraksi

# cd modsecurity-apache_2.7.5

  • Jalankan skrip configure termasuk jalur apxs ke Apache yang ada

# ./configure –with-apxs = / opt / apache / bin / apxs

  • Menyusun & instal dengan skrip make

# make
# make install

  • Setelah instalasi selesai, Anda akan melihat mod_security2.so di folder modul 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 merupakan prasyarat untuk Mod Security.

Modul ini memberikan 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 Security sekarang diinstal!

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

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

  • Salin zip aturan inti yang diunduh ke folder / opt / apache / conf
  • Unzip file aturan inti
  • Anda mungkin ingin mengubah 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 ke modsecurity_crs10_setup.conf

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

  •  Tambahkan yang berikut ini di httpd.conf

Sertakan conf / crs / modsecurity_crs_10_setup.confInclude conf / crs / base_rules / *. Conf

Dalam konfigurasi di atas, kita memuat file konfigurasi utama Mod Security modsecurity_crs_10_setup.conf dan aturan dasar base_rules / *. Conf yang disediakan oleh Mod Core Security Rules untuk melindungi aplikasi web.

  •  Mulai ulang server web apache

Anda telah berhasil mengonfigurasi Mod Security dengan Apache!

Sudah selesai dilakukan dengan baik. Sekarang, server Web Apache dilindungi oleh firewall aplikasi web Mod Security.

Mulai

Mari kita mulai dengan beberapa konfigurasi kritis di Mod Security untuk mengeras & aplikasi web yang aman.

Di 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 untuk tujuan contoh.

Penting untuk memahami apa saja peraturan OWASP yang disediakan secara gratis. Ada dua jenis aturan yang disediakan oleh OWASP.

Aturan Dasar – aturan-aturan ini sangat diuji, dan mungkin rasio alarm palsu kurang.

Aturan Eksperimental – aturan ini untuk tujuan percobaan, dan Anda mungkin memiliki alarm palsu yang tinggi. Penting untuk mengonfigurasi, menguji, dan menerapkan dalam 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 CSRF, pelacakan Pengguna, pembajakan Sesi, dll. Perlindungan, maka Anda dapat mempertimbangkan untuk menggunakan aturan opsional. Kami memiliki aturan dasar, opsional, dan eksperimental setelah mengekstraksi 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 membiasakan diri dengan 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 tidak ada pada Host, Terima, Agen-Pengguna di header.
  • modsecurity_crs_23_request_limits.conf: Aturan ini memiliki ketergantungan pada spesifik aplikasi 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: Deteksi robot jahat
  • modsecurity_crs_40_generic_attacks.conf: Ini untuk melindungi dari injeksi perintah OS, pemasukan file jarak jauh, dll.
  • modsecurity_crs_41_sql_injection_attacks.conf: Aturan ini untuk melindungi SQL dan menutup permintaan injeksi SQL.
  • modsecurity_crs_41_xss_attacks.conf: Perlindungan dari permintaan Skrip Lintas Situs.
  • modsecurity_crs_42_tight_security.conf: Deteksi dan perlindungan traversal direktori.
  • modsecurity_crs_45_trojans.conf: Aturan ini untuk mendeteksi output manajemen file generik, mengunggah halaman HTTP backdoor, tanda tangan yang dikenal.
  • modsecurity_crs_47_common_exceptions.conf: Ini digunakan sebagai mekanisme pengecualian untuk menghapus positif palsu umum yang mungkin ditemui sebagai koneksi dummy internal Apache, SSL pinger, dll..

Penebangan

Logging adalah salah satu hal pertama yang harus dikonfigurasi sehingga Anda dapat membuat log untuk apa yang dilakukan Mod Security. Ada dua jenis penebangan 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 oleh aturan Mod Security. Mod Security memberi Anda fleksibilitas untuk mengkonfigurasi Audit, Debug, atau keduanya masuk.

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

SecDefaultAction “fase: 1, deny, log”

Untuk login Debug, Audit log – gunakan “log” Untuk mencatat hanya log audit – 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 menulis 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 yang berarti jika Anda tidak mengaktifkan Rule Engine Anda tidak menggunakan semua keunggulan Mod Security.

Engine Rule yang diaktifkan atau dinonaktifkan dikendalikan oleh SecRuleEngine directive.

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

SecRuleEngine On

Ada tiga nilai untuk SecRuleEngine:

  • Aktif – untuk mengaktifkan Rule Engine
  • Off – untuk menonaktifkan Rule Engine
  • DetectionOnly – aktifkan Rule Engine tetapi tidak pernah menjalankan tindakan seperti memblokir, menolak, menjatuhkan, membolehkan, proksi, atau mengalihkan

Setelah Mesin Aturan aktif – Mod Security siap untuk melindungi dengan beberapa jenis serangan umum.

Perlindungan Jenis Serangan Umum

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

Serangan XSS

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

Anda akan melihat permintaan Mod Security blok karena berisi tag yang merupakan akar dari serangan XSS.

Direktori Traversal Attack: – Serangan traversal direktori dapat membuat banyak kerusakan dengan mengambil keuntungan dari kerentanan ini dan mengakses file terkait sistem. Ex – / etc / passwd, .htaccess, dll.

  •  Buka Firefox dan akses aplikasi Anda dengan direktori traversal
  •  Pantau modsec_audit.log di folder apache / logs

http: // localhost /? ../…/boot

  • Anda akan melihat permintaan Mod Security blok karena mengandung traversal direktori.

Ubah Server Banner

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

Mari kita selangkah lebih maju, bagaimana menjaga nama server apa pun yang Anda inginkan? Mungkin dengan direktif SecServerSignature di Mod Security. Anda melihatnya menarik.

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

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

SecServerSignature YourServerName

Ex:

[/ 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.

Konfigurasikan Dengar

Ketika Anda memiliki banyak antarmuka dan IP pada satu server, disarankan untuk mendengarkan Direktif yang dikonfigurasi dengan IP absolut dan nomor Port.

Ketika Anda meninggalkan konfigurasi apache untuk Mendengarkan semua IP dengan beberapa nomor port, itu dapat membuat masalah dalam meneruskan permintaan HTTP ke beberapa server web lainnya. Ini cukup umum di lingkungan bersama.

  • Konfigurasikan Dengarkan arahan dalam httpd.conf dengan IP dan port absolut seperti contoh di bawah ini

Dengarkan 10.10.10.1:80

Akses Logging

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

Secara default, Apache tidak dikonfigurasi untuk mengambil 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 arahan LogFormat

LogFormat "% h% l% u% t "% {sessionID} C" "% r" %>s% b% T" umum

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

Nonaktifkan Memuat modul yang tidak diinginkan

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

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

WebDAV (Authoring Terdistribusi dan Versi Berbasis Web) 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
#Masukkan 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 bimbingan dari tautan berikut:

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

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

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:

    Panduan Pengerasan dan Keamanan Server Web Apache

    Panduan praktis untuk mengamankan dan mengeraskan Server HTTP Apache.


    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 bersiap menghadapi serangan aplikasi. Mayoritas serangan aplikasi web adalah melalui XSS, Kebocoran Info, Sesi Manajemen dan serangan SQL Injection yang disebabkan oleh kode pemrograman yang lemah dan kegagalan untuk membersihkan infrastruktur aplikasi web.

    Penelitian menarik oleh Teknologi Positif mengungkapkan, 52% dari aplikasi yang dipindai memiliki kerentanan tinggi.

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

    Berikut ini diuji pada versi Apache 2.4.x.

    • Ini mengasumsikan Anda telah menginstal Apache pada platform UNIX. Jika tidak, Anda dapat membaca 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 belajar Hardening & Pedoman keamanan.

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

    Catatan

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

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

    Hapus Banner 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. Versi yang terbuka berarti Anda membantu peretas untuk mempercepat proses pengintaian.

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

    • Buka folder $ Web_Server / conf
    • Ubah httpd.conf dengan menggunakan editor vi
    • Tambahkan arahan berikut dan simpan httpd.conf

    ServerTokens Prod
    ServerSignature Mati

    • Mulai ulang apache

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

    ServerTokens akan mengubah Header menjadi hanya produksi, mis., Apache

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

    Nonaktifkan daftar peramban direktori

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

    Mari kita uji bagaimana tampilannya di pengaturan default.

    • Pergi ke direktori $ Web_Server / htdocs
    • Buat folder dan beberapa file di dalamnya

    Tes # mkdir
    # sentuh hai
    # sentuh halo

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

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

    • Pergi ke direktori $ Web_Server / conf
    •  Buka httpd.conf menggunakan vi
    •  Cari Direktori dan ubah direktif Opsi ke Tidak Ada atau –Indeks

    Pilihan -Indeks

    (atau)

    Opsi Tidak Ada

    • 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 http: // localhost / test

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

    Etag

    Ini memungkinkan penyerang jarak jauh untuk mendapatkan informasi sensitif seperti nomor inode, batas MIME multipart, dan proses anak melalui tajuk Etag.

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

    • Pergi ke direktori $ Web_Server / conf
    • Tambahkan arahan berikut dan simpan httpd.conf

    FileETag Tidak Ada

    • Mulai ulang apache

    Jalankan Apache dari akun yang tidak istimewa

    Instalasi default berjalan sebagai bukan siapa-siapa atau daemon. Menggunakan pengguna non-istimewa terpisah untuk Apache adalah baik.

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

    • Buat pengguna dan grup yang disebut apache

    # groupadd apache
    # useradd –G apache apache

    • Ubah kepemilikan direktori instalasi apache menjadi pengguna non-privilege yang baru dibuat

    # chown –R apache: apache / opt / apache

    •  Pergi ke $ Web_Server / conf
    •  Ubah httpd.conf menggunakan vi
    •  Cari Pengguna & Petunjuk Grup dan ubah sebagai apache akun yang tidak diistimewakan

    Apache pengguna
    Apache grup

    •  Simpan httpd.conf
    •  Mulai ulang Apache

    grep untuk menjalankan proses http dan memastikannya berjalan dengan pengguna apache

    # ps –ef | grep http

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

    Melindungi 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 dari mengubah pengaturan server apache Anda, Anda dapat menambahkan AllowOverride ke None seperti yang ditunjukkan di bawah ini.

    Ini harus dilakukan di tingkat root.

    • Pergi ke direktori $ Web_Server / conf
    •  Buka httpd.conf menggunakan vi
    •  Cari Direktori di tingkat root

    Pilihan -Indeks
    AllowOverride Tidak Ada

    •  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 perlu DAPATKAN, HEAD, metode permintaan POST dalam aplikasi web, yang dapat dikonfigurasi dalam direktif Direktori masing-masing.

    Konfigurasi default mendukung OPSI, DAPATKAN, KEPALA, POST, PUT, HAPUS, TRACE, CONNECT metode dalam protokol HTTP 1.1.

    •  Pergi ke direktori $ Web_Server / conf
    •  Buka httpd.conf menggunakan vi
    • Cari Direktori dan tambahkan berikut ini

    tolak dari semua

    • Mulai ulang Apache

    Nonaktifkan Lacak Permintaan HTTP

    Secara default metode Jejak diaktifkan di server web Apache.

    Dengan mengaktifkan ini dapat memungkinkan serangan Penelusuran Situs Silang dan berpotensi memberikan opsi kepada peretas untuk mencuri informasi cookie. Mari kita lihat tampilannya dalam konfigurasi default.

    •  Lakukan IP server web telnet dengan mendengarkan port
    •  Buat permintaan TRACE seperti yang ditunjukkan di bawah ini

    #telnet localhost 80
    Mencoba 127.0.0.1…
    Terhubung ke localhost.
    Karakter melarikan diri adalah ‘^]’.
    TRACE / HTTP / 1.1 Host: test
    HTTP / 1.1 200 OK
    Tanggal: Sabtu, 31 Agustus 2013 02:13:24 GMT
    Server: Apache
    Transfer-Pengkodean: chunked
    Jenis-Konten: pesan / http 20
    TRACE / HTTP / 1.1
    Tuan rumah: tes
    0
    Koneksi ditutup oleh tuan rumah asing.
    #

    Seperti yang Anda lihat di permintaan TRACE di atas, permintaan saya telah saya jawab. Mari menonaktifkan dan mengujinya.

    •  Pergi ke direktori $ Web_Server / conf
    • Tambahkan arahan berikut dan simpan httpd.conf

    Tidak bisa dilacak

    •  Mulai ulang apache

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

    #telnet localhost 80
    Mencoba 127.0.0.1…
    Terhubung ke localhost.
    Karakter melarikan diri adalah ‘^]’.
    TRACE / HTTP / 1.1 Host: test
    HTTP / 1.1 405 Metode Tidak Diizinkan
    Tanggal: Sabtu, 31 Agustus 2013 02:18:27 GMT
    Server: Apache Mengizinkan: Konten-Panjang: 223-Jenis Isi: teks / html; charset = iso-8859-1
    405 Metode Tidak Diizinkan

    Metode Tidak Diizinkan

    Metode yang diminta TRACE tidak diizinkan untuk URL /.

    Koneksi ditutup oleh tuan rumah asing.
    #

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

    Sekarang, server web ini tidak mengizinkan permintaan dan bantuan TRACE dalam memblokir serangan Cross Site Tracing.

    Tetapkan cookie dengan HttpOnly dan Amankan bendera

    Anda dapat mengurangi sebagian besar serangan Cross Site Scripting yang umum menggunakan HttpOnly dan Secure flag 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
    •  Pergi ke direktori $ Web_Server / conf
    •  Tambahkan arahan berikut dan simpan httpd.conf

    Edit Header Set-Cookie ^ (. *) $ $ 1; HttpOnly; Aman

    •  Mulai ulang apache

    Serangan Clickjacking

    Clickjacking adalah kerentanan aplikasi web yang terkenal.

    •  Pastikan mod_headers.so diaktifkan di httpd.conf Anda
    •  Pergi ke direktori $ Web_Server / conf
    •  Tambahkan arahan berikut dan simpan httpd.conf

    Header selalu menambahkan X-Frame-Options SAMAORIGIN

    •  Mulai ulang apache

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

    Sisi Server Termasuk

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

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

    • Pergi ke direktori $ Web_Server / conf
    •  Buka httpd.conf menggunakan vi
    •  Cari Direktori dan tambahkan Termasuk dalam direktif Opsi

    Pilihan –Index-Termasuk
    Memesan memungkinkan, tolak dari semua

    • 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.

    • Pergi ke direktori $ Web_Server / conf
    • Buka httpd.conf menggunakan vi dan tambahkan direktif Header berikut

    Header set X-XSS-Protection "1; mode = blok"

    •  Mulai ulang Apache

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

    Nonaktifkan Protokol HTTP 1.0

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

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

    • Pastikan untuk memuat modul mod_rewrite dalam file httpd.conf
    •  Aktifkan arahan RewriteEngine sebagai berikut dan tambahkan kondisi Rewrite untuk hanya mengizinkan HTTP 1.1

    Tulis Ulang Hidup
    RewriteCond% {THE_REQUEST}! HTTP / 1.1 $
    RewriteRule. * – [F]

    Konfigurasi nilai batas waktu

    Secara default, nilai batas waktu Apache adalah 300 detik, yang bisa menjadi korban serangan Loris Lambat dan DoS. Untuk mengurangi ini, Anda dapat menurunkan nilai batas waktu hingga 60 detik.

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

    Batas waktu 60

    SSL

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

    Kunci SSL

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

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

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

    •  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 a otoritas sertifikat untuk menandatanganinya. Setelah Anda menerima file sertifikat yang ditandatangani, Anda dapat menambahkannya dalam file httpd-ssl.conf

    SSLCertificateFile #Certificate ditandatangani oleh otoritas
    SSLCertificateChainFile #Penandatanganan sertifikat yang diberikan oleh otoritas
    File #Key SSLCertificateKeyFile yang Anda buat di atas

    • Mulai ulang server web Apache dan coba akses URL dengan https

    SSL Cipher

    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.

    Ini didasarkan pada konfigurasi server SSL Cipher server Anda enkripsi data akan berlangsung. 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 cipher yang lemah dalam laporan audit SSL Anda, Anda dapat dengan cepat menolaknya menambahkan! pada awalnya.

    Nonaktifkan SSL v2 & v3

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

    Setiap komunikasi SSL v2 / v3 mungkin rentan terhadap serangan Man-in-The-Middle yang dapat memungkinkan perusakan 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 hanya menerima TLS 1.2+

    SSLProtocol –ALL + TLSv1.2

    Setelah Anda selesai dengan konfigurasi SSL, merupakan ide bagus untuk menguji aplikasi web Anda dengan alat Sertifikat SSL / TLS online untuk menemukan kesalahan konfigurasi.

    Mod Security

    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 Blacklist Real-time – menggunakan Reputasi IP Pihak Ketiga
    • Deteksi Malware Berbasis Web – mengidentifikasi konten web jahat dengan mencentang API Penjelajahan Aman Google.
    • HTTP Denial of Service Protection – pertahanan terhadap HTTP Flooding dan Slow HTTP DoS Attacks.
    • Common Web Attacks Protection – mendeteksi serangan keamanan aplikasi web umum
    • Deteksi Otomatis – Mendeteksi bot, perayap, 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 Trojan horse.
    • Identifikasi Cacat Aplikasi – peringatan tentang kesalahan konfigurasi aplikasi.
    • Deteksi dan Sembunyi 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 liblua
    • paket libcurl
    •  paket libapr dan libapr-util
    •  modul mod_unique_id dibundel dengan server web Apache

    Sekarang, mari kita unduh versi terbaru dari Mod Security 2.7.5 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 –

    • Pergi ke folder modsecurity-apache_2.7.5 yang diekstraksi

    # cd modsecurity-apache_2.7.5

    • Jalankan skrip configure termasuk jalur apxs ke Apache yang ada

    # ./configure –with-apxs = / opt / apache / bin / apxs

    • Menyusun & instal dengan skrip make

    # make
    # make install

    • Setelah instalasi selesai, Anda akan melihat mod_security2.so di folder modul 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 merupakan prasyarat untuk Mod Security.

    Modul ini memberikan 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 Security sekarang diinstal!

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

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

    • Salin zip aturan inti yang diunduh ke folder / opt / apache / conf
    • Unzip file aturan inti
    • Anda mungkin ingin mengubah 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 ke modsecurity_crs10_setup.conf

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

    •  Tambahkan yang berikut ini di httpd.conf

    Sertakan conf / crs / modsecurity_crs_10_setup.confInclude conf / crs / base_rules / *. Conf

    Dalam konfigurasi di atas, kita memuat file konfigurasi utama Mod Security modsecurity_crs_10_setup.conf dan aturan dasar base_rules / *. Conf yang disediakan oleh Mod Core Security Rules untuk melindungi aplikasi web.

    •  Mulai ulang server web apache

    Anda telah berhasil mengonfigurasi Mod Security dengan Apache!

    Sudah selesai dilakukan dengan baik. Sekarang, server Web Apache dilindungi oleh firewall aplikasi web Mod Security.

    Mulai

    Mari kita mulai dengan beberapa konfigurasi kritis di Mod Security untuk mengeras & aplikasi web yang aman.

    Di 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 untuk tujuan contoh.

    Penting untuk memahami apa saja peraturan OWASP yang disediakan secara gratis. Ada dua jenis aturan yang disediakan oleh OWASP.

    Aturan Dasar – aturan-aturan ini sangat diuji, dan mungkin rasio alarm palsu kurang.

    Aturan Eksperimental – aturan ini untuk tujuan percobaan, dan Anda mungkin memiliki alarm palsu yang tinggi. Penting untuk mengonfigurasi, menguji, dan menerapkan dalam 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 CSRF, pelacakan Pengguna, pembajakan Sesi, dll. Perlindungan, maka Anda dapat mempertimbangkan untuk menggunakan aturan opsional. Kami memiliki aturan dasar, opsional, dan eksperimental setelah mengekstraksi 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 membiasakan diri dengan 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 tidak ada pada Host, Terima, Agen-Pengguna di header.
    • modsecurity_crs_23_request_limits.conf: Aturan ini memiliki ketergantungan pada spesifik aplikasi 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: Deteksi robot jahat
    • modsecurity_crs_40_generic_attacks.conf: Ini untuk melindungi dari injeksi perintah OS, pemasukan file jarak jauh, dll.
    • modsecurity_crs_41_sql_injection_attacks.conf: Aturan ini untuk melindungi SQL dan menutup permintaan injeksi SQL.
    • modsecurity_crs_41_xss_attacks.conf: Perlindungan dari permintaan Skrip Lintas Situs.
    • modsecurity_crs_42_tight_security.conf: Deteksi dan perlindungan traversal direktori.
    • modsecurity_crs_45_trojans.conf: Aturan ini untuk mendeteksi output manajemen file generik, mengunggah halaman HTTP backdoor, tanda tangan yang dikenal.
    • modsecurity_crs_47_common_exceptions.conf: Ini digunakan sebagai mekanisme pengecualian untuk menghapus positif palsu umum yang mungkin ditemui sebagai koneksi dummy internal Apache, SSL pinger, dll..

    Penebangan

    Logging adalah salah satu hal pertama yang harus dikonfigurasi sehingga Anda dapat membuat log untuk apa yang dilakukan Mod Security. Ada dua jenis penebangan 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 oleh aturan Mod Security. Mod Security memberi Anda fleksibilitas untuk mengkonfigurasi Audit, Debug, atau keduanya masuk.

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

    SecDefaultAction “fase: 1, deny, log”

    Untuk login Debug, Audit log – gunakan “log” Untuk mencatat hanya log audit – 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 menulis 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 yang berarti jika Anda tidak mengaktifkan Rule Engine Anda tidak menggunakan semua keunggulan Mod Security.

    Engine Rule yang diaktifkan atau dinonaktifkan dikendalikan oleh SecRuleEngine directive.

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

    SecRuleEngine On

    Ada tiga nilai untuk SecRuleEngine:

    • Aktif – untuk mengaktifkan Rule Engine
    • Off – untuk menonaktifkan Rule Engine
    • DetectionOnly – aktifkan Rule Engine tetapi tidak pernah menjalankan tindakan seperti memblokir, menolak, menjatuhkan, membolehkan, proksi, atau mengalihkan

    Setelah Mesin Aturan aktif – Mod Security siap untuk melindungi dengan beberapa jenis serangan umum.

    Perlindungan Jenis Serangan Umum

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

    Serangan XSS

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

    Anda akan melihat permintaan Mod Security blok karena berisi tag yang merupakan akar dari serangan XSS.

    Direktori Traversal Attack: – Serangan traversal direktori dapat membuat banyak kerusakan dengan mengambil keuntungan dari kerentanan ini dan mengakses file terkait sistem. Ex – / etc / passwd, .htaccess, dll.

    •  Buka Firefox dan akses aplikasi Anda dengan direktori traversal
    •  Pantau modsec_audit.log di folder apache / logs

    http: // localhost /? ../…/boot

    • Anda akan melihat permintaan Mod Security blok karena mengandung traversal direktori.

    Ubah Server Banner

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

    Mari kita selangkah lebih maju, bagaimana menjaga nama server apa pun yang Anda inginkan? Mungkin dengan direktif SecServerSignature di Mod Security. Anda melihatnya menarik.

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

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

    SecServerSignature YourServerName

    Ex:

    [/ 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.

    Konfigurasikan Dengar

    Ketika Anda memiliki banyak antarmuka dan IP pada satu server, disarankan untuk mendengarkan Direktif yang dikonfigurasi dengan IP absolut dan nomor Port.

    Ketika Anda meninggalkan konfigurasi apache untuk Mendengarkan semua IP dengan beberapa nomor port, itu dapat membuat masalah dalam meneruskan permintaan HTTP ke beberapa server web lainnya. Ini cukup umum di lingkungan bersama.

    • Konfigurasikan Dengarkan arahan dalam httpd.conf dengan IP dan port absolut seperti contoh di bawah ini

    Dengarkan 10.10.10.1:80

    Akses Logging

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

    Secara default, Apache tidak dikonfigurasi untuk mengambil 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 arahan LogFormat

    LogFormat "% h% l% u% t "% {sessionID} C" "% r" %>s% b% T" umum

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

    Nonaktifkan Memuat modul yang tidak diinginkan

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

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

    WebDAV (Authoring Terdistribusi dan Versi Berbasis Web) 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
    #Masukkan 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 bimbingan dari tautan berikut:

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

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

    Jeffrey Wilson Administrator
    Sorry! The Author has not filled his profile.
    follow me
      Like this post? Please share to your friends:
      Adblock
      detector
      map