温馨提示×

Linux Apache2如何防止攻击

小樊
45
2025-12-28 14:31:08
栏目: 网络安全

Linux Apache2 防护实践清单

一 基础加固

  • 保持系统与软件为最新版本,及时修补漏洞;以最小权限运行服务(如 www-data/apache),避免使用 root 启动。
  • 精简模块,禁用未使用的组件(如 autoindex、status、cgi、userdir)以减少攻击面。
  • 隐藏服务器信息:设置 ServerTokens ProdServerSignature Off,降低信息泄露与针对性攻击风险。
  • 目录与权限:全局或指定目录禁用列目录(Options -Indexes),限制 .ht* 文件覆盖(AllowOverride None),网站根目录建议目录 755、文件 644
  • 日志与监控:启用并定期检查访问与错误日志,便于审计与告警。
  • 变更生效与验证:每次修改后用 apache2ctl configtest 检查语法,执行 systemctl reload apache2restart;按需验证 HTTP/HTTPS 访问与响应头。

二 网络与访问控制

  • 防火墙仅放行必要端口(80/443):
    • Ubuntu/Debian(UFW):sudo ufw allow 'Apache Full' && sudo ufw enable
    • CentOS/RHEL(firewalld):sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 访问控制示例:对管理路径或敏感目录限制来源 IP(示例为 203.0.113.0/24198.51.100.10)。
  • 目录列表:全局或指定目录禁用列目录(Options -Indexes)。
  • 可选端口变更:如需变更监听端口,修改 ports.confListen 80/443,并同步防火墙放行新端口。

三 加密与认证

  • 启用 HTTPS/TLS:优先使用 Let’s Encrypt 自动签发并配置证书:
    • Ubuntu/Debian:sudo apt install certbot python3-certbot-apache
    • CentOS/RHEL:sudo yum install certbot python3-certbot-apache
    • 获取证书:sudo certbot --apache -d yourdomain.com -d www.yourdomain.com(按提示选择“Redirect to HTTPS”以强制跳转)。
  • 手动配置 SSL(自签名,测试用):启用 mod_ssl,生成证书后在 *VirtualHost :443 中配置 SSLEngine onSSLCertificateFileSSLCertificateKeyFile
  • 基础认证示例(保护 /var/www/html/secret):
    • 创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd username
    • 配置:
      <Directory "/var/www/html/secret">
          AuthType Basic
          AuthName "Restricted"
          AuthUserFile /etc/apache2/.htpasswd
          Require valid-user
      </Directory>
      

四 安全头与请求限制

  • 安全响应头(建议启用):
    <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 Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
        Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none';"
    </IfModule>
    
  • 请求限制与抗 DoS:安装并配置 mod_evasive 缓解暴力与 DoS(示例参数可按业务调优):
    • 安装:sudo apt install libapache2-mod-evasive
    • 目录与权限:sudo mkdir -p /var/log/apache2/evasive && sudo chown www-data:root /var/log/apache2/evasive
    • 示例参数:
      DOSHashTableSize 2048
      DOSPageCount 20
      DOSPageInterval 1.0
      DOSSiteCount 300
      DOSSiteInterval 1.0
      DOSBlockingPeriod 10.0
      DOSLogDir "/var/log/apache2/evasive"
      
  • 可选:安装 mod_qos 做连接速率与并发控制(按业务调优)。

五 运行时防护与审计

  • Web 应用防火墙:部署 mod_security 并加载规则集,增强对 SQLi、XSS 等的拦截能力:
    • 安装:sudo apt install libapache2-mod-security2
    • 启用:sudo a2enmod security2
    • 配置:将 SecRuleEngine 设为 On 并配置审计日志路径(如 /var/log/httpd/modsec_audit.log)。
  • 入侵防护:使用 Fail2Ban 监控日志并自动封禁恶意来源(SSH/HTTP 等):sudo apt install fail2ban && sudo systemctl enable --now fail2ban
  • SELinux/AppArmor:在 RHEL/CentOS 启用并调优 SELinux 布尔与上下文;在 Ubuntu/Debian 可使用 AppArmor 对 Apache 进程进行最小权限约束。
  • 日志与备份:
    • 日志级别与路径:LogLevel warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
    • 定期备份:sudo tar -czvf /backup/apache2-backup_$(date +%F).tar.gz /etc/apache2 /var/www/html

0