温馨提示×

Ubuntu Apache安全设置技巧

小樊
33
2025-12-19 00:53:37
栏目: 智能运维

Ubuntu 上 Apache 的安全设置要点

一 基础加固

  • 保持系统与应用为最新:执行 sudo apt update && sudo apt upgrade,及时修补漏洞。
  • 隐藏版本与标识:在 /etc/apache2/apache2.conf 或对应虚拟主机中加入
    ServerTokens Prod
    ServerSignature Off
    减少攻击者获取服务器细节的机会。
  • 禁用目录浏览:在站点或全局 中将 Options -Indexes(或移除 Indexes),防止目录结构泄露。
  • 以最小权限运行:确认进程以 www-data 运行(查看 ps aux | grep apache2),避免以 root 启动。
  • 自定义错误页:使用 ErrorDocument 403/404/500 /custom.html,避免默认错误页泄露路径、框架等信息。

二 传输加密与端口管理

  • 全站 HTTPS:优先使用 Let’s Encrypt 自动签发与部署证书
    sudo apt install certbot python3-certbot-apache
    sudo certbot --apache
    自动创建 HTTP→HTTPS 跳转与证书续期。
  • 自签名证书(测试/内网):
    sudo mkdir -p /etc/apache2/ssl
    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
    在虚拟主机 *<VirtualHost :443> 中启用:
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key
    并启用站点后重启:sudo a2ensite default-ssl.conf && sudo systemctl restart apache2。
  • 防火墙放行:
    sudo ufw allow 80,443/tcp
    sudo ufw enable
  • 端口变更(可选):编辑 /etc/apache2/ports.confListen 80/443 改为自定义端口(如 5000/4443),并同步在防火墙放行对应端口。

三 访问控制与请求限制

  • 基于 IP 的目录限制:在目标 中使用 Require all denied/granted 或旧语法 Order/Allow/Deny(Apache 2.4 推荐前者)。示例:
    <Directory “/var/www/secret”>
    Require local
    # 或仅允许内网段
    # Require ip 192.168.1.0/24
  • 禁止通过 IP 直接访问:为默认站点或对应 VirtualHost 设置 ServerName <服务器IP> 并加入 Require all denied,避免 IP 直连命中默认站点。
  • 基于用户密码的访问控制:
    sudo htpasswd -c /etc/apache2/.htpasswd username
    在 .htaccess 或 中加入:
    AuthType Basic
    AuthName “Restricted Area”
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
  • 限制上传目录执行权限:
    <Directory “/var/www/html/upload”>
    <FilesMatch “.(php|php3|phtml)$”>
    Require all denied

  • 仅允许必要 HTTP 方法(如仅 GET/POST):在 中使用 LimitExcept GET POST 限制危险方法(如 PUT/DELETE)。

四 模块与防护

  • 精简模块:禁用不需要的模块(如 a2dismod status 等),减少攻击面。
  • Web 应用防火墙:启用 mod_security2 进行请求过滤(SQLi、XSS 等),示例:
    sudo apt install libapache2-mod-security2
    sudo a2enmod security2
    sudo systemctl restart apache2
    按业务逐步调优规则集。
  • 抗 DoS/Slowloris:启用 mod_evasivemod_qos。示例(evasive):
    sudo apt 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 20
    DOSPageInterval 1.0
    DOSSiteCount 300
    DOSSiteInterval 1.0
    DOSBlockingPeriod 10.0
    DOSLogDir “/var/log/apache2/evasive”
    按需启用 mod_qos 并调整并发/速率阈值。

五 日志审计与运维

  • 启用与规范日志:确认 ErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined 等配置,日志默认位于 /var/log/apache2/
  • 实时监控与报表:
    tail -f /var/log/apache2/access.log
    sudo apt install logwatch
    配置并按日生成审计报告。
  • 变更与重启:每次修改配置后先执行 sudo apache2ctl configtest,确认无语法错误再执行 sudo systemctl restart apache2
  • 持续维护:关注 Apache 安全公告与系统更新,定期备份站点与证书。

0