温馨提示×

怎样通过Apache配置提高服务器安全性

小樊
43
2025-12-16 18:58:34
栏目: 云计算

Apache 安全加固清单与实践

一 基础与运行环境

  • 保持软件为最新稳定版,及时修补漏洞;仅从官方或可信发行渠道获取安装包与补丁。
  • 以最小权限运行:为 Apache 创建专用系统账号(如 apache/www-data),禁止以 root 身份处理请求;在 httpd.conf 中设置 UserGroup
  • 精简功能面:禁用不需要的模块(如 autoindex、status、cgi、userdir、version 等),减少攻击面;使用包管理器或编译参数按需增减。
  • 保护关键目录:对 ServerRoot、conf、bin 等目录设置严格权限(仅管理员可写,必要时分组授权),避免被 Web 进程读取或篡改。
  • 限制动态内容风险:谨慎开启 SSICGI;若使用 CGI,优先采用脚本别名隔离,避免非脚本目录被执行。

二 核心配置加固

  • 隐藏版本与系统信息:设置 ServerSignature OffServerTokens 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 等方案。

五 日志监控与持续运维

  • 日志与审计:确保开启 ErrorLogCustomLog(combined),集中采集并长期保存;对 403/404/500 与异常 UA/来源进行告警与回溯。
  • 变更与语法:变更前备份配置;使用 httpd -t / apache2ctl -t 做语法校验;变更后滚动重启并观察错误日志。
  • 运行时防护:部署 Fail2Ban 对暴力访问进行自动封禁;在支持的系统上启用 SELinux/AppArmor 做进程/文件访问隔离。
  • 纵深防御:在反向代理或边界部署 WAF/ModSecurity(如 OWASP Core Rule Set)识别 SQLi/XSS/文件上传 等常见攻击;定期复测与演练。

0