- 首页 >
- 问答 >
-
云计算 >
- 怎样通过Apache配置提高服务器安全性
怎样通过Apache配置提高服务器安全性
小樊
43
2025-12-16 18:58:34
Apache 安全加固清单与实践
一 基础与运行环境
- 保持软件为最新稳定版,及时修补漏洞;仅从官方或可信发行渠道获取安装包与补丁。
- 以最小权限运行:为 Apache 创建专用系统账号(如 apache/www-data),禁止以 root 身份处理请求;在 httpd.conf 中设置 User 与 Group。
- 精简功能面:禁用不需要的模块(如 autoindex、status、cgi、userdir、version 等),减少攻击面;使用包管理器或编译参数按需增减。
- 保护关键目录:对 ServerRoot、conf、bin 等目录设置严格权限(仅管理员可写,必要时分组授权),避免被 Web 进程读取或篡改。
- 限制动态内容风险:谨慎开启 SSI 与 CGI;若使用 CGI,优先采用脚本别名隔离,避免非脚本目录被执行。
二 核心配置加固
- 隐藏版本与系统信息:设置 ServerSignature Off、ServerTokens Prod,避免泄露 Apache 版本与 OS 细节。
- 禁止目录浏览与符号链接滥用:在公开目录使用 Options -Indexes;如确需符号链接,优先 SymLinksIfOwnerMatch,避免通过软链越权读取敏感文件。
- 限制 .ht* 覆盖:在对外目录设置 AllowOverride None,仅在确需目录级认证/限流的路径按需开启,降低被 .htaccess 绕过的风险。
- 默认拒绝与最小暴露:对根目录或管理路径使用“默认拒绝”策略(如 Options None; Require all denied ),再对明确路径按需放行。
- 精细化访问控制:对管理后台、备份目录等敏感路径按 IP/CIDR 白名单放行,结合 Require ip 或旧版 Order/Deny/Allow 语法实现最小权限访问。
三 传输加密与端口管理
- 启用 HTTPS/TLS:安装并启用 mod_ssl;将 443/TCP 放行于云安全组与主机防火墙;证书文件妥善存放于如 /etc/ssl/cert。
- 证书与链文件:
- Apache ≥ 2.4.8:使用合并后的 fullchain.pem(服务器证书 + 链)与 私钥 key。
- Apache < 2.4.8:分别配置 SSLCertificateFile(服务器证书)、SSLCertificateKeyFile(私钥)、SSLCertificateChainFile(链)。
- 协议与套件:禁用不安全协议(如 SSLv2/SSLv3/TLS1.0/TLS1.1),启用 TLS1.2/TLS1.3;使用强加密套件并开启 SSLCipherOrder on。
- HTTP 到 HTTPS 跳转:在 *VirtualHost :80 中使用 RewriteEngine 将请求 301 重定向至 https://。
四 抗 DoS 与请求限制
- 调优超时与连接:适当降低 Timeout(如数秒级,视业务而定)、KeepAliveTimeout;必要时可关闭 KeepAlive 以缓解连接耗尽型攻击(会牺牲性能)。
- 限制请求体与会话:使用 LimitRequestBody 限制上传大小;对请求头/请求行/XML 等设置 LimitRequestFields、LimitRequestFieldSize、LimitRequestLine、LimitXMLRequestBody,抑制异常/放大请求。
- 请求读取超时:启用 RequestReadTimeout 限制客户端发送请求头的耗时,降低慢速攻击风险。
- 边界与系统层防护:在 防火墙/边界设备 上限制单源 并发连接数/速率,缓解简单 DoS;分布式拒绝服务(DDoS)需结合上游清洗/CDN 等方案。
五 日志监控与持续运维
- 日志与审计:确保开启 ErrorLog 与 CustomLog(combined),集中采集并长期保存;对 403/404/500 与异常 UA/来源进行告警与回溯。
- 变更与语法:变更前备份配置;使用 httpd -t / apache2ctl -t 做语法校验;变更后滚动重启并观察错误日志。
- 运行时防护:部署 Fail2Ban 对暴力访问进行自动封禁;在支持的系统上启用 SELinux/AppArmor 做进程/文件访问隔离。
- 纵深防御:在反向代理或边界部署 WAF/ModSecurity(如 OWASP Core Rule Set)识别 SQLi/XSS/文件上传 等常见攻击;定期复测与演练。