游乐游手机版
首页/编程语言/文章详情

Apache安全模块配置方法详解

时间:2026-06-10 06:50
配置Apache安全:安装mod_security与mod_evasive,启用后调整规则引擎、集成OWASPCRS规则集,设置防DDoS参数,加固SSL TLS,添加HTTP安全头与访问控制,重启服务,并通过监控日志与定期维护确保护航效果。

Apache安全模块配置详解:CentOS与Ubuntu实战指南

配置Apache安全模块的核心思路并不复杂:安装模块→启用模块→调整规则→加固周边。虽然流程清晰,但每个环节都需要精确操作。下面直接提供可执行的步骤,按顺序执行即可。

怎样配置Apache安全模块

一、基础准备:更新系统与安装必要模块

CentOS系统

  1. 更新系统及软件包:
    sudo yum update -y
  2. 安装核心安全模块:
    • mod_security:这是一款Web应用防火墙(WAF),可有效拦截SQL注入、跨站脚本(XSS)等常见网络攻击;
    • mod_evasive:专防DDoS和暴力破解的模块,能够限制高频异常请求。
    sudo yum install mod_security mod_evasive -y

Ubuntu系统

  1. 更新系统及软件包:
    sudo apt update && sudo apt upgrade -y
  2. 安装核心安全模块:
    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 https://yourdomain.com/  # 在10秒内发送100个请求(并发10)

九、定期维护

  1. 更新模块与系统:定期执行sudo yum update(CentOS)或sudo apt update && sudo apt upgrade(Ubuntu),及时修复已知安全漏洞;
  2. 备份配置文件:
    # CentOS
    sudo tar -czvf /backup/apache2_backup.tar.gz /etc/httpd
    # Ubuntu
    sudo tar -czvf /backup/apache2_backup.tar.gz /etc/apache2
  3. 监控日志:借助fail2ban等工具持续关注security_audit.logerror.log,及时发现并处理异常请求。

严格按照上述流程操作,Apache服务器的安全性将得到显著提升,能够有效防御SQL注入、XSS、DDoS等常见攻击。当然,实际业务场景各有不同,规则需要根据具体情况进行微调——例如适当放宽敏感目录的访问限制,避免误伤正常用户,这才是最合理的策略。

来源:https://www.yisu.com/ask/69450712.html
上一篇Apache默认端口修改教程详解 下一篇CentOS下C++程序的调试配置方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
AWS RDS 数据库配置入门与基础操作指南
编程语言 · 2026-07-10

AWS RDS 数据库配置入门与基础操作指南

本文介绍了AWSRDS的基本概念与核心价值,即提供托管式关系数据库服务,简化运维。详细阐述了创建RDS实例的关键配置步骤,包括引擎选择、实例规格、存储与网络设置。最后,指导读者如何通过多种方式安全连接至数据库实例,并开始进行数据操作,为后续应用开发奠定基础。

PHP MVC中AJAX请求无法调用控制器方法的原因与解决方案
编程语言 · 2026-07-10

PHP MVC中AJAX请求无法调用控制器方法的原因与解决方案

PHPMVC中AJAX请求返回整页HTML的常见原因是控制器方法未正确输出响应或未终止执行,导致框架渲染视图。解决方法是在控制器中设置JSON响应头、输出数据后调用exit()明确终止,同时前端使用小写url和dataType: "json "。

Go语言手动构造rsa.PublicKey:正确初始化大整数模数N完整指南
编程语言 · 2026-07-10

Go语言手动构造rsa.PublicKey:正确初始化大整数模数N完整指南

手动构造RSA公钥时,模数N为*big Int类型,不能直接使用超长十进制字面量,需通过SetString或UnmarshalText方法解析字符串。公钥指数E可直接赋值,推荐65537。生产环境应使用rsa GenerateKey生成密钥对,避免手动构造引发的安全和格式错误。

Go语言实现HTTP定时轮询监控多URL响应时间与状态检测
编程语言 · 2026-07-10

Go语言实现HTTP定时轮询监控多URL响应时间与状态检测

使用Go语言实现HTTP定时轮询监控,通过按行分割与Tab解析URL列表,避免闭包陷阱和nil指针,每个URL启动独立ticker安全并发请求,并配置超时控制与资源关闭,确保响应时间与状态码准确检测。

Tkinter中Label标签在主循环动态更新的正确方法
编程语言 · 2026-07-10

Tkinter中Label标签在主循环动态更新的正确方法

在Tkinter中正确动态更新标签的方法:将标签组件的textvariable参数绑定到一个StringVar变量,然后通过调用该变量的 set()方法更新其值,界面会自动刷新。这样避免直接修改text属性或调用update()。此做法实现数据与界面的解耦,代码更简洁,响应更及时,避免手动同步的闪烁,推荐做法。