在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-data
group = www-data
; 监听权限
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
; PM(进程管理)设置
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
; 进程空闲时间超过30秒则自动释放
request_terminate_timeout = 30s
确保防火墙允许必要的端口和协议。
# 使用ufw(Uncomplicated Firewall)
sudo ufw allow 9000/tcp
# 或者使用iptables
sudo 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临时启用SELinux
sudo setenforce 1
如果你使用AppArmor,确保配置文件允许PHP-FPM访问必要的文件和目录。
定期检查PHP-FPM日志文件,以便及时发现和解决问题。
tail -f /var/log/php7.x-fpm.log
保持PHP-FPM和相关软件包的最新状态,以修复已知的安全漏洞。
sudo apt-get update
sudo apt-get upgrade
确保你的Web服务器配置了HTTPS,以加密传输的数据。
# 使用Let's Encrypt获取SSL证书
sudo apt-get install certbot python3-certbot-apache
sudo certbot --apache -d yourdomain.com
通过以上步骤,你可以大大提高PHP-FPM在Linux上的安全性。记住,安全是一个持续的过程,需要定期审查和更新配置。