温馨提示×

Ubuntu上Apache安全如何保障

小樊
44
2025-12-30 16:46:11
栏目: 智能运维

Ubuntu上Apache安全加固清单

一 基础与系统防护

  • 保持系统与软件包为最新,及时修补漏洞:执行sudo apt update && sudo apt upgrade
  • 仅开放必要端口与协议,使用UFW限制访问:例如sudo ufw allow ‘Apache Full’(同时放行80/443),或按需仅放行80/tcp443/tcp
  • 以最小权限运行服务:Ubuntu 默认以www-data运行 Apache,避免以root直接启动;如需自定义运行用户,可在**/etc/apache2/envvars中设置APACHE_RUN_USER/APACHE_RUN_GROUP**并重启服务。
  • 禁用不需要的 Apache 模块以减少攻击面:如a2dismod statusa2dismod autoindexa2dismod dava2dismod dav_fs等(按需评估)。

二 传输加密与证书管理

  • 全站启用HTTPS:优先使用Let’s Encrypt自动签发与续期证书,命令示例:sudo apt install certbot python3-certbot-apache,随后sudo certbot --apache -d yourdomain.com -d www.yourdomain.com;续期建议加入cronsystemd timer自动执行。
  • 如为手动配置证书,准备站点证书中间证书链私钥,启用mod_ssl并在虚拟主机中正确指向证书与私钥路径,确保仅开放443并做HTTP→HTTPS跳转。

三 运行与访问控制

  • 隐藏服务器标识,降低信息泄露风险:在**/etc/apache2/apache2.conf/etc/apache2/conf-available/security.conf中设置ServerTokens ProdServerSignature Off**。
  • 禁止目录浏览与危险方法:在站点或全局**中设置Options -Indexes +FollowSymLinks**;如业务不需要,禁用WebDAV与相关模块;对不需要的PUT/DELETE/TRACE等方法返回403,可用mod_rewrite在对应路径拦截。
  • 上传与可执行防护:对上传目录(如**/var/www/html/upload**)禁止脚本执行,示例:
    <Directory "/var/www/html/upload">
        <FilesMatch "\.(php|php3|phtml)$">
            Require all denied
        </FilesMatch>
    </Directory>
    
  • 文件与目录权限:网站根目录建议www-data:www-data,目录755、文件644,避免全局可写。
  • 访问控制与 WAF/抗DoS:基于来源 IP、时间、路径实施Require规则;必要时部署mod_security2(WAF)与mod_evasive(抗DoS/暴力请求)并调优阈值与日志路径。

四 安全响应头与内容安全

  • 启用并配置关键安全头(需mod_headers):
    <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>
    
    启用方式:sudo a2enmod headers && sudo a2enconf security && sudo systemctl restart apache2
  • 自定义错误页面,避免泄露路径、框架与数据库信息:
    ErrorDocument 403 /custom403.html
    ErrorDocument 404 /custom404.html
    ErrorDocument 500 /custom500.html
    
    并将相应静态页面放置于站点目录中。

五 日志监控与入侵防护

  • 启用并持续监控日志:访问与错误日志默认位于**/var/log/apache2/access.log/var/log/apache2/error.log**,可用tail -f实时查看,结合LogFormatLogLevel进行审计与告警。
  • 部署Fail2Ban防御暴力破解:安装后启用apache-auth等监狱,示例(/etc/fail2ban/jail.local):
    [apache-auth]
    enabled = true
    filter  = apache-auth
    action  = iptables-multiport[name=Apache, port="http,https", protocol=tcp]
    logpath = /var/log/apache2/access.log
    bantime = 3600
    
    执行sudo systemctl enable --now fail2ban
  • 变更前后语法检查与重启:使用sudo apache2ctl configtest验证配置,无误后sudo systemctl restart apache2;定期关注Apache 安全公告与更新。

0