Apache安全模块配置方法详解
配置Apache安全:安装mod_security与mod_evasive,启用后调整规则引擎、集成OWASPCRS规则集,设置防DDoS参数,加固SSL TLS,添加HTTP安全头与访问控制,重启服务,并通过监控日志与定期维护确保护航效果。
Apache安全模块配置详解:CentOS与Ubuntu实战指南
配置Apache安全模块的核心思路并不复杂:安装模块→启用模块→调整规则→加固周边。虽然流程清晰,但每个环节都需要精确操作。下面直接提供可执行的步骤,按顺序执行即可。

一、基础准备:更新系统与安装必要模块
CentOS系统
- 更新系统及软件包:
sudo yum update -y - 安装核心安全模块:
- mod_security:这是一款Web应用防火墙(WAF),可有效拦截SQL注入、跨站脚本(XSS)等常见网络攻击;
- mod_evasive:专防DDoS和暴力破解的模块,能够限制高频异常请求。
sudo yum install mod_security mod_evasive -y
Ubuntu系统
- 更新系统及软件包:
sudo apt update && sudo apt upgrade -y - 安装核心安全模块:
sudo apt install apache2 libapache2-mod-security2 libapache2-mod-evasive -y
二、启用Apache安全模块
CentOS系统
编辑主配置文件(/etc/httpd/conf/httpd.conf),确保下面两行未被注释,或者直接添加:
LoadModule security2_module modules/mod_security2.so
LoadModule evasive20_module modules/mod_evasive20.so
Ubuntu系统
使用a2enmod命令启用模块,Ubuntu的模块管理方式能自动处理依赖关系,操作更为便捷:
sudo a2enmod security2 # 启用mod_security
sudo a2enmod evasive # 启用mod_evasive
三、配置mod_security(Web应用防火墙)
mod_security的核心配置文件路径:
- CentOS:
/etc/httpd/conf.d/security2.conf - Ubuntu:
/etc/apache2/conf-a vailable/security2.conf(记得执行sudo a2enconf security2来启用配置)
基础配置示例
# 开启规则引擎(On=主动拦截,DetectionOnly=仅检测不拦截)
SecRuleEngine On
# 允许分析请求体(例如表单提交的数据)
SecRequestBodyAccess On
# 允许记录响应体(用于安全审计)
SecResponseBodyAccess On
# 审计日志存放路径(记录被拦截的请求详细信息)
SecAuditLog /var/log/httpd/security_audit.log # CentOS
SecAuditLog /var/log/modsec_audit.log # Ubuntu
# 日志包含的信息字段(如请求头、响应状态码等)
SecAuditLogParts ABIJDEFHZ
# 临时数据存储目录(需确保目录可写)
SecDataDir /var/cache/mod_security # CentOS
SecDataDir /var/lib/modsecurity # Ubuntu
高级配置(可选)
- 集成OWASP CRS规则集,能极大提升WAF的防护能力:
# 下载CRS(以v3.4.0版本为例) wget https://github.com/coreruleset/coreruleset/archive/v3.4.0.tar.gz tar -xzf v3.4.0.tar.gz mv coreruleset-3.4.0/rules /etc/apache2/modsecurity.d/owasp-crs/ # 引入CRS配置 Include /etc/apache2/modsecurity.d/owasp-crs/crs-setup.conf Include /etc/apache2/modsecurity.d/owasp-crs/rules/*.conf - 若出现正常请求被误拦截的情况,可先将
SecRuleEngine设为DetectionOnly,仅记录而不拦截,待调试完成后再恢复拦截模式。
四、配置mod_evasive(防DDoS/暴力破解)
mod_evasive的配置文件路径:
- CentOS:
/etc/httpd/conf.d/evasive.conf - Ubuntu:
/etc/apache2/mods-a vailable/evasive.conf
基础配置示例
# 哈希表大小(用于存储IP请求记录)
DOSHashTableSize 3097
# 单IP单个页面1秒内请求超过2次则触发拦截
DOSPageCount 2
DOSPageInterval 1
# 单IP全站1秒内请求超过50次则触发拦截
DOSSiteCount 50
DOSSiteInterval 1
# 拦截时长(秒)
DOSBlockingPeriod 10
五、加固SSL/TLS通信(可选但强烈推荐)
通过Let’s Encrypt免费获取SSL证书,为HTTP流量增加加密保护:
# 安装Certbot(CentOS/Ubuntu通用方法)
sudo yum install certbot python2-certbot-apache -y # CentOS
sudo apt install certbot python3-certbot-apache -y # Ubuntu
# 获取证书并自动配置Apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
证书到期前会收到自动续期提醒,手动续期也很简单,执行sudo certbot renew即可。
六、配置HTTP安全头(防点击劫持、XSS等)
编辑Apache安全配置文件(Ubuntu为/etc/apache2/conf-a vailable/security.conf,CentOS直接编辑/etc/httpd/conf/httpd.conf),添加以下安全头:
# 防止浏览器进行MIME类型嗅探
Header always set X-Content-Type-Options "nosniff"
# 防止点击劫持(仅允许同源iframe嵌入)
Header always set X-Frame-Options "SAMEORIGIN"
# 启用XSS防护(拦截反射型XSS攻击)
Header always set X-XSS-Protection "1; mode=block"
# 控制Referer信息泄漏范围
Header always set Referrer-Policy "no-referrer-when-downgrade"
然后启用配置并重启服务:
sudo a2enconf security # Ubuntu下启用安全配置文件
sudo systemctl restart apache2
七、配置访问控制
1. 基本目录权限
编辑虚拟主机配置文件(例如/etc/apache2/sites-a vailable/yourdomain.conf),限制目录访问:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted # 生产环境建议缩小允许访问的IP范围
2. 敏感目录认证
对/admin等敏感目录启用Basic认证:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
创建密码文件(首次使用-c参数创建,后续添加用户时不加-c):
sudo htpasswd -c /etc/apache2/.htpasswd admin
3. IP黑白名单
- 白名单:仅允许指定IP访问,例如运维IP:
Require ip 192.168.1.100 192.168.1.101 - 黑名单:禁止恶意IP访问:
Require not ip 192.168.1.200
八、重启Apache并验证配置
所有配置完成后,重启Apache使改动生效:
# CentOS
sudo systemctl restart httpd
# Ubuntu
sudo systemctl restart apache2
验证mod_security是否运行
查看审计日志,正常访问时会生成相应记录:
# CentOS
tail -f /var/log/httpd/security_audit.log
# Ubuntu
tail -f /var/log/modsec_audit.log
验证mod_evasive是否生效
使用ab(Apache Benchmark)模拟高频请求,若被拦截则会返回403状态码:
ab -n 100 -c 10 http://yourdomain.com/ # 在10秒内发送100个请求(并发10)
九、定期维护
- 更新模块与系统:定期执行
sudo yum update(CentOS)或sudo apt update && sudo apt upgrade(Ubuntu),及时修复已知安全漏洞; - 备份配置文件:
# CentOS sudo tar -czvf /backup/apache2_backup.tar.gz /etc/httpd # Ubuntu sudo tar -czvf /backup/apache2_backup.tar.gz /etc/apache2 - 监控日志:借助
fail2ban等工具持续关注security_audit.log和error.log,及时发现并处理异常请求。
严格按照上述流程操作,Apache服务器的安全性将得到显著提升,能够有效防御SQL注入、XSS、DDoS等常见攻击。当然,实际业务场景各有不同,规则需要根据具体情况进行微调——例如适当放宽敏感目录的访问限制,避免误伤正常用户,这才是最合理的策略。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
AWS RDS 数据库配置入门与基础操作指南
本文介绍了AWSRDS的基本概念与核心价值,即提供托管式关系数据库服务,简化运维。详细阐述了创建RDS实例的关键配置步骤,包括引擎选择、实例规格、存储与网络设置。最后,指导读者如何通过多种方式安全连接至数据库实例,并开始进行数据操作,为后续应用开发奠定基础。
PHP MVC中AJAX请求无法调用控制器方法的原因与解决方案
PHPMVC中AJAX请求返回整页HTML的常见原因是控制器方法未正确输出响应或未终止执行,导致框架渲染视图。解决方法是在控制器中设置JSON响应头、输出数据后调用exit()明确终止,同时前端使用小写url和dataType: "json "。
Go语言手动构造rsa.PublicKey:正确初始化大整数模数N完整指南
手动构造RSA公钥时,模数N为*big Int类型,不能直接使用超长十进制字面量,需通过SetString或UnmarshalText方法解析字符串。公钥指数E可直接赋值,推荐65537。生产环境应使用rsa GenerateKey生成密钥对,避免手动构造引发的安全和格式错误。
Go语言实现HTTP定时轮询监控多URL响应时间与状态检测
使用Go语言实现HTTP定时轮询监控,通过按行分割与Tab解析URL列表,避免闭包陷阱和nil指针,每个URL启动独立ticker安全并发请求,并配置超时控制与资源关闭,确保响应时间与状态码准确检测。
Tkinter中Label标签在主循环动态更新的正确方法
在Tkinter中正确动态更新标签的方法:将标签组件的textvariable参数绑定到一个StringVar变量,然后通过调用该变量的 set()方法更新其值,界面会自动刷新。这样避免直接修改text属性或调用update()。此做法实现数据与界面的解耦,代码更简洁,响应更及时,避免手动同步的闪烁,推荐做法。
- 热门数据榜
相关攻略
2026-07-10 06:41
2026-07-10 06:40
2026-07-10 06:39
2026-07-10 06:39
2026-07-10 06:39
2026-07-10 06:39
2026-07-10 06:39
2026-07-10 06:39
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

