在Ubuntu系统中,使用PHP-FPM(FastCGI Process Manager)时,确保其安全运行是非常重要的。以下是一些关键的安全措施和最佳实践:
首先,确保你的系统和所有相关软件都是最新的。
sudo apt update
sudo apt upgrade
默认情况下,PHP-FPM应该以非特权用户运行,以避免潜在的安全风险。
sudo usermod -a -G www-data www-data
编辑PHP-FPM配置文件(通常位于/etc/php/7.x/fpm/pool.d/www.conf),确保以下设置:
user 和 group 设置为非特权用户(如www-data)。listen.owner 和 listen.group 也设置为相同的用户和组。listen.mode 设置为0660,以限制对Unix套接字的访问。[user]
user = www-data
group = www-data
[www]
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
在www.conf文件中,设置合理的进程数和最大进程数,以避免资源耗尽。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
编辑PHP配置文件(通常位于/etc/php/7.x/fpm/php.ini),启用必要的安全选项:
display_errors = Off:禁止显示错误信息。log_errors = On:记录错误日志。error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE:限制错误报告级别。open_basedir:限制PHP可以访问的文件目录。display_errors = Off
log_errors = On
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
open_basedir = /var/www/html/:/tmp/
配置防火墙(如UFW)以限制对PHP-FPM端口的访问。
sudo ufw allow 9000/tcp
sudo ufw enable
定期备份你的网站文件和数据库,以防止数据丢失。
启用并定期检查PHP-FPM和Web服务器的日志文件,以便及时发现和解决问题。
tail -f /var/log/php7.x-fpm.log
tail -f /var/log/apache2/error.log # 或者Nginx的错误日志
确保你的网站使用HTTPS来加密数据传输。
sudo apt install certbot python3-certbot-apache # 对于Apache
sudo certbot --apache -d yourdomain.com
sudo apt install certbot python3-certbot-nginx # 对于Nginx
sudo certbot --nginx -d yourdomain.com
定期进行安全审计,检查系统配置和代码,确保没有潜在的安全漏洞。
通过遵循这些最佳实践,你可以显著提高在Ubuntu系统中使用PHP-FPM的安全性。