在Linux上安全配置PHP-FPM(FastCGI Process Manager)涉及多个方面,包括文件权限、用户和组设置、防火墙规则、SELinux/AppArmor配置等。以下是一些关键步骤和建议:

确保PHP-FPM进程只能访问必要的文件和目录。
# 更改PHP-FPM进程的用户和组usermod -a -G www-data www-data# 设置文件和目录权限find /path/to/your/php-fpm -type d -exec chmod 755 {} ;find /path/to/your/php-fpm -type f -exec chmod 644 {} ;编辑PHP-FPM配置文件(通常是/etc/php/7.x/fpm/pool.d/www.conf),确保以下设置:
; 监听地址listen = /run/php/php7.x-fpm.sock; 或者使用TCP/IP; listen = 127.0.0.1:9000; 用户和组user = www-datagroup = www-data; 监听权限listen.owner = www-datalisten.group = www-datalisten.mode = 0660; PM(进程管理)设置pm = dynamicpm.max_children = 5pm.start_servers = 2pm.min_spare_servers = 1pm.max_spare_servers = 3; 进程空闲时间超过30秒则自动释放request_terminate_timeout = 30s确保防火墙允许必要的端口和协议。
# 使用ufw(Uncomplicated Firewall)sudo ufw allow 9000/tcp# 或者使用iptablessudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT如果你使用的是SELinux或AppArmor,确保它们不会阻止PHP-FPM的正常运行。
# 设置SELinux上下文sudo chcon -Rt httpd_sys_content_t /path/to/your/php-fpm# 或者使用setenforce临时启用SELinuxsudo setenforce 1如果你使用AppArmor,确保配置文件允许PHP-FPM访问必要的文件和目录。
定期检查PHP-FPM日志文件,以便及时发现和解决问题。
tail -f /var/log/php7.x-fpm.log保持PHP-FPM和相关软件包的最新状态,以修复已知的安全漏洞。
sudo apt-get updatesudo apt-get upgrade确保你的Web服务器配置了HTTPS,以加密传输的数据。
# 使用Let's Encrypt获取SSL证书sudo apt-get install certbot python3-certbot-apachesudo certbot --apache -d yourdomain.com通过以上步骤,你可以大大提高PHP-FPM在Linux上的安全性。记住,安全是一个持续的过程,需要定期审查和更新配置。