Lindungi Apache daripada serangan kekejaman atau serangan DDo
- 2021
- 611
- Dave Kreiger V
Bagi anda dalam perniagaan hosting, atau jika anda menganjurkan pelayan anda sendiri dan mendedahkannya ke Internet, menjamin sistem anda terhadap penyerang mestilah menjadi keutamaan yang tinggi.
mod_security (enjin pengesanan pencerobohan dan pencegahan sumber terbuka untuk aplikasi web yang mengintegrasikan dengan lancar dengan webserver) dan mod_evasif adalah dua alat yang sangat penting yang boleh digunakan untuk melindungi pelayan web terhadap serangan kasar atau (d) serangan DOS.
Artikel yang berkaitan: Cara Memasang Malware Linux Mengesan dengan Clamav sebagai Enjin Antivirusmod_evasif, Seperti namanya, memberikan keupayaan mengelak semasa diserang, bertindak sebagai payung yang melindungi pelayan web dari ancaman tersebut.
Pasang mod_security dan mod_evasive untuk melindungi ApacheDalam artikel ini, kami akan membincangkan cara memasang, mengkonfigurasi, dan meletakkannya bersama dengan Apache RHEL/Centos 8 dan 7 serta Fedora. Di samping itu, kami akan mensimulasikan serangan untuk mengesahkan bahawa pelayan bertindak balas dengan sewajarnya.
Ini mengandaikan bahawa anda mempunyai pelayan lampu yang dipasang pada sistem anda. Sekiranya tidak, sila periksa artikel ini sebelum meneruskan lebih lanjut.
- Cara Memasang Pelayan Lampu di CentOS 8
- Cara memasang timbunan lampu di rhel/centos 7
Anda juga perlu menubuhkan IPTABLES Sebagai front-end firewall lalai dan bukannya firewalld jika anda berjalan RHEL/CENTOS 8/7 atau Fedora. Kami melakukan ini untuk menggunakan alat yang sama di kedua -duanya RHEL/Centos 8/7 dan Fedora.
Langkah 1: Memasang firewall iptables di rhel/centos 8/7 dan fedora
Untuk memulakan, menghentikan dan melumpuhkan Firewalld:
# Systemctl Stop Firewalld # Systemctl Lumpuhkan FirewalldLumpuhkan Perkhidmatan Firewalld
Kemudian pasang iptables-services pakej sebelum membolehkan IPTABLES:
# yum update && yum Pasang iptables-lervices # Systemctl Dayakan iptables # Systemctl Start IPPABLES # Systemctl Status IppablesPasang iptables firewall
Langkah 2: Memasang mod_security dan mod_evasive
Di samping mempunyai persediaan lampu yang sudah ada, anda juga perlu membolehkan repositori epel di RHEL/Centos 8/7 Untuk memasang kedua -dua pakej. Pengguna Fedora tidak perlu mengaktifkan repo, kerana Epel sudah menjadi sebahagian daripada projek Fedora.
# yum update && yum install mod_security mod_evasive --------------- CentOS/RHEL 8 --------------- # DNF Pasang https: // pkgs.Dyn.Su/El8/Base/x86_64/Raven-Release-1.0-1.EL8.Noarch.RPM # DNF --EnableRepo = Raven-Extras Pasang mod_evasive
Apabila pemasangan selesai, anda akan menemui fail konfigurasi untuk kedua -dua alat di /etc/httpd/conf.d.
# ls -l/etc/httpd/conf.dmod_security + konfigurasi mod_vasive
Sekarang, untuk mengintegrasikan kedua -dua modul ini dengan Apache dan muatkannya apabila ia bermula, pastikan baris berikut muncul di bahagian peringkat atas mod_evasif.Conf dan mod_security.Conf, masing -masing:
LoadModule Evasive20_module modul/mod_evasive24.Jadi LoadModule Security2_Module Modul/Mod_Security2.Jadi
Perhatikan bahawa modul/mod_security2.Jadi dan modul/mod_evasive24.Jadi adalah jalan relatif, dari /etc/httpd direktori ke fail sumber modul. Anda boleh mengesahkan ini (dan mengubahnya, jika diperlukan) dengan menyenaraikan kandungan /etc/httpd/modul Direktori:
# cd/etc/httpd/modul # pwd # ls -l | grep -ei '(mengelak | keselamatan)'Sahkan mod_security + modul mod_vasive
Kemudian mulakan semula Apache dan sahkan bahawa ia memuatkan mod_evasif dan mod_security:
# Systemctl mulakan semula httpd
Buang senarai modul statik dan dikongsi yang dimuatkan.
# httpd -m | grep -ei '(mengelak | keselamatan)'Semak mod_security + mod_vasif modul yang dimuatkan
Langkah 3: Memasang Peraturan Teras dan Mengkonfigurasi Mod_Security
Dalam beberapa perkataan, a Set Peraturan Teras (aka CRS) menyediakan pelayan web dengan arahan bagaimana berkelakuan dalam keadaan tertentu. Firma pemaju mod_security menyediakan percuma CRS dipanggil Owasp (Open Web Application Security Project) ModSecurity CRS yang boleh dimuat turun dan dipasang seperti berikut.
1. Muat turun 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/archive/v3.2.0.tar.GZ -O MasterMuat turun Peraturan Teras Mod_Security
2. Untar the CRS fail dan tukar nama direktori untuk salah satu kemudahan kami.
# tar xzf master # mv owasp-modsecurity-crs-3.2.0 Owasp-Modsecurity-CRS
3. Kini tiba masanya untuk mengkonfigurasi Mod_Security. Salin fail sampel dengan peraturan (OWASP-ModSecurity-CRS/ModSecurity_crs_10_Setup.Conf.Contoh) ke dalam fail lain tanpa .Contoh sambungan:
# CD OWASP-Modsecurity-CRS/ # CP CRS-Setup.Conf.Contoh CRS-Setup.Conf
Dan beritahu Apache Untuk menggunakan fail ini bersama -sama dengan modul dengan memasukkan baris berikut dalam fail konfigurasi utama pelayan web /etc/httpd/conf/httpd.Conf fail. Jika anda memilih untuk membongkar tarball dalam direktori lain, anda perlu mengedit laluan mengikut arahan termasuk:
Sertakan CRS-TECMINT/OWASP-MODSECESITY-CRS/CRS-SETUP.CONF termasuk CRS-TECMINT/OWASP-MODSECIENTY-CRS/RULES/*.Conf
Akhirnya, disarankan agar kami membuat fail konfigurasi kami sendiri dalam /etc/httpd/modsecurity.d direktori di mana kami akan meletakkan arahan kami yang disesuaikan (kami akan namakannya Tecmint.Conf dalam contoh berikut) dan bukannya mengubah suai CRS fail secara langsung. Berbuat demikian akan membolehkan peningkatan CRSS yang lebih mudah apabila versi baru dikeluarkan.
SecruleAngine on SecrequestBodyAccess on SecresponseBodyAccess on SecresponseBodyMimetype Text/Text Plain/HTML Text/XML Aplikasi/Octet-Stream Secdatadir/TMP
Anda boleh merujuk kepada repositori GitHub ModSecurity SpiderLabs untuk panduan penjelasan lengkap mod_security Arahan Konfigurasi.
Langkah 4: Mengkonfigurasi mod_evasive
mod_evasif dikonfigurasikan menggunakan arahan di /etc/httpd/conf.d/mod_evasive.Conf. Oleh kerana tidak ada peraturan untuk dikemas kini semasa peningkatan pakej, kami tidak memerlukan fail berasingan untuk menambah arahan tersuai, berbanding dengan mod_security.
Lalai mod_evasif.Conf Fail mempunyai arahan berikut yang diaktifkan (perhatikan bahawa fail ini sangat dikomentari, jadi kami telah melepaskan komen untuk menyerlahkan arahan konfigurasi di bawah):
Doshashtablesize 3097 DospageCount 2 DossiteCount 50 DospageInterval 1 DossiteInterval 1 Dosblockingperiod 10
Penjelasan arahan:
- Doshashtablesize: Arahan ini menentukan saiz jadual hash yang digunakan untuk menjejaki aktiviti pada asas alamat per-ip. Meningkatkan bilangan ini akan memberikan pencarian lebih cepat laman web yang telah dikunjungi oleh pelanggan pada masa lalu, tetapi mungkin memberi kesan kepada prestasi keseluruhan jika ditetapkan terlalu tinggi.
- DospageCount: Bilangan permintaan yang sama dengan URI tertentu (contohnya, sebarang fail yang disampaikan oleh Apache) yang boleh dibuat oleh pengunjung ke atas selang dospageinterval.
- DossiteCount: Sama dengan DospageCount, tetapi merujuk kepada berapa banyak permintaan keseluruhan boleh dibuat ke seluruh tapak melalui selang dossiteinterval.
- Dosblockingperiod: Sekiranya pelawat melebihi had yang ditetapkan oleh DossPageCount atau DossiteCount, alamat IP sumbernya akan disenarai hitam semasa jumlah masa. Semasa dosblockingperiod, sebarang permintaan yang datang dari alamat IP itu akan menemui ralat yang dilarang 403.
Jangan ragu untuk bereksperimen dengan nilai -nilai ini supaya pelayan web anda dapat mengendalikan jumlah dan jenis lalu lintas yang diperlukan.
Hanya kaveat kecil: Jika nilai -nilai ini tidak ditetapkan dengan betul, anda menghadapi risiko akhirnya menyekat pelawat yang sah.
Anda juga mungkin ingin mempertimbangkan arahan berguna yang lain:
Dosemailnotify
Sekiranya anda mempunyai pelayan mel dan berjalan, anda boleh menghantar mesej amaran melalui Apache. Perhatikan bahawa anda perlu memberikan kebenaran pengguna apache selinux untuk menghantar e -mel jika selinux ditetapkan untuk menguatkuasakan. Anda boleh melakukannya dengan berlari
# setsebool -p httpd_can_sendmail 1
Seterusnya, tambahkan arahan ini di mod_evasif.Conf Fail dengan seluruh arahan lain:
Dosemailnotify [dilindungi e -mel]
Sekiranya nilai ini ditetapkan dan pelayan mel anda berfungsi dengan betul, e -mel akan dihantar ke alamat yang ditentukan apabila alamat IP menjadi disenaraihitamkan.
DossystemCommand
Ini memerlukan arahan sistem yang sah sebagai hujah,
DossystemCommand
Arahan ini menentukan arahan yang akan dilaksanakan apabila alamat IP disenarai hitam. Ia sering digunakan bersempena dengan skrip shell yang menambah peraturan firewall untuk menyekat sambungan selanjutnya yang datang dari alamat IP tersebut.
Tulis skrip shell yang mengendalikan senarai hitam IP di peringkat firewall
Apabila alamat IP disenarai hitam, kita perlu menyekat sambungan masa depan yang datang daripadanya. Kami akan menggunakan skrip shell berikut yang melaksanakan tugas ini. Buat direktori yang dinamakan Skrip-Tecmint (atau apa sahaja nama pilihan anda) di /usr/tempatan/bin dan fail yang dipanggil Ban_ip.sh dalam direktori itu.
#!/bin/sh # ip yang akan disekat, seperti yang dikesan oleh mod_evasive ip = $ 1 # jalur penuh ke iptables iptables = "/sbin/iptables" # mod_evasive lock direktori mod_evasive_logdir =/var/log/mod_evasive # Tambah peraturan firewall berikut ( Blok semua lalu lintas yang datang dari $ ip) $ iptables -i input -s $ ip -j drop # Buang fail kunci untuk pemeriksaan masa depan rm -f "$ mod_evasive_logdir"/dos -"$ ip"
Kami DossystemCommand Arahan harus dibaca seperti berikut:
DossystemCommand "sudo/usr/local/bin/scripts-tecmint/ban_ip.sh %s "
Di garisan di atas, %s mewakili IP yang menyinggung seperti yang dikesan oleh mod_evasif.
Tambahkan pengguna Apache ke fail sudoers
Perhatikan bahawa semua ini tidak akan berfungsi melainkan anda memberi kebenaran kepada pengguna Apache untuk menjalankan skrip kami (dan skrip itu sahaja!) tanpa terminal dan kata laluan. Seperti biasa, anda hanya boleh menaip Visudo sebagai akar untuk mengakses /etc/sudoers Fail dan kemudian tambahkan 2 baris berikut seperti yang ditunjukkan dalam imej di bawah:
Apache All = noPasswd:/usr/local/bin/scripts-tecmint/ban_ip.SH Lalai: Apache !memerlukanTambahkan pengguna Apache ke sudoer
Penting: Sebagai dasar keselamatan lalai, anda hanya boleh menjalankan sudo di terminal. Oleh kerana dalam kes ini, kita perlu menggunakan sudo tanpa a tty, Kita perlu mengulas garis yang diserlahkan dalam imej berikut:
#Defaults diperlukanLumpuhkan Tty untuk sudo
Akhirnya, mulakan semula webserver:
# Systemctl mulakan semula httpd
Langkah 4: Mensimulasikan serangan DDOS di Apache
Terdapat beberapa alat yang boleh anda gunakan untuk mensimulasikan serangan luaran pada pelayan anda. Anda hanya boleh google untuk "alat untuk mensimulasikan serangan DDOS"Untuk mencari beberapa dari mereka.
Perhatikan bahawa anda, dan hanya anda, akan bertanggungjawab terhadap hasil simulasi anda. Jangan berfikir untuk melancarkan serangan simulasi pada pelayan yang anda tidak hosting dalam rangkaian anda sendiri.
Sekiranya anda ingin melakukan perkara yang sama dengan VP yang dihoskan oleh orang lain, anda perlu memberi amaran dengan sewajarnya penyedia hosting anda atau meminta izin untuk banjir lalu lintas untuk melalui rangkaian mereka. Tecmint.com tidak, dengan cara apa pun, bertanggungjawab atas perbuatan anda!
Di samping itu, melancarkan serangan DOS simulasi dari hanya satu tuan rumah tidak mewakili serangan kehidupan sebenar. Untuk mensimulasikannya, anda perlu menyasarkan pelayan anda dari beberapa pelanggan pada masa yang sama.
Persekitaran ujian kami terdiri daripada a Centos 7 pelayan [IP 192.168.0.17] dan tuan rumah Windows dari mana kami akan melancarkan serangan [ip 192.168.0.103]:
Sahkan iPaddress tuan rumahSila mainkan video di bawah dan ikuti langkah -langkah yang digariskan dalam perintah yang ditunjukkan untuk mensimulasikan serangan DOS yang mudah:
Kemudian IP yang menyinggung disekat oleh iptables:
IP penyerang yang disekatKesimpulan
Dengan mod_security dan mod_evasif didayakan, serangan simulasi menyebabkan CPU dan Ram Untuk bereksperimen dengan puncak penggunaan sementara hanya beberapa saat sebelum IPS sumber disenarai hitam dan disekat oleh firewall. Tanpa alat ini, simulasi pasti akan mengetuk pelayan dengan cepat dan menjadikannya tidak dapat digunakan sepanjang tempoh serangan.
Kami ingin mendengar jika anda merancang menggunakan (atau telah digunakan pada masa lalu) alat ini. Kami sentiasa berharap dapat mendengar daripada anda, jadi jangan ragu untuk meninggalkan komen dan soalan anda, jika ada, menggunakan borang di bawah.
Pautan rujukan
https: // www.ModSecurity.org/
- « Pasang Docker dan pelajari manipulasi kontena asas di CentOS dan RHEL 8/7 - Bahagian 1
- Cara Memasang dan Menggunakan Linux Malware Detect (LMD) dengan Clamav sebagai Enjin Antivirus »