在Ubuntu系统中,对PHP-FPM进行安全配置是非常重要的,以下是一些关键步骤和建议:
首先,确保你的系统是最新的:
sudo apt update && sudo apt upgrade -y
如果你还没有安装PHP-FPM,可以使用以下命令进行安装:
sudo apt install php-fpm -y
PHP-FPM的配置文件通常位于 /etc/php/版本号/fpm/pool.d/www.conf
。你需要编辑这个文件来进行安全配置。
默认情况下,PHP-FPM可能监听Unix套接字或TCP端口。为了提高安全性,建议使用Unix套接字:
listen = /run/php/php7.4-fpm.sock
如果你必须使用TCP端口,请确保绑定到本地地址(127.0.0.1):
listen = 127.0.0.1:9000
确保PHP-FPM以非特权用户和组运行:
user = www-data
group = www-data
编辑 php.ini
文件(通常位于 /etc/php/版本号/cli/php.ini
或 /etc/php/版本号/fpm/php.ini
),禁用不必要的功能以提高安全性:
disable_functions = eval,assert,preg_replace_callback,create_function,assert,call_user_func_array,call_user_func,ini_set,ini_alter,ini_restore,dl,exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
在 php.ini
中设置上传文件的大小限制:
upload_max_filesize = 2M
post_max_size = 8M
确保错误日志被启用并正确配置:
error_log = /var/log/php-fpm/error.log
log_level = error
使用 ufw
或其他防火墙工具来限制对PHP-FPM端口的访问:
sudo ufw allow 9000/tcp
sudo ufw enable
定期更新PHP和PHP-FPM到最新版本,并监控日志文件以检测任何异常活动。
如果你使用的是SELinux或AppArmor,可以进一步限制PHP-FPM的权限。
安装并配置SELinux策略:
sudo apt install selinux-basics selinux-policy-default -y
sudo setenforce 1
安装并配置AppArmor:
sudo apt install apparmor apparmor-utils -y
sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
通过以上步骤,你可以显著提高Ubuntu系统中PHP-FPM的安全性。记得定期检查和更新配置,以应对新的安全威胁。