如何配置Apache安全策略
导读:如何配置Apache安全策略 1. 隐藏服务器敏感信息 通过配置隐藏Apache版本、操作系统等细节,降低攻击者针对性探测风险。在Apache主配置文件(如httpd.conf或apache2.conf)中添加: ServerTokens...
如何配置Apache安全策略
1. 隐藏服务器敏感信息
通过配置隐藏Apache版本、操作系统等细节,降低攻击者针对性探测风险。在Apache主配置文件(如httpd.conf
或apache2.conf
)中添加:
ServerTokens Prod
(仅显示“Apache”版本标识)
ServerSignature Off
(关闭错误页面、目录列表中的服务器签名)
可选:通过Header
指令进一步隐藏服务器信息:
Header always unset "Server"
Header always set Server "Unknown"
2. 禁止目录遍历与敏感文件访问
- 禁用目录自动列表:在
< Directory>
指令中移除Indexes
选项,防止用户直接查看目录结构:
< Directory "/var/www/html"> Options -Indexes< /Directory>
- 限制敏感文件访问:通过
FilesMatch
指令拦截对.htaccess
、.htpasswd
、.ini
、.log
等敏感文件的访问:
< FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$"> Require all denied< /FilesMatch>
- 防路径穿越:严格限制目录路径,避免攻击者通过
../
等符号穿越至系统目录:
< DirectoryMatch "/\.|%"> Require all denied< /DirectoryMatch>
3. 配置强大的安全HTTP头
通过mod_headers
模块添加安全头,缓解XSS、点击劫持、MIME嗅探等攻击:
- 防XSS:
Header always set X-XSS-Protection "1; mode=block"
(启用浏览器XSS过滤器并阻止页面加载) - 防点击劫持:
Header always set X-Frame-Options "SAMEORIGIN"
(仅允许同源页面嵌入) - 防MIME嗅探:
Header always set X-Content-Type-Options "nosniff"
(禁止浏览器自动推断MIME类型) - 强制HTTPS:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
(要求浏览器仅通过HTTPS访问,有效期1年) - 内容安全策略(CSP):
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'"
(限制资源加载来源,逐步收紧规则)
4. 限制请求大小与频率
- 限制请求体大小:通过
LimitRequestBody
指令防止大文件上传导致的DoS攻击,默认值通常为0(无限制),建议设置为合理范围(如10MB):
LimitRequestBody 10485760
- 限制请求头与行大小:通过
LimitRequestFields
、LimitRequestFieldSize
、LimitRequestLine
指令防止畸形请求:
LimitRequestFields 40
(最大请求数量)
LimitRequestFieldSize 4094
(单个请求头最大大小)
LimitRequestLine 4094
(请求行最大大小) - 超时设置:缩短会话超时时间,减少会话劫持风险:
Timeout 60
(连接超时60秒)
KeepAliveTimeout 15
(Keep-Alive连接超时15秒)
5. 启用安全模块强化防护
- mod_security(WAF):安装并配置开源Web应用防火墙,拦截SQL注入、XSS、命令注入等攻击。需加载模块并设置规则:
加载模块:LoadModule security2_module modules/mod_security2.so
基础规则:SecRuleEngine On
(开启规则引擎)
日志配置:SecAuditLog /var/log/httpd/modsec_audit.log
(记录审计日志) - mod_evasive(防CC攻击):安装并配置防暴力请求模块,限制同一IP的频繁访问:
加载模块:LoadModule evasive20_module modules/mod_evasive20.so
规则配置:DOSHashTableSize 3097
(哈希表大小)
DOSPageCount 2
(单IP单页面1秒内超过2次请求则触发)
DOSSiteCount 50
(单IP全站1秒内超过50次请求则触发)
DOSBlockingPeriod 10
(触发后封禁10秒)
6. 配置SSL/TLS加密通信
- 获取并配置证书:使用Let’s Encrypt免费获取SSL证书,通过Certbot工具自动配置:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
- 强化SSL协议与加密套件:在SSL虚拟主机配置中禁用弱协议(如SSLv2、SSLv3),使用强加密套件:
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on
(优先使用服务器端加密套件)
SSLCompression off
(禁用压缩,防止CRIME攻击)
SSLSessionTickets off
(禁用会话票证,防止重放攻击) - 强制HTTP跳转HTTPS:在80端口虚拟主机中添加重定向规则:
< VirtualHost *:80> ServerName yourdomain.com Redirect permanent / https://yourdomain.com/< /VirtualHost>
7. 控制访问权限
- IP访问控制:通过
Require
指令限制特定IP或网段的访问,适用于后台管理目录:
< Directory "/var/www/admin"> Require ip 192.168.1.0/24< /Directory>
- 用户认证:对敏感区域启用HTTP Basic Auth或Digest Auth,设置强密码:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
(需提前通过htpasswd
命令创建用户)
8. 最小权限与系统加固
- 以非root用户运行:修改Apache运行用户(如
www-data
),避免以root权限启动服务:
在httpd.conf
中设置:User www-data
Group www-data
- 设置正确文件权限:确保网站目录权限合理,上传目录禁止执行权限:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chmod 755 /var/www/uploads
(上传目录) - 禁用冗余模块:通过
a2dismod
(Debian/Ubuntu)或修改配置文件(CentOS)禁用不必要模块(如autoindex
、cgi
、userdir
),减少攻击面:
sudo a2dismod autoindex cgi userdir
sudo systemctl restart apache2
9. 日志监控与应急响应
- 配置详细日志:启用访问日志和错误日志,记录详细请求信息(如IP、请求方法、响应状态):
LogFormat "%h %l %u %t \"%r\" %> s %O \"%{ Referer} i\" \"%{ User-Agent} i\" %D" combined
CustomLog "/var/log/apache2/access.log" combined
ErrorLog "/var/log/apache2/error.log"
日志级别设置为warn
或更高,捕获异常请求:
LogLevel warn
- 自动化监控与告警:使用工具(如Fail2Ban)分析日志,自动封禁频繁发起恶意请求的IP;定期检查日志中的异常模式(如大量404错误、POST请求包含SQL语句)
10. 定期更新与维护
- 升级Apache及组件:定期检查Apache官方安全公告,升级至最新稳定版本,修复已知漏洞:
Debian/Ubuntu:sudo apt update & & sudo apt upgrade apache2
CentOS:sudo yum update httpd
- 备份配置文件:定期备份Apache配置文件(如
httpd.conf
、ssl.conf
、虚拟主机配置),防止误操作或攻击导致配置丢失:
sudo cp -r /etc/apache2 /etc/apache2.bak
sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Apache安全策略
本文地址: https://pptw.com/jishu/723443.html