apache本身不是防火墙,需结合其模块(如mod_security、require ip)、系统防火墙(firewalld/ufw)和外部waf构建三层防护:apache控制脚本执行与路径访问,系统防火墙管控端口与ip连接,waf检测并拦截恶意请求内容。

1. Apache 内部限制动态脚本访问权限
防止未授权执行 .php/.py/.jsp 等动态资源,或限制上传目录执行能力:
- 禁用目录下脚本执行(例如上传目录
/var/www/html/uploads):<directory><br> php_flag engine off<br> Options -ExecCGI<br> AddHandler default-handler .php .py .jsp<br> Require all granted<br></directory> - 对特定后缀强制拒绝访问(如禁止直接访问
.env、.git):<files><br> Require all denied<br></files><br><filesmatch><br> Require all denied<br></filesmatch> - 启用
mod_security(推荐 v3.x)作为应用层 WAF,在 Apache 配置中加载规则集,拦截 SQLi/XSS/文件包含等攻击:
确保已安装并启用:LoadModule security2_module modules/mod_security2.so
并在主配置或虚拟主机中引用规则文件,例如:Include /etc/httpd/modsecurity.d/owasp-crs/crs-setup.conf
2. 系统防火墙(firewalld)限制动态请求入口
Apache 动态应用常通过 80/443 接收请求,但后端可能还暴露管理接口(如 phpMyAdmin 默认走 80,但建议改端口或加认证)——这些端口需严格管控:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 只开放业务必需端口(如仅 80/443),关闭调试端口:
firewall-cmd --permanent --remove-port=8080/tcpfirewall-cmd --permanent --remove-service=http(若不用 HTTP 明文) - 限制特定 IP 访问后台路径(如 /admin、/wp-admin)需结合 Apache 的
Require ip或反向代理前置 Nginx 做 IP 过滤;firewalld 本身不支持 URL 级控制,但可封掉整段恶意 IP:firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.100.50" reject' - 对高频请求 IP 做连接数限制(需配合
nf_conntrack和 timeout 规则,属进阶用法,日常建议交由 mod_evasive 或 fail2ban 处理)
3. 云 WAF 或硬件 WAF 针对动态接口定制防护
当使用华为云 WAF、阿里云 Anti-Bot、Cloudflare 等服务时,应为动态路径单独设置策略:
- 将
/api/*、/login、/wp-json/*等路径加入“精确匹配”防护规则,开启“严格”模式的 Web 基础防护(SQL 注入、命令注入、JSON 解析异常检测) - 对 POST 请求体做深度检测(如限制 JSON 字段深度、数组长度、字符串最大长度),防止解析器溢出或反序列化漏洞
- 配置地理位置访问控制:例如国内业务,可直接拦截境外 IP 对
/register和/password-reset的请求,大幅降低撞库风险
ErrorLog + modsec audit log + firewall 日志)做关联分析。










