在Ubuntu系统中配置PHP-FPM(FastCGI Process Manager)的安全选项,可以通过修改PHP-FPM的配置文件来实现。以下是一些常见的安全配置选项:
PHP-FPM的配置文件通常位于 /etc/php/{version}/fpm/pool.d/www.conf,其中 {version} 是你的PHP版本号。
sudo nano /etc/php/{version}/fpm/pool.d/www.conf
默认情况下,PHP-FPM监听Unix套接字。为了提高安全性,可以将其更改为TCP/IP监听,并绑定到本地回环地址。
listen = 127.0.0.1:9000
确保PHP-FPM以非特权用户和组运行,以减少潜在的安全风险。
user = www-data
group = www-data
禁用不必要的PHP模块可以减少攻击面。
php_admin_value[open_basedir] = /var/www/html/:/tmp/
php_admin_value[disable_functions] = eval,preg_replace,exec,system,shell_exec,passthru
限制文件上传的大小和类型,以防止恶意文件上传。
php_admin_value[upload_max_filesize] = 2M
php_admin_value[post_max_size] = 8M
php_admin_value[file_uploads] = On
配置错误日志的位置和级别,以便在出现问题时能够及时发现。
catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
配置PHP-FPM的进程管理选项,以确保系统资源的合理使用。
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
完成配置后,重启PHP-FPM服务以应用更改。
sudo systemctl restart php{version}-fpm
确保防火墙只允许必要的端口和IP地址访问PHP-FPM。
sudo ufw allow 9000/tcp
如果你使用的是SELinux或AppArmor,可以进一步限制PHP-FPM的权限。
sudo setsebool -P httpd_can_network_connect 1
sudo chcon -Rt httpd_sys_content_t /var/www/html
sudo aa-enforce /etc/apparmor.d/usr.sbin.php-fpm
通过以上步骤,你可以显著提高PHP-FPM的安全性。请根据你的具体需求和环境调整配置。