ubuntu

Ubuntu PHP-FPM的安全设置指南

小樊
36
2025-06-25 10:43:52
栏目: 编程语言

在Ubuntu上配置PHP-FPM以实现安全设置,可以遵循以下步骤:

更新系统和软件包

确保系统和所有软件包都是最新的,以修复已知的安全漏洞。

sudo apt update
sudo apt upgrade -y

安装PHP-FPM

如果你还没有安装PHP-FPM,可以使用以下命令进行安装:

sudo apt install php-fpm -y

配置PHP-FPM

PHP-FPM的配置文件通常位于 /etc/php/{version}/fpm/pool.d/www.conf,其中 {version} 是你的PHP版本号。

设置用户和组

确保PHP-FPM以非特权用户和组运行,通常是 www-data

user = www-data
group = www-data

监听设置

默认情况下,PHP-FPM监听在Unix socket上,而不是TCP端口,这样可以提高安全性。

listen = /run/php/php{version}-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

安全选项

启用一些安全选项,例如限制进程数量和请求大小。

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
request_terminate_timeout = 30s

限制文件系统访问

通过设置 open_basedir 来限制PHP可以访问的系统目录,防止非法访问。

open_basedir = /var/www/html:/tmp

禁用不必要的模块

编辑 /etc/php/{version}/fpm/pool.d/www.conf 文件,注释掉或删除不需要的模块。

;security.limit_extensions = .php .html .htm

关闭不必要的PHP功能

屏蔽PHP错误输出,将 display_errors 设置为 Off,并将错误信息记录到日志文件中。关闭全局变量 register_globals,以防止表单数据被自动注册为全局变量。

display_errors = Off
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_WARNING
register_globals = Off

启用Suhosin扩展

Suhosin是一个PHP程序的保护系统,可以抵御一些常见的攻击。

extension=suhosin.so

配置防火墙

使用 ufw(Uncomplicated Firewall)来限制对PHP-FPM端口的访问。

sudo ufw allow 9000/tcp
sudo ufw reload

SELinux/AppArmor配置(可选)

如果使用SELinux或AppArmor,可以进一步限制PHP-FPM的权限。

SELinux

sudo semanage fcontext -a -t httpd_sys_content_t /var/www/html(/.)?
sudo restorecon -Rv /var/www/html

AppArmor

编辑相应的配置文件来限制PHP-FPM的权限。

sudo aa-disable /etc/apparmor.d/usr.sbin.php-fpm7.4

定期更新和维护

定期更新PHP和PHP-FPM到最新版本,以确保安全漏洞得到修复。

sudo apt update && sudo apt upgrade -y

监控和日志

配置PHP-FPM的日志记录,并定期检查日志文件以发现任何异常活动。

access.log = /var/log/php-fpm/access.log
error.log = /var/log/php-fpm/error.log

通过以上步骤,你可以大大提高在Ubuntu上运行PHP-FPM的安全性。记住,安全性是一个持续的过程,需要定期审查和更新配置。

0
看了该问题的人还看了