博客 / Linux/ 修复服务器路径泄漏漏洞:LNMP环境下关闭PHP错误显示

修复服务器路径泄漏漏洞:LNMP环境下关闭PHP错误显示

修复服务器路径泄漏漏洞:LNMP环境下关闭PHP错误显示

问题描述:服务器路径泄漏漏洞

在使用360网站安全检测等工具时,可能会收到“[警告]异常页面导致服务器路径泄漏”的漏洞提示。此漏洞的根本原因是Web应用程序(如PHP)在发生错误时,将详细的错误信息(包括服务器文件路径、代码片段等敏感信息)直接输出到了浏览器。攻击者可以利用这些信息了解服务器结构,为进一步攻击做准备。

通用修复方案

核心原则是禁止在线上生产环境向用户显示错误信息。具体操作取决于你的Web应用程序和服务器环境:

  • 启用应用自带的错误处理系统:如果Web应用程序(如WordPress、Laravel等)自带错误处理或调试管理系统,请确保其已正确开启,并将错误记录到日志文件而非显示给用户。
  • 修改服务器配置:如果应用没有自带处理,则需要根据服务器环境进行配置。

以下是一些常见环境的配置方法:

1. PHP应用程序 + Apache服务器:
   - 修改 php.ini 文件:display_errors = Off
   - 修改 httpd.conf 或 apache2.conf 文件:php_flag display_errors off
   - 在PHP脚本中修改:ini_set('display_errors', false);

2. IIS服务器 + ASP.NET环境:
   - 在网站根目录创建或修改 web.config 文件,配置 customErrors 模式。

LNMP环境具体修复步骤

以下步骤适用于使用LNMP一键安装包(Linux, Nginx, MySQL, PHP)搭建的服务器。操作前请通过SSH工具(如Xshell)连接到你的VPS或服务器。

步骤一:修改PHP配置文件 (php.ini)

1. 首先,找到php.ini文件的位置。通常可以通过以下命令查找:

find / -name php.ini 2>/dev/null

在标准的LNMP安装中,路径通常是:/usr/local/php/etc/php.ini

2. 使用文本编辑器(如vi或nano)打开该文件:

vi /usr/local/php/etc/php.ini

3. 在文件中搜索 display_errors 配置项。找到类似下面的一行:

display_errors = On

4. 将其修改为:

display_errors = Off

5. 保存并退出编辑器(在vi中,按Esc键后输入:wq并回车)。

步骤二:修改PHP-FPM配置文件 (php-fpm.conf)

对于使用PHP-FPM进程管理器的环境,还需要检查其配置。

1. 打开PHP-FPM的配置文件:

vi /usr/local/php/etc/php-fpm.conf

2. 在配置文件中查找 php_flag[display_errors]php_admin_value[display_errors] 的配置项。更常见的是在 php.ini 中设置,但有时也会在这里覆盖。

3. 如果找到类似 <value name="display_errors">1</value> 的配置(可能在某个<pool>部分内),请将其值改为 0

<value name="display_errors">0</value>

4. 保存并退出编辑器。

步骤三:重启服务使配置生效

修改配置后,必须重启PHP-FPM和Nginx服务才能使更改生效。

1. 重启PHP-FPM服务:

/etc/init.d/php-fpm restart
# 或
service php-fpm restart
# 或(对于LNMP一键包)
/root/lnmp php-fpm restart

2. 重启Nginx服务:

/etc/init.d/nginx restart
# 或
service nginx restart
# 或(对于LNMP一键包)
/root/lnmp nginx restart

你也可以使用LNMP包提供的命令一次性重启所有服务:

/root/lnmp restart

验证与补充说明

验证方法:修复完成后,可以再次使用360网站安全检测工具进行扫描,该漏洞警告应已消失,安全评分会相应提高。

重要补充

  • 错误日志:关闭display_errors并不意味着忽略错误。错误信息会被记录到error_log指定的文件中(同样在php.ini中配置)。开发者应定期查看日志文件来发现和修复程序问题。
  • 开发与生产环境分离:强烈建议在本地开发环境将display_errors设置为On以便调试,而在线上生产环境务必设置为Off
  • 其他相关设置:为了更彻底地隐藏信息,还可以考虑在php.ini中设置 expose_php = Off,以隐藏PHP版本信息。

通过以上步骤,即可有效修复因PHP错误信息显示而导致的服务器路径泄漏漏洞,提升网站的安全性。

  1. avatar
    rehan51789

    我就是随便看看

发表评论

您的邮箱不会公开。必填项已用 * 标注。