Lindungi Apache dari serangan brute force atau DDOS menggunakan modul mod_security dan mod_evasive mod_

Lindungi Apache dari serangan brute force atau DDOS menggunakan modul mod_security dan mod_evasive mod_

Bagi Anda dalam bisnis hosting, atau jika Anda hosting server Anda sendiri dan mengeksposnya ke internet, mengamankan sistem Anda terhadap penyerang harus menjadi prioritas tinggi.

mod_security (Open-Source Intrusion Detection and Prevention Engine untuk aplikasi web yang terintegrasi mulus dengan server web) dan mod_evasive adalah dua alat yang sangat penting yang dapat digunakan untuk melindungi server web dari brute force atau (d) serangan dos.

Artikel terkait: Cara Menginstal Malware Linux Deteksi dengan ClAMAV sebagai mesin antivirus

mod_evasive, Seperti namanya, memberikan kemampuan mengelak saat diserang, bertindak sebagai payung yang melindungi server web dari ancaman semacam itu.

Instal mod_security dan mod_evasive untuk melindungi apache

Di artikel ini, kita akan membahas cara menginstal, mengkonfigurasi, dan memakainya bersama dengan Apache di RHEL/Centos 8 Dan 7 sebaik Fedora. Selain itu, kami akan mensimulasikan serangan untuk memverifikasi bahwa server bereaksi sesuai.

Ini mengasumsikan bahwa Anda memiliki server lampu yang diinstal pada sistem Anda. Jika tidak, silakan periksa artikel ini sebelum melanjutkan lebih lanjut.

  • Cara menginstal server lampu di centos 8
  • Cara memasang tumpukan lampu di rhel/centos 7

Anda juga perlu mengatur ptable sebagai front-end firewall default alih-alih firewalld jika Anda berlari Rhel/centos 8/7 atau Fedora. Kami melakukan ini untuk menggunakan alat yang sama di keduanya RHEL/Centos 8/7 Dan Fedora.

Langkah 1: Memasang firewall ptables di Rhel/Centos 8/7 dan Fedora

Untuk memulai, berhenti dan nonaktifkan Firewalld:

# Systemctl Stop firewalld # systemctl nonaktifkan firewalld 
Nonaktifkan layanan firewalld

Lalu instal Layanan Iptables paket sebelum mengaktifkan ptable:

# yum update && yum install ptables-services # systemctl mengaktifkan ptables # systemctl start ptables # systemctl status ptables 
Pasang firewall ptables

Langkah 2: Menginstal mod_security dan mod_evasive

Selain memiliki pengaturan lampu yang sudah ada, Anda juga harus mengaktifkan repositori EPEL di RHEL/Centos 8/7 Untuk menginstal kedua paket. Pengguna Fedora tidak perlu mengaktifkan repo apa pun, karena Epel sudah menjadi bagian dari proyek Fedora.

# yum update && yum install mod_security mod_evasive --------------- centos/rhel 8 --------------- # dnf Instal https: // pkgs.dyn.SU/EL8/BASE/X86_64/RAVEN-RELEASE-1.0-1.EL8.Noarch.RPM # dnf --enablerepo = raven-extras install mod_evasive 

Saat instalasi selesai, Anda akan menemukan file konfigurasi untuk kedua alat di /etc/httpd/conf.D.

# ls -l/etc/httpd/conf.D 
mod_security + Mod_evasive Configurations

Sekarang, untuk mengintegrasikan kedua modul ini dengan Apache dan memuatnya saat dimulai, pastikan garis-garis berikut muncul di bagian tingkat atas mod_evasive.conf Dan mod_security.conf, masing -masing:

Modul LoadModule Evasive20_Module/mod_evasive24.Jadi Modul LoadModule Security2_Module/mod_security2.Jadi 

