Discuz!社区建站防DDOS攻击脚本[适用于宝塔、AMH linux服务器]
Discuz!社区建站防DDOS攻击脚本[适用于宝塔、AMH linux服务器]:原理:用Cron计划任务定时执行脚本统计单个IP的最大连接数,如果超过阈值则用APF或者iptables来阻止,并在预设的阻止时间后释放。安装:wget https://www.dz-x.net/scripts/install.sh
chmod +x install.sh
./install.sh
卸载:
wget https://www.dz-x.net/scripts/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
配置:
/usr/local/ddos/ddos.conf
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"
CRON="/etc/cron.d/ddos.cron"
APF="/etc/apf/apf"
IPT="/sbin/iptables"
##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron 多少分钟执行一次统计
##### option so that the new frequency takes effect
FREQ=1
##### How many connections define a bad IP? Indicate that below. 当一个IP的最大连接是多少的时候阻止它
NO_OF_CONNECTIONS=150
##### APF_BAN=1 (Make sure your APF version is atleast 0.96,确定安装APF并且版本大雨0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF,用iptables代理APF)
APF_BAN=1
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting,推荐设置)
KILL=1
##### An email is sent to the following address when an IP is banned.阻止一个IP后通知谁
##### Blank would suppress sending of mails
EMAIL_TO="root"
##### Number of seconds the banned
你提供的脚本是一个用于防止DDoS攻击的自动化工具,它通过Cron计划任务定时执行脚本来统计单个IP的最大连接数,并在连接数超过预设阈值时,使用APF或iptables来阻止该IP地址。以下是对脚本配置的详细解释和一些建议:
### 1. **脚本原理**
- **Cron计划任务**:脚本通过Cron定时执行,每隔一定时间(由`FREQ`参数控制)检查当前服务器的连接情况。
- **IP连接数统计**:脚本会统计每个IP的连接数,如果某个IP的连接数超过`NO_OF_CONNECTIONS`设定的阈值,则会被视为恶意IP。
- **IP阻止与释放**:当检测到恶意IP时,脚本会使用APF或iptables阻止该IP的访问,并在预设的时间后自动释放。
### 2. **安装与卸载**
- **安装**:
wget https://www.dz-x.net/scripts/install.sh
chmod +x install.sh
./install.sh
- **卸载**:
wget https://www.dz-x.net/scripts/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
### 3. **配置文件详解**
配置文件路径为`/usr/local/ddos/ddos.conf`,以下是各配置项的解释:
- **PROGDIR**:脚本和相关文件的存放目录。
- **PROG**:主脚本的路径。
- **IGNORE_IP_LIST**:忽略的IP列表文件路径,这些IP不会被阻止。
- **CRON**:Cron计划任务的配置文件路径。
- **APF**:APF防火墙的路径。
- **IPT**:iptables的路径。
- **FREQ**:脚本执行的频率(以分钟为单位)。建议设置为1分钟,以便及时检测和阻止恶意IP。
- **NO_OF_CONNECTIONS**:单个IP的最大连接数阈值。超过这个值的IP将被阻止。建议根据服务器的实际负载情况调整这个值。
- **APF_BAN**:是否使用APF来阻止IP。如果设置为1,则使用APF;如果设置为0,则使用iptables。
- **KILL**:是否阻止恶意IP。设置为1时,脚本会自动阻止恶意IP;设置为0时,仅统计不阻止。
- **EMAIL_TO**:当有IP被阻止时,发送通知邮件的地址。如果留空,则不发送邮件。
### 4. **使用建议**
- **调整阈值**:`NO_OF_CONNECTIONS`的值应根据服务器的实际负载情况调整。如果服务器负载较高,可以适当提高这个值;如果服务器负载较低,可以适当降低这个值。
- **APF与iptables选择**:如果服务器上安装了APF防火墙,建议使用APF来阻止IP(`APF_BAN=1`)。如果没有安装APF,则可以使用iptables(`APF_BAN=0`)。
- **邮件通知**:建议设置`EMAIL_TO`参数,以便在IP被阻止时及时收到通知。
### 5. **注意事项**
- **Cron任务**:修改`FREQ`参数后,需要重新启动Cron任务以使新的频率生效。
- **IP释放时间**:脚本默认会在阻止一段时间后自动释放IP。如果需要调整释放时间,可以修改脚本中的相关逻辑。
- **日志监控**:建议定期检查脚本的日志文件,以便了解哪些IP被阻止以及阻止的原因。
### 6. **进一步优化**
- **结合CDN**:如果网站使用了CDN服务,建议将CDN的IP段加入`IGNORE_IP_LIST`,以避免误封CDN的IP。
- **多服务器部署**:如果有多台服务器,可以考虑在多台服务器上部署该脚本,并通过统一的日志管理系统来监控所有服务器的DDoS攻击情况。
通过以上配置和优化,你可以有效地防止DDoS攻击对Discuz!社区的影响,确保网站的稳定运行。如果有其他问题或需要进一步的帮助,请随时联系。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]