香港服务器Web服务遭目录遍历攻击:Nginx与PHP配置双重强化防护策略

香港服务器Web服务遭目录遍历攻击:Nginx与PHP配置双重强化防护策略

最近一家部署在香港的数据服务提供商报告,其一台公网暴露的Web服务器遭遇了持续的目录遍历攻击。攻击者通过构造恶意URL,试图访问服务器中未授权的敏感文件,导致Web服务异常波动,部分用户反馈页面加载缓慢甚至访问失败。

这台服务器运行的是基于Nginx + PHP-FPM的LNMP架构,承载了多个业务系统。攻击行为持续约48小时,未造成明显数据泄露,但存在严重安全隐患。

问题初现与初步排查

1. 异常日志分析

管理员首先通过分析/var/log/nginx/access.log和/var/log/nginx/error.log发现了大量可疑请求,具有如下特征:

GET /../../../../../../../etc/passwd HTTP/1.1
GET /%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1
GET /index.php?page=../../../../wp-config.php HTTP/1.1

这些请求典型特征为目录遍历攻击,攻击者试图跳出Web根目录读取系统敏感文件。

2. 系统资源监控

通过top和htop命令监控,发现PHP-FPM进程持续占用CPU资源高达80%以上,内存飙升至3GB以上。Web服务响应明显变慢。

3. Web根目录权限检查

检查Web目录权限配置,发现部分目录权限设置为777,存在任意用户可写的高风险行为。

漏洞根因分析

1. Nginx配置缺陷

香港服务器的nginx.conf未对非法路径访问进行有效过滤,相关location配置如下:

location / {
    root /var/www/html;
    index index.php index.html index.htm;
    try_files $uri $uri/ /index.php?$args;
}

这个配置未对路径中的“../”等非法字符做过滤或拒绝,导致目录遍历成为可能。

2. PHP参数配置不严

php.ini中的相关参数未做安全加固:

allow_url_include = On
open_basedir = (未设置)

allow_url_include=On 允许PHP文件包含远程资源,带来远程代码执行风险;

未设置open_basedir限制PHP脚本访问目录范围,使得攻击者可以尝试访问系统任意路径。

防护策略与实操强化

1. Nginx配置加固

a) 禁止目录遍历路径

通过正则过滤非法路径访问请求:

location ~ (\.\.\/) {
    deny all;
    return 403;
}

b) 拒绝尝试访问敏感文件

加入敏感文件访问拦截:

location ~* /(\.ht|\.git|config\.php|\.env) {
    deny all;
}

c) 加强访问控制

对PHP文件的处理进行精细化控制,限制动态文件解析目录:

location ~ \.php$ {
    root /var/www/html;
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include snippets/fastcgi-php.conf;
}

2. PHP配置强化

修改php.ini或对应站点的自定义ini文件,推荐如下设置:

expose_php = Off
display_errors = Off
allow_url_include = Off
allow_url_fopen = Off
open_basedir = /var/www/html/:/tmp/
disable_functions = exec,passthru,shell_exec,system,proc_open,popen

通过open_basedir限制PHP的访问范围仅限/var/www/html与/tmp,杜绝越权访问系统目录的可能。

3. 文件权限重构

对Web目录的权限重新调整:

chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

移除多余写权限,确保PHP无法修改或执行非必要文件。

4. Web应用防火墙部署

引入ModSecurity或使用OpenResty结合Lua脚本实现目录遍历行为的实时拦截。例如配置检测../或URL编码后的遍历尝试:

if ($request_uri ~* "(\.\./|\%2e\%2e)") {
    return 403;
}

5. 日志审计与告警

通过Fail2ban或自定义脚本监控Nginx日志中的目录遍历行为,实时阻断可疑IP:

fail2ban-client set nginx-http-auth banip 192.168.1.100

或使用以下命令配合cron进行监控:

grep -E "\.\./|\%2e\%2e" /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c

整改效果验证

  • 实施以上防护措施后,服务器负载恢复正常;
  • 攻击者请求命中403响应码,尝试进一步访问被拦截;
  • 安全审计工具未再发现敏感文件外泄风险。

通过WAF拦截日志对比:

香港服务器Web服务遭目录遍历攻击:Nginx与PHP配置双重强化防护策略

攻击趋势明显下降,系统运行趋于稳定。

此次事件暴露出Web服务在Nginx与PHP配置层面存在典型的安全松懈问题。目录遍历虽属传统攻击方式,但在配置不当的场景下依然极具破坏性。

建议企业:

  • 部署前进行安全基线加固;
  • 定期安全审计和渗透测试;
  • 对Nginx与PHP的每一项配置进行逐条审核;
  • 实现日志自动化分析与告警机制;
  • 引入轻量级WAF提升实时防御能力。

只有将“预防、检测、响应”形成闭环,才能从根本上提高Web服务在公网环境下的安全性。

未经允许不得转载:A5数据 » 香港服务器Web服务遭目录遍历攻击:Nginx与PHP配置双重强化防护策略

相关文章

contact