在CentOS系统下,对PHP-FPM进行安全设置可以提高服务器的安全性。以下是一些建议和步骤:
使用最新版本的PHP和PHP-FPM: 确保你使用的是最新版本的PHP和PHP-FPM,因为新版本通常包含安全修复和性能改进。
配置PHP-FPM用户和组:
编辑/etc/php-fpm.d/www.conf文件,设置user和group为你选择的非特权用户和组,以减少潜在的安全风险。
user = apache
group = apache
限制PHP-FPM监听地址:
编辑/etc/php-fpm.d/www.conf文件,将listen指令设置为Unix socket或特定的IP地址,而不是默认的127.0.0.1。
listen = /run/php-fpm/www.sock
或者
listen = 127.0.0.1:9000
配置PHP-FPM进程管理:
在/etc/php-fpm.d/www.conf文件中,设置适当的pm(进程管理)模式和参数。例如,使用dynamic模式并设置最大进程数。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
限制PHP执行时间:
在/etc/php.ini文件中,设置max_execution_time来限制脚本的最大执行时间。
max_execution_time = 30
禁用危险函数:
在/etc/php.ini文件中,禁用一些危险的PHP函数,如exec、system、shell_exec等。
disable_functions = exec,passthru,shell_exec,system
配置文件上传限制:
在/etc/php.ini文件中,设置文件上传的大小限制和允许的文件类型。
upload_max_filesize = 2M
post_max_size = 8M
file_uploads = On
配置错误日志: 确保PHP错误日志记录到安全的位置,并且只有授权用户可以访问。
error_log = /var/log/php-fpm/error.log
log_level = notice
使用防火墙限制访问:
使用firewalld或iptables来限制对PHP-FPM端口的访问。
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp
sudo firewall-cmd --reload
定期更新和维护: 定期更新PHP和PHP-FPM到最新版本,并进行安全审计和漏洞扫描。
通过以上步骤,你可以显著提高CentOS系统下PHP-FPM的安全性。记得在生产环境中应用这些更改之前,先在测试环境中进行验证。