Perhatikan itu Modul/mod_security2.Jadi Dan Modul/mod_evasive24.Jadi adalah jalur relatif, dari /etc/httpd Direktori ke file sumber modul. Anda dapat memverifikasi ini (dan mengubahnya, jika diperlukan) dengan mendaftarkan konten dari /etc/httpd/modul direktori:

# CD/etc/httpd/modul # pwd # ls -l | grep -ei '(Evasive | Security)' 
Verifikasi mod_security + modul mod_evasive

Kemudian restart Apache dan verifikasi bahwa itu memuat mod_evasive Dan mod_security:

# Systemctl restart httpd 

Buang daftar modul statis dan bersama yang dimuat.

# httpd -m | grep -ei '(Evasive | Security)' 
Periksa mod_security + modul mod_evasive dimuat

Langkah 3: Memasang set aturan inti dan mengkonfigurasi mod_security

Dalam beberapa kata, a Set aturan inti (alias CRS) memberikan server web instruksi tentang cara berperilaku dalam kondisi tertentu. Perusahaan pengembang mod_security memberikan gratis CRS ditelepon Owasp (Buka Proyek Keamanan Aplikasi Web) ModSecurity CRS yang dapat diunduh dan diinstal sebagai berikut.

1. Unduh OWASP CRS ke direktori yang dibuat untuk tujuan itu.

# mkdir/etc/httpd/crs-tecmint # cd/etc/httpd/crs-tecmint # wget -c https: // github.com/spiderlabs/owasp-modsecurity-crs/arsip/v3.2.0.ter.GZ -O Master 
Unduh aturan inti mod_security

2. Tanpa CRS mengajukan dan mengubah nama direktori untuk salah satu kenyamanan kami.

# TAR XZF MASTER # MV OWASP-MODSECURTY-CRS-3.2.0 OWASP-MODSECURITY-CRS 

3. Sekarang saatnya mengkonfigurasi mod_security. Salin file sampel dengan aturan (OWASP-MODSECURTY-CRS/MODSECURICITY_CRS_10_SETUP.conf.contoh) ke file lain tanpa .contoh perpanjangan:

# CD OWASP-MODSECURTY-CRS/ # CP CRS-SETUP.conf.Contoh CRS-SETUP.conf 

dan katakan Apache Untuk menggunakan file ini bersama dengan modul dengan memasukkan baris berikut di file konfigurasi utama server web /etc/httpd/conf/httpd.conf mengajukan. Jika Anda memilih untuk membongkar tarball di direktori lain, Anda perlu mengedit jalur mengikuti arahan sertakan:

 Termasuk crs-tecmint/owasp-modsecurity-crs/crs-setup.conf termasuk crs-tecmint/owasp-modsecurity-crs/aturan/*.conf  

Akhirnya, disarankan agar kami membuat file konfigurasi kami sendiri di dalam /etc/httpd/modsecurity.D direktori di mana kami akan menempatkan arahan khusus kami (kami akan menamainya tecmint.conf dalam contoh berikut) alih -alih memodifikasi CRS file secara langsung. Melakukan hal itu akan memungkinkan peningkatan CRSS yang lebih mudah saat versi baru dirilis.

 Secruleengine on SecrequestBodyAccess pada SecResponstybodyAccess pada SecresponseBodyMimetype Text/Teks Polos/Teks HTML/Aplikasi XML/Octet-Stream Secdatadir/TMP  

Anda dapat merujuk ke repositori GitHub modsecurity spiderlab untuk panduan penjelasan lengkap mod_security arahan konfigurasi.

Langkah 4: Mengkonfigurasi mod_evasive

mod_evasive dikonfigurasi menggunakan arahan di /etc/httpd/conf.d/mod_evasive.conf. Karena tidak ada aturan untuk diperbarui selama peningkatan paket, kami tidak memerlukan file terpisah untuk menambahkan arahan khusus, sebagai lawan mod_security.

Default mod_evasive.conf File memiliki arahan berikut diaktifkan (Perhatikan bahwa file ini sangat dikomentari, jadi kami telah menghapus komentar untuk menyorot arahan konfigurasi di bawah):

 Doshashtables 3097 dospagecount 2 dossitecount 50 dospageinterval 1 dossiteinterval 1 dosblockingperiod 10  

Penjelasan Arahan:

  • Doshashtables: Petunjuk ini menentukan ukuran tabel hash yang digunakan untuk melacak aktivitas berdasarkan alamat per-IP. Meningkatkan jumlah ini akan memberikan pencarian yang lebih cepat dari situs yang telah dikunjungi klien di masa lalu, tetapi dapat memengaruhi kinerja keseluruhan jika ditetapkan terlalu tinggi.
  • DospageCount: Jumlah yang sah dari permintaan identik ke URI tertentu (misalnya, file apa pun yang dilayani oleh Apache) yang dapat dilakukan oleh pengunjung melalui interval dospageinterval.
  • DossiteCount: Mirip dengan dospageCount, tetapi mengacu pada berapa banyak permintaan keseluruhan yang dapat dilakukan ke seluruh situs selama interval dossite interval.
  • Dosblockingperiod: Jika seorang pengunjung melebihi batas yang ditetapkan oleh DosspageCount atau DossiteCount, alamat IP sumbernya akan masuk daftar hitam selama jumlah waktu dosblocking. Selama DoSblockingPeriod, setiap permintaan yang berasal dari alamat IP itu akan mengalami 403 kesalahan terlarang.

Jangan ragu untuk bereksperimen dengan nilai -nilai ini sehingga server web Anda akan dapat menangani jumlah dan jenis lalu lintas yang diperlukan.

Hanya peringatan kecil: Jika nilai -nilai ini tidak diatur dengan benar, Anda berisiko berakhir dengan memblokir pengunjung yang sah.

Anda mungkin juga ingin mempertimbangkan arahan bermanfaat lainnya:

DosemailNotify

Jika Anda memiliki server surat dan berjalan, Anda dapat mengirim pesan peringatan melalui Apache. Perhatikan bahwa Anda perlu memberikan izin Selinux pengguna apache untuk mengirim email jika selinux diatur untuk ditegakkan. Anda bisa melakukannya dengan berlari

# setSebool -p httpd_can_sendmail 1 

Selanjutnya, tambahkan arahan ini di mod_evasive.conf File dengan arahan lainnya:

Dosemailnotify [email dilindungi] 

Jika nilai ini ditetapkan dan server email Anda berfungsi dengan baik, email akan dikirim ke alamat yang ditentukan setiap kali alamat IP menjadi daftar hitam.

DossystemCommand

Ini membutuhkan perintah sistem yang valid sebagai argumen,

DossystemCommand  

Petunjuk ini menentukan perintah yang akan dieksekusi setiap kali alamat IP menjadi daftar hitam. Ini sering digunakan bersama dengan skrip shell yang menambahkan aturan firewall untuk memblokir koneksi lebih lanjut yang berasal dari alamat IP itu.

Tulis skrip shell yang menangani daftar hitam IP di tingkat firewall

Saat alamat IP menjadi daftar hitam, kita perlu memblokir koneksi di masa depan yang datang darinya. Kami akan menggunakan skrip shell berikut yang melakukan pekerjaan ini. Buat direktori bernama Scripts-Tecmint (Atau nama apa pun pilihan Anda) di /usr/lokal/bin dan file yang dipanggil Ban_ip.SH di direktori itu.

#!/bin/sh # ip yang akan diblokir, sebagaimana terdeteksi oleh mod_evasive ip = $ 1 # jalur lengkap ke ptables ptables = "/sbin/ptables" # mod_evasive direktori kunci mod_evasive_logdir =/var/log/mod_evasive # tambahkan aturan firewall berikut ( Blokir semua lalu lintas berasal dari $ ip) $ ptables -i input -s $ ip -j drop # hapus file kunci untuk cek di masa mendatang rm -f "$ mod_evasive_logdir"/dos -"$ ip" 

Kita DossystemCommand Petunjuk harus dibaca sebagai berikut:

DossystemCommand "sudo/usr/local/bin/scripts-tecmint/Ban_ip.sh %s " 

Di baris di atas, %S mewakili IP yang menyinggung yang terdeteksi oleh mod_evasive.

Tambahkan pengguna Apache ke file sudoers

Perhatikan bahwa semua ini tidak akan berhasil kecuali Anda memberikan izin kepada pengguna Apache untuk menjalankan skrip kami (dan hanya skrip itu!) tanpa terminal dan kata sandi. Seperti biasa, Anda bisa mengetik Visudo sebagai root untuk mengakses /etc/sudoers File dan kemudian tambahkan 2 baris berikut seperti yang ditunjukkan pada gambar di bawah ini:

Apache all = nopasswd:/usr/local/bin/scripts-tecmint/ban_ip.SH Defaults: Apache !membutuhkan 
Tambahkan pengguna Apache ke sudoers

PENTING: Sebagai kebijakan keamanan default, Anda hanya dapat menjalankan sudo di terminal. Karena dalam hal ini, kita perlu menggunakan sudo tanpa sebuah Tty, Kami harus mengomentari garis yang disorot pada gambar berikut:

#Defaults membutuhkan 
Nonaktifkan Tty untuk sudo

Akhirnya, restart server web:

# Systemctl restart httpd 

Langkah 4: Simulasi serangan DDOS di Apache

Ada beberapa alat yang dapat Anda gunakan untuk mensimulasikan serangan eksternal di server Anda. Anda hanya bisa google untuk “Alat untuk mensimulasikan serangan DDOS“Untuk menemukan beberapa dari mereka.

Perhatikan bahwa Anda, dan hanya Anda, yang akan bertanggung jawab atas hasil simulasi Anda. Bahkan tidak berpikir untuk meluncurkan serangan simulasi di server yang tidak Anda hosting di dalam jaringan Anda sendiri.

Jika Anda ingin melakukan hal yang sama dengan VPS yang diselenggarakan oleh orang lain, Anda perlu memperingatkan penyedia hosting Anda dengan tepat atau meminta izin untuk banjir lalu lintas seperti itu melalui jaringan mereka. Tecmint.com tidak, dengan cara apa pun, bertanggung jawab atas tindakan Anda!

Selain itu, meluncurkan serangan DOS yang disimulasikan dari hanya satu host tidak mewakili serangan kehidupan nyata. Untuk mensimulasikannya, Anda perlu menargetkan server Anda dari beberapa klien secara bersamaan.

Lingkungan pengujian kami terdiri dari a Centos 7 server [IP 192.168.0.17] dan host windows dari mana kami akan meluncurkan serangan [IP 192.168.0.103]:

Konfirmasi host ipaddress

Silakan mainkan video di bawah ini dan ikuti langkah -langkah yang diuraikan dalam urutan yang ditunjukkan untuk mensimulasikan serangan DOS sederhana:

Kemudian IP yang menyinggung diblokir oleh ptables:

IP penyerang yang diblokir

Kesimpulan

Dengan mod_security Dan mod_evasive diaktifkan, serangan yang disimulasikan menyebabkan CPU Dan Ram untuk bereksperimen dengan puncak penggunaan sementara hanya beberapa detik sebelum sumber IPS dimasukkan ke dalam daftar hitam dan diblokir oleh firewall. Tanpa alat -alat ini, simulasi pasti akan merobohkan server dengan sangat cepat dan membuatnya tidak dapat digunakan selama durasi serangan.

Kami akan senang mendengar jika Anda berencana menggunakan (atau telah digunakan di masa lalu) alat -alat ini. Kami selalu menantikan kabar dari Anda, jadi jangan ragu untuk meninggalkan komentar dan pertanyaan Anda, jika ada, menggunakan formulir di bawah ini.

Tautan referensi

https: // www.modsecurity.org/