温馨提示×

如何通过Apache配置提升Ubuntu服务器安全性

小樊
35
2026-01-05 12:54:12
栏目: 云计算

Ubuntu 上通过 Apache 配置提升服务器安全性

一 基础加固

  • 保持系统与软件为最新:执行 sudo apt update && sudo apt upgrade,及时获取安全补丁。
  • 隐藏服务器标识:在 /etc/apache2/apache2.conf 中设置
    • ServerTokens Prod(仅显示 Apache,不显示版本与 OS)
    • ServerSignature Off(关闭错误页中的服务器签名)
  • 以最小权限运行:确认 /etc/apache2/envvars 或主配置中的 User/Group 为低权限账户(Ubuntu 常见为 www-data),避免使用 root
  • 目录访问与索引:在站点或全局 中禁用自动索引(如 Options -Indexes),仅开启必要功能(如 FollowSymLinks),减少信息泄露面。
  • 禁用不必要的模块:列出已启用模块 ls /etc/apache2/mods-enabled,对不需要的模块执行 sudo a2dismod module_name(如 autoindex、status、userdir 等)。

二 加密与传输安全

  • 启用 HTTPS 并强制跳转:
    • 安装证书工具:sudo apt install certbot python3-certbot-apache
    • 获取并自动配置证书:sudo certbot --apache -d example.com
    • 如无自动跳转,可在虚拟主机 80 段添加重写规则将 HTTP→HTTPS
  • 强化 SSL/TLS 配置(在 SSL 虚拟主机或全局 SSL 配置段中):
    • 禁用弱协议:SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    • 使用强套件:SSLCipherSuite HIGH:!aNULL:!MD5
  • 防火墙放行:使用 UFW 放行 Web 流量,推荐 sudo ufw allow ‘Apache Full’(同时开放 80/443)。

三 访问控制与攻击防护

  • 访问控制与敏感目录:
    • 限制上传与可执行脚本目录(示例):
      <Directory "/var/www/html/upload">
        <FilesMatch "\.(php|php3)$">
          Require all denied
        </FilesMatch>
      </Directory>
      
    • 自定义错误页面,避免泄露路径与堆栈信息(如 ErrorDocument 403 /custom403.html)。
  • 部署 WAF 与抗 DoS:
    • 安装并启用 ModSecuritysudo apt install libapache2-mod-security2 && sudo a2enmod security2
    • 基本配置示例:
      SecRuleEngine On
      SecRequestBodyAccess On
      SecResponseBodyAccess On
      SecAuditLog /var/log/modsec_audit.log
      SecAuditLogParts ABIJDEFHZ
      SecAuditLogRelevantStatus "^(?:5|4(?!04))"
      SecDataDir /var/lib/modsecurity
      SecTmpDir /tmp
      
    • 可进一步集成 OWASP Core Rule Set 提升 Web 攻击防护能力。
  • 抗慢速攻击(可选):安装 libapache2-mod-evasive 并启用 a2enmod evasive,按业务调整阈值与日志路径。

四 运行监控与维护

  • 启用并审计日志:确保存在并轮转 /var/log/apache2/access.logerror.log;可使用 tail -f /var/log/apache2/error.log 实时排查;必要时采用 vhost_combined 格式增强可读性。
  • 定期自检与验证:
    • 检查模块状态:apache2ctl -M
    • 语法检查:apache2ctl configtest
    • 在线检测 SSL 配置强度(如 SSL Labs 测试)。

五 一键最小加固示例

  • 执行以下命令完成常见加固(按需调整域名与目录):
# 1) 系统与软件更新
sudo apt update && sudo apt full-upgrade -y && sudo reboot

# 2) 隐藏版本与签名
echo -e "ServerTokens Prod\nServerSignature Off" | sudo tee /etc/apache2/conf-available/security-hardening.conf
sudo a2enconf security-hardening

# 3) 禁用危险/无用模块(示例)
sudo a2dismod autoindex status userdir

# 4) 强制 HTTPS(Certbot)
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d example.com --redirect --hsts --uir

# 5) 强化 SSL/TLS(在 443 虚拟主机中确保存在)
# SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
# SSLCipherSuite HIGH:!aNULL:!MD5

# 6) 部署 ModSecurity(基础启用)
sudo apt install -y libapache2-mod-security2
sudo a2enmod security2
echo -e "SecRuleEngine On\nSecRequestBodyAccess On\nSecAuditLog /var/log/modsec_audit.log" | sudo tee /etc/modsecurity/modsecurity.conf.d/10-base.conf

# 7) 防火墙放行
sudo ufw allow 'Apache Full'
sudo ufw enable

# 8) 重启并自检
sudo systemctl restart apache2
sudo apache2ctl configtest
sudo tail -f /var/log/apache2/error.log
  • 风险提示:修改前备份配置(如 /etc/apache2//etc/modsecurity/),变更后逐项验证站点可用性与安全策略生效。

0