温馨提示×

Apache Ubuntu如何防止攻击

小樊
45
2025-12-21 00:19:41
栏目: 网络安全

Ubuntu 上加固 Apache 的实用清单

一 基础加固

  • 保持系统与软件为最新:执行sudo apt update && sudo apt upgrade,及时修补漏洞。
  • 隐藏服务器标识:在主配置中设置ServerTokens ProdServerSignature Off,减少信息泄露。
  • 禁用目录列表:对公开目录使用Options -Indexes,避免暴露目录结构。
  • 仅启用必要模块:列出模块apache2ctl -M,禁用不需要的模块(如a2dismod status/autoindex/info等)。
  • 运行权限最小化:确保以www-data等非特权用户/组运行,避免使用root
  • 文件与目录权限:对**/var/www及子目录设置合适的拥有者与权限(如750/640**),禁止上传目录执行脚本。
  • 备份与变更留痕:定期备份配置与数据,变更前先备份并验证。

二 网络与端口防护

  • 边界防火墙:使用UFW仅放行必要流量,例如sudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw allow ssh,生产环境不建议暴露管理端口到公网。
  • 端口与监听:如需变更监听端口,编辑**/etc/apache2/ports.conf中的Listen 80/443**,并同步更新虚拟主机与防火墙放行规则。
  • 加密传输:启用mod_ssl并部署有效证书;推荐使用Let’s Encrypt自动签发与续期:sudo apt install certbot python3-certbot-apache && sudo certbot --apache
  • 访问控制:对管理接口、备份目录、.git 等敏感路径,基于来源 IP 或认证进行限制(如Require ip 1.2.3.4AuthType Basic)。

三 抗 DoS 与 Web 应用防火墙

  • 连接与请求限制:在**/etc/apache2/apache2.conf**或对应虚拟主机中调优关键参数(示例值需结合业务压测微调):
    • Timeout 30(降低等待超时)
    • KeepAliveTimeout 5(缩短长连接空闲时间)
    • MaxRequestWorkers 150(控制并发,避免资源被耗尽)
    • LimitRequestFields 50LimitRequestFieldSize 8190(抑制异常请求头)
    • 对上传目录设置LimitRequestBody 524288(限制为512KB
  • 防 DoS/暴力:安装并启用libapache2-mod-evasive,创建日志目录并配置阈值(示例):
    • 安装:sudo apt-get install libapache2-mod-evasive
    • 目录:sudo mkdir -p /var/log/apache2/evasive && sudo chown www-data:root /var/log/apache2/evasive
    • 配置(/etc/apache2/mods-available/evasive.conf 或相应加载文件):
      • DOSHashTableSize 2048
      • DOSPageCount 20DOSPageInterval 1.0
      • DOSSiteCount 300DOSSiteInterval 1.0
      • DOSBlockingPeriod 10.0
      • DOSLogDir “/var/log/apache2/evasive”
  • WAF 能力:安装libapache2-mod-security2并启用规则集(如 OWASP Core Rule Set),防御SQL 注入、XSS、RFI等常见攻击。

四 运行监控与审计

  • 日志与告警:确保开启access.log/error.log,使用tail -f /var/log/apache2/error.log实时排查;部署logwatch做日报/周报分析。
  • 基线核查与语法:变更前执行apache2ctl configtest校验配置;定期审计启用的模块、虚拟主机与访问控制策略。
  • 完整性校验:对关键文件(如**/etc/apache2**)设置AIDE或同类工具进行变更监控。

五 一键加固脚本示例

#!/usr/bin/env bash
set -e

# 0) 更新系统
apt update && apt -y upgrade

# 1) 基础加固:隐藏版本、禁用目录列表
sed -i 's/^ServerTokens .*/ServerTokens Prod/' /etc/apache2/conf-available/security.conf
sed -i 's/^ServerSignature .*/ServerSignature Off/' /etc/apache2/conf-available/security.conf
find /etc/apache2 -type f -name "*.conf" -exec sed -i '/<Directory /var/www/,\|</Directory>|{s/Options \(.*\)Indexes\(.*\)/Options \1\2/g}' {} +

# 2) 禁用不必要模块(按需保留 CGI/SSL 等)
for m in status autoindex info; do
  a2dismod "$m" 2>/dev/null || true
done

# 3) 启用 SSL 与自动证书(确保域名解析已指向本机)
a2enmod ssl
apt install -y certbot python3-certbot-apache
certbot --apache -n --agree-tos --redirect --email admin@example.com -d example.com,www.example.com || true

# 4) 抗 DoS:安装并配置 mod-evasive
apt install -y libapache2-mod-evasive
mkdir -p /var/log/apache2/evasive
chown www-data:root /var/log/apache2/evasive
cat >/etc/apache2/mods-available/evasive.conf <<'EOF'
<IfModule mod_evasive20.c>
  DOSHashTableSize 2048
  DOSPageCount        20
  DOSPageInterval     1.0
  DOSSiteCount        300
  DOSSiteInterval     1.0
  DOSBlockingPeriod  10.0
  DOSLogDir "/var/log/apache2/evasive"
</IfModule>
EOF
a2enmod evasive

# 5) 可选:WAF(mod-security2)
# apt install -y libapache2-mod-security2
# a2enmod security2
# 后续按所选规则集进行配置与调优

# 6) 检查并重载
apache2ctl configtest && systemctl reload apache2

echo "加固完成。请重启后复核:apache2ctl -M、ufw status、日志与证书状态。"

提示:脚本为通用示例,生产环境请先在测试环境验证,按业务需求调整并发、超时与 WAF 规则,并保留回滚方案。

0