## محافظت از Apache در برابر حملات Brute Force و DDoS با استفاده از mod\_security و mod\_evasive
وبسرور Apache بهطور گستردهای در سرورها استفاده میشود، اما بهدلیل محبوبیت بالا، هدف حملاتی مانند **Brute Force** و **DDoS** نیز قرار میگیرد. در این مقاله یاد میگیرید چگونه با استفاده از دو ماژول امنیتی مهم یعنی `mod_security` و `mod_evasive` از Apache در برابر این تهدیدات محافظت کنید.
---
## 🔐 mod\_security چیست؟
ماژول `mod_security` یک **فایروال برنامهی وب (WAF)** برای Apache است که درخواستهای ورودی را با قوانین امنیتی بررسی کرده و در صورت شناسایی الگوهای مخرب (مانند SQL injection یا XSS) آنها را مسدود میکند.
---
## 🔥 mod\_evasive چیست؟
`mod_evasive` ماژولی است برای جلوگیری از حملات **DDoS**، **DoS** و تلاشهای مکرر از یک آدرس IP. در صورت شناسایی فعالیت مشکوک، آدرس IP مهاجم مسدود میشود.
---
## 🧰 پیشنیازها
* سرور لینوکسی (مثلاً Ubuntu/Debian یا CentOS/RHEL)
* Apache نصبشده
* دسترسی root یا کاربر sudo
---
## 🧱 ۱. نصب mod\_security
### در Ubuntu/Debian:
```bash
sudo apt update
sudo apt install libapache2-mod-security2 -y
```
### در CentOS/RHEL:
```bash
sudo yum install mod_security -y
```
### فعالسازی و شروع پیکربندی:
فایل کانفیگ را باز کنید:
```bash
sudo nano /etc/modsecurity/modsecurity.conf
```
مقدار `SecRuleEngine` را به `On` تغییر دهید:
```apache
SecRuleEngine On
```
### بارگذاری مجدد Apache:
```bash
sudo systemctl restart apache2 # یا httpd در CentOS
```
---
## 📜 اضافه کردن مجموعه قوانین OWASP (توصیهشده)
### در Ubuntu:
```bash
sudo apt install modsecurity-crs -y
```
سپس لینک کنید:
```bash
sudo ln -s /usr/share/modsecurity-crs/base_rules/* /usr/share/modsecurity-crs/activated_rules/
```
در فایل کانفیگ مسیر این قوانین را اضافه کنید (در `/etc/apache2/mods-enabled/security2.conf`).
---
## ⚔️ ۲. نصب mod\_evasive
### در Ubuntu/Debian:
```bash
sudo apt install libapache2-mod-evasive -y
```
### در CentOS/RHEL:
```bash
sudo yum install epel-release -y
sudo yum install mod_evasive -y
```
---
## ⚙️ ۳. پیکربندی mod\_evasive
فایل کانفیگ را ایجاد یا ویرایش کنید:
### در Ubuntu:
```bash
sudo nano /etc/apache2/mods-available/evasive.conf
```
### در CentOS:
```bash
sudo nano /etc/httpd/conf.d/mod_evasive.conf
```
محتوای نمونه:
```apache
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify admin@example.com
DOSLogDir "/var/log/mod_evasive"
DOSWhitelist 127.0.0.1
</IfModule>
```
ایجاد دایرکتوری لاگ:
```bash
sudo mkdir -p /var/log/mod_evasive
sudo chown -R www-data:www-data /var/log/mod_evasive
```
فعالسازی ماژول و ریاستارت:
```bash
sudo a2enmod evasive # فقط در Debian/Ubuntu
sudo systemctl restart apache2
```
---
## 🧪 تست عملکرد
### برای mod\_security:
ارسال یک درخواست خطرناک مانند:
```
curl http://yourserver.com/index.php?param=<script>alert(1)</script>
```
باید با **403 Forbidden** مواجه شوید.
---
### برای mod\_evasive:
اجرای حملهی ساده با `ab` (Apache Benchmark):
```bash
ab -n 200 -c 50 http://yourserver.com/
```
در صورتی که `mod_evasive` درست تنظیم شده باشد، برخی درخواستها رد خواهند شد.
---
## ✅ نتیجهگیری
با استفاده از `mod_security` و `mod_evasive` میتوانید لایهی حفاظتی قدرتمندی برای وبسرور Apache ایجاد کنید. این ماژولها جلوی حملات رایج را گرفته و امنیت سرور شما را بهشدت افزایش میدهند.
---
### پیشنهاد تکمیلی:
* نصب **Fail2ban** برای مسدودسازی آیپیهای مخرب در سطح سیستم
* استفاده از **Reverse Proxy** مانند Nginx برای توزیع بار
* فعالسازی **HTTP/2** و **SSL/TLS سختگیرانه**