分享最新优惠信息
购买主机更加划算

Linux服务器防护之PHP安全加固方法策略

毫无疑问,PHP是最常用的服务器脚本编程语言之一。但对于攻击者来说,可以找到各种方法来操纵攻击PHP,因为它通常与MySQL配对并允许访问用户的私有数据。

当然,不管怎样,这里并不是说PHP在默认情况下容易受到攻击或存在一些严重的问题,但必须要调整PHP安全策略使以便使其更加的牢固,不轻易被黑客操控。本文简单几种方法,可以有效加固PHP安全,从而保障Linux服务器的安全运行。

PHP安全

1、删​​除不必要的PHP模块

默认情况下,会同时安装多个PHP模块,它们对某些任务确实有帮助,但一些不必要的模块可能是没有一点用处,所以要将其删除。要列出可用的PHP模块,请使用以下命令

$ php -m

列出PHP模块

这些模块位于/etc/php.d/目录中,可以使用cd命令轻松地将当前目录更改为/etc/php.d/:

cd /etc/php.d/

之所以更改目录以删除模块的原因是,模块在原始目录中的命名完全不同。现在,通过以下命令列出可用的模块:

$ ls
检查PHP模块
$ sudo rm -r 20-curl.ini

2、禁用远程PHP代码执行

在大多数情况下,远程连接是不安全的。通过禁用对fopen函数的访问,它们只能访问本地文件。要禁用fopen,需要使用以下命令打开PHP配置文件:

$ sudo nano /etc/php.ini

现在,使用CRTL + w并输入allow_url_fopen这将导航到需要禁用这些选项的特定行。

allow_url_fopen=Off
allow_url_include=Off

禁用远程PHP代码执行

完成更改后,CTRL + O并按Enter保存配置文件。

3、禁用PHP信息泄露

如果未禁用,任何人都可以轻松识别Web服务器当前使用的PHP版本,这看起来似乎不是什么大问题,但让攻击者知道确切的版本可能很危险。

$ sudo nano /etc/php.ini
expose_php=Off

禁用PHP信息泄露

4、禁用PHP错误日志

默认情况下,网络服务器的每个错误都对问者可见,包括攻击者。为了确保任何人都看不到任何错误,必须在PHP配置文件中进行更改。

$ sudo nano /etc/php.ini

并将显示错误日志的默认设置更改为“Off”.

display_errors = Off

禁用PHP错误日志

但是,如果自己是开发人员并且需要有错误日志来克服开发问题怎么办?不用担心,有一种方法可以通过在同一个配置文件中稍作更改来获取日志文件。

很简单,只需要启用log_errors并给出error_log的路径,这样的话,日志文件将存储在该路径中。

log_errors=On
error_log=/var/log/httpd/php_scripts_error.log

在PHP中启用错误日志

5、PHP资源控制

本文选择了25秒的执行和输入时间以及30MB的内存限制。当然,你可以根据自己的需要对其进行自定义。

max_execution_time = 25
max_input_time = 25
memory_limit = 30M

PHP资源控制

6、限制PHP文件访问

为了限制PHP文件访问,这里将启用open_basedir这样可以确保PHP文件只能包含我们列出的目录中的文件。

重要这将阻止所有其他目录,并要求我们手动添加重要目录,其中还包括添加临时文件和会话目录。

open_basedir = "/home/sagar/public_html:/var/lib/php/tmp_upload:/var/lib/php/session"

控制PHP文件访问

7、配置PHP文件上传

如果应用程序不需要从用户端上传文件,则始终建议禁用文件上传,这可以防止攻击者上传可能最终损坏整个应用程序的危险脚本。

file_uploads = Off

但是,如果你的应用程序旨在从用户端获取文件怎么办?在这种情况下,必须启用文件上传,但尝试减少最大空间并减少可以从单个请求上传的最大文件数,例如:

file_uploads = On
upload_max_filesize = 1M
max_file_uploads = 1

控制PHP文件上传

在PHP中,默认情况下,临时文件放置在所有系统用户都可以写入的目录中。必须将默认位置切换到更安全的位置,并确保它不在Web根目录中。

由于本文使用了open_basedir,所要这里将使用与我们已经将其列入白名单的位置相同的位置。

upload_tmp_dir = /var/lib/php/tmp_upload

8、禁用危险的PHP函数

PHP默认启用了各种功能,有助于开发目的。但是黑客可以使用许多功能来攻击网络服务器,禁用它们将增加一层安全性。

这里有一组禁用的功能,并确保在更改配置文件之前对它们进行核对。

disable_functions = exec、passthru、shell_exec、system、proc_open、popen、curl_exec、curl_multi_exec、parse_ini_file、show_source

禁用不需要的PHP函数

9、更改SOAP缓存目录

上面已经更改了默认临时目录和会话,这同样适用于SOAP缓存,因为它不应保存到默认目录,确保将其保存到安全的地方。

soap.wsdl_cache_dir = /var/lib/php/soap_cache

更改SOAP缓存目录

10、控制PHP POST大小

通过控制POST大小,可以保护Linux服务器免受黑客试图通过发送大文件来阻塞服务器资源的攻击,这样就能免于不必要的服务器崩溃和缓慢的响应时间。

post_max_size=4M

限制PHP POST大小

11. 保护PHP配置

在删除不必要的文件时,我们经常会删除一些关键文件甚至目录。所以必须调整设置,即使是root用户也不能删除它们。为了制作文件和目录,可以使用带有不同标志的chattr 。

使用给定命令后,将无法再修改或删除特定文件。

$ sudo chattr +i /etc/php.ini

这样在尝试删除不可变文件时,它会显示一条错误消息“Operation not permitted(不允许操作)”:

$ sudo rm -r /etc/php.ini
不允许操作错误
$ sudo chattr +a /etc/php.ini

可能在某些情况下你不再需要旧的配置文件,在这种情况下,必须取消设置属性。

$ sudo chattr -i /etc/php.ini

同样,如果在使文件不可变的过程中使用了+a属性,可以使使用以下命令来反转它:

$ sudo chattr -a /etc/php.ini

12、为HTTP使用SSL证书

如今,很多浏览器(例如Google Chrome、Firefox、Opera等)都建议对Web服务器使用HTTPS。由于HTTPS为不受信任的站点提供了安全和加密的访问通道,可以为用户提供可靠的体验。

所要通过添加HTTPS,可以防止XSS攻击,包括防止黑客使用代码读取传输的数据。

要启用HTTPS,可以在服务器上安装并使用免费的Let’s Encrypt SSL证书。

$ sudo dnf install epel-release 
$ sudo dnf install certbot python3-certbot-apache mod_ssl
$ sudo certbot --apache -d domain.com   [Apache服务器]
$ sudo certbot --nginx -d domain.com    [Nginx服务器]

13、定期更新PHP

由于PHP是一种开源语言,因此经常都会对其进行更新修补。这似乎不是一个重要的步骤,但可以免于重大漏洞。因此,请确保PHP包保持最新,这将使你免受许多可能的漏洞的影响。

# yum update & yum upgrade   [基于RHEL系统] 
# apt update && apt upgrade  [基于Debian系统]

总结

在互联网的安全方面,PHP的文件包含漏洞正在容易增加,而且在各种各样的PHP应用中挖出的文件包含漏洞数不胜数,所要保护PHP安全已经成为众多Linux服务器管理员必须要解决多的问题。

在Linux服务器系统中,增强PHP安全性的方法有很多,而在上面的介绍中,小编也整理了PHP安全加固的常见方法,希望对大家有所帮助。

未经允许不得转载:惠主机 » Linux服务器防护之PHP安全加固方法策略