支持系统:CentOS 7.9+/Ubuntu 20.04+,最低配置1核2G云服务器,已开放22(SSH)、80/443(Web服务)端口
操作前请先切换到root用户,所有命令均在root权限下执行
CentOS系统执行:
``` yum install epel-release git python3 python3-pip -y ```Ubuntu系统执行:
``` apt update && apt install git python3 python3-pip -y ```CentOS执行:
``` yum install fail2ban -y ```Ubuntu执行:
``` apt install fail2ban -y ```启动并设置开机自启:
``` systemctl start fail2ban && systemctl enable fail2ban ```CentOS执行:
``` yum install clamav clamav-update -y ```Ubuntu执行:
``` apt install clamav clamav-daemon -y ```更新病毒库(首次更新需要5-10分钟,耐心等待):
``` systemctl stop clamav-freshclam freshclam systemctl start clamav-freshclam && systemctl enable clamav-freshclam ```直接拉取开源轻量规则库到本地:
``` git clone https://github.com/xsec-lab/x-waf.git /opt/x-waf ```如果你的服务器已安装Nginx,在Nginx配置文件http块中添加如下内容:
``` lua_package_path "/opt/x-waf/lib/?.lua;;"; init_by_lua_file /opt/x-waf/init.lua; access_by_lua_file /opt/x-waf/waf.lua; ```
重载Nginx生效:
``` nginx -t && nginx -s reload ```新建配置文件/etc/fail2ban/jail.local,完整内容如下:
``` [DEFAULT] bantime = 86400 findtime = 600 maxretry = 3 banaction = iptables-multiport destemail = your_email@example.com action = %(action_mwl)s [sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s [nginx-cc] enabled = true port = http,https filter = nginx-cc logpath = /var/log/nginx/access.log maxretry = 20 findtime = 60 bantime = 3600 ```重载Fail2ban生效:
``` fail2ban-client reload ```编辑/opt/x-waf/config.lua,修改如下配置项:
``` -- 开启全量防护 waf_enable = "on" -- 开启CC防护 cc_enable = "on" -- 单个IP 60秒内最多请求100次 cc_rate = "100/60" -- 拦截后返回状态码 waf_redirect_status = 403 -- 开启SQL注入、XSS、文件包含攻击拦截 sql_injection_check = "on" xss_check = "on" file_inclusion_check = "on" ```重载Nginx生效:
``` nginx -t && nginx -s reload ```新建告警脚本/opt/alert.py,完整内容如下,只需修改webhook地址为你的企业微信/飞书/钉钉机器人地址:
``` import requests import sys import json def send_alert(content): webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的机器人key" headers = {"Content-Type": "application/json"} data = { "msgtype": "text", "text": { "content": f"【智能防护系统告警】\n{content}" } } requests.post(webhook_url, headers=headers, data=json.dumps(data)) if __name__ == "__main__": content = sys.argv[1] send_alert(content) ```给脚本添加执行权限:
``` chmod +x /opt/alert.py && pip3 install requests ```在Fail2ban的action配置中添加告警触发,编辑/etc/fail2ban/action.d/iptables-multiport.conf,在actionban块末尾添加:
``` actionban = iptables -I f2b-重载Fail2ban生效:
``` fail2ban-client reload ```用其他机器连续3次输错SSH密码,执行如下命令查看封禁记录:
``` fail2ban-client status sshd ```正常返回结果中会显示被封禁的IP,同时收到告警通知
访问你的服务器地址`http://你的IP/?id=1' and 1=1--`,会直接返回403,代表SQL注入拦截生效
fail2ban-client statusfail2ban-client set <规则名> unbanip clamscan -r / --exclude-dir=/sys --exclude-dir=/proc -i -l /var/log/clamav_scan.logtail -f /opt/x-waf/logs/waf.log所有配置默认适配90%个人站长、中小企业业务场景,如有特殊需求可直接修改对应规则文件的参数,无需调整核心逻辑。












易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图