温馨提示×

怎样利用Apache2提升网站安全性

小樊
38
2025-12-10 20:59:06
栏目: 云计算

Apache2 安全加固清单与实践

一 基础加固

  • 保持系统与软件为最新:执行系统更新并升级 Apache2,及时修补漏洞。
  • 精简攻击面:禁用不需要的模块(如 autoindex、status、userdir、cgi 等),仅启用业务必需模块。
  • 隐藏版本信息:在配置中设置 ServerTokens ProdServerSignature Off,减少信息泄露。
  • 目录与访问:对站点根目录使用最小化权限,建议 Options -Indexes +FollowSymLinks,必要时将 AllowOverride 设为 None 并在需要处单独开启。
  • 运行身份:确保 Apache 以非特权用户/组运行(如 www-data),避免使用 root
  • 访问控制:对管理后台、敏感目录设置基于 IP 或认证的访问控制;示例(仅示例,生产请改为更严格策略):
    <Directory "/var/www/admin">
        AuthType Basic
        AuthName "Restricted"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
    
  • 请求大小限制:对上传等场景设置 LimitRequestBody,防止资源耗尽攻击。

二 传输加密与端口管理

  • 启用 HTTPS:使用 Let’s Encrypt 获取免费证书并自动配置 Apache2
    sudo apt install certbot python3-certbot-apache
    sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
    
  • 防火墙放行:仅开放必要端口,例如 UFW 放行 Apache Full(同时开放 80/443):
    sudo ufw allow 'Apache Full'
    sudo ufw enable
    
  • 端口最小化:关闭不必要的端口与服务,仅暴露 80/443 给公网访问。

三 请求与响应安全

  • 安全响应头:启用并合理配置安全头,示例:
    <IfModule mod_headers.c>
        Header always set X-Content-Type-Options "nosniff"
        Header always set X-Frame-Options "SAMEORIGIN"
        Header always set X-XSS-Protection "1; mode=block"
        Header always set Referrer-Policy "no-referrer-when-downgrade"
        Header always set Content-Security-Policy "default-src 'self'; script-src 'self'"
    </IfModule>
    
  • 目录列表:全局禁用 Indexes,避免泄露目录结构。
  • 协议与加密:启用 HTTP/2、仅允许 TLS 1.2+,禁用弱套件与旧协议;使用强加密套件并开启 HSTS(在具备有效证书且全站 HTTPS 后再启用)。
  • 语言与编码:避免自动内容协商导致的信息泄露,必要时限制 MultiViews

四 防护模块与入侵防御

  • Web 应用防火墙:部署 mod_security2 并加载合适规则集,防御 SQLi、XSS 等常见攻击。
  • 防暴力与 DoS:使用 Fail2Ban 监控 Apache 日志,自动封禁恶意来源;结合 mod_evasive 缓解高频请求与扫描。
  • 运行时防护:启用 mod_security2mod_evasive 的基础规则并调优阈值,避免误报影响业务。

五 运行监控 备份与审计

  • 日志与告警:启用并集中分析访问与错误日志(如 /var/log/apache2/access.log、error.log),对异常状态码、扫描特征设置监控与告警。
  • 文件与配置权限:站点目录建议 chown -R www-data:www-data,文件 644、目录 755;定期审计配置文件与可执行脚本的权限与属主。
  • 备份与演练:定期备份 /etc/apache2 与网站目录,保留离线与异地副本,并进行恢复演练。
  • 持续更新与复查:建立变更流程,定期复核启用的模块、开放端口、安全头与证书有效期,保持最小权限与最新补丁。

0