在Ubuntu上对php-fpm进行安全加固是一个重要的过程,可以提高服务器的安全性和稳定性。以下是一些关键步骤和建议:
更新系统和软件包确保系统和所有软件包都是最新的,以修复已知的安全漏洞:
sudo apt updatesudo apt upgrade
安装和配置php-fpm安装php-fpm及其必要的扩展:
sudo apt install php-fpm php-mysql
配置php-fpm编辑php-fpm的主要配置文件 /etc/php/版本号/fpm/php.ini
,进行以下配置:
memory_limit = 256M
防止单个脚本消耗过多内存。限制上传文件大小:upload_max_filesize = 10M
防止大文件上传。禁用危险函数:例如,disable_functions = eval, exec, system
防止执行恶意代码。设置正确的文档根目录:doc_root = /var/www/html
确保网站文件存储在非Web根目录下。配置进程池编辑php-fpm的进程管理配置文件 /etc/php/版本号/fpm/pool.d/www.conf
,进行以下配置:
user
和 group
设置为非root用户和组,例如 user = www-data group = www-data
。监听地址和端口:默认情况下,php-fpm监听127.0.0.1:9000。如果需要更改,请修改 listen
配置项。进程管理:根据服务器硬件配置调整 pm.max_children
(最大子进程数)、pm.start_servers
(启动时的子进程数)等参数。配置Nginx与php-fpm的连接编辑Nginx的配置文件 /etc/nginx/conf.d/default.conf
,添加以下配置段:
location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/var/run/php/php版本号-fpm.sock;fastcgi_index index.php;fastcgi_param script_FILENAME $document_root$fastcgi_script_name;}
重启服务重启php-fpm和Nginx服务以应用更改:
sudo systemctl restart php{版本号}-fpmsudo systemctl restart nginx
防火墙配置配置防火墙允许外部访问php-fpm(如果需要):
sudo ufw allow 'Nginx Full'
SELinux/AppArmor配置(如果适用)如果使用SELinux或AppArmor,确保它们不会阻止php-fpm的正常运行。可能需要设置适当的策略。
定期安全检查和更新定期检查系统和软件包的安全性,并进行更新:
sudo apt updatesudo apt upgrade
通过以上步骤,可以显著提高php-fpm在Ubuntu上的安全性。建议定期审查和更新安全配置,以应对新的安全威胁。