发布于2026-07-15 阅读(0)
扫一扫,手机访问
配置PHP-FPM的时候,安全这块儿其实很容易被忽略——不少人觉得能用就行,结果过阵子服务器被挖矿、数据库被脱裤,才回过头来补课。今天就把Ubuntu上加固PHP-FPM的要点梳理一遍,每一步都有实操价值,不是那种“重启解决一切”的敷衍方案。

老生常谈,但确实是最基础的一步。系统本身的漏洞往往是最大的突破口,先跑一遍更新把已知坑填上:
sudo apt update
sudo apt upgrade -y
如果机器上还没装,直接一条命令搞定。注意版本号根据你的Ubuntu发行版可能不同,这里以默认源为准:
sudo apt install php-fpm -y
配置文件藏在/etc/php/版本号/fpm/pool.d/www.conf里,大多数安全调整都在这里做。下面说几个最关键的改动。
默认用的是Unix套接字,其实性能不错,但如果你多个应用需要跨网络访问,或者你想用防火墙做更精细的控制,改成TCP监听127.0.0.1:9000会更灵活。编辑配置文件:
sudo nano /etc/php/版本号/fpm/pool.d/www.conf
找到这一行:
listen = /run/php/php7.4-fpm.sock
改成:
listen = 127.0.0.1:9000
注意只监听本地回环地址,这样外网默认是访问不到的。
绝对不要用root跑PHP-FPM,这是底线。确认配置文件里指定了非特权用户:
user = www-data
group = www-data
如果用的是其他Web服务(比如nginx),确保用户一致,免得权限打架。
既然改成了TCP监听,那就顺手用ufw把这个端口封死——只让本机自己访问。如果之后有其他机器需要连这个端口,再单独加规则。没需求的话,一条命令就够了:
sudo ufw allow 9000/tcp
sudo ufw enable
注意:如果服务器上还有SSH服务,先确认22端口已经放行,别把自己关在外面。
SELinux虽然好用,但在Ubuntu里默认没开启,多数人也不折腾。如果你确实在用SELinux,下面两条命令可以帮PHP-FPM获得必要的网络和文件上下文权限:
sudo setsebool -P httpd_can_network_connect 1
sudo chcon -Rt httpd_sys_content_t /var/www/html
不做这一步的话,很多PHP应用会莫名其妙报权限错误。
安全不是一次性配置,后续维护才是重头戏。随手养成习惯:
sudo apt update
sudo apt upgrade -y
同时把日志盯起来,尤其是PHP-FPM的错误日志,很多攻击在尝试阶段就会留下痕迹:
sudo tail -f /var/log/php7.4-fpm.log
别小看这条命令,关键时刻能救命。
不管后端多安全,前端数据传输不加密等于裸奔。Let's Encrypt免费证书现在基本是标配,装个certbot几步搞定:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
如果用的不是nginx,换成--apache即可。
PHP默认启了一堆扩展,很多压根用不上,比如gd、mysqli,留下就是攻击面。编辑/etc/php/版本号/cli/php.ini,找到对应行,前面加上分号注释掉:
;extension=gd
;extension=mysqli
注意:如果业务确实需要某个模块,别盲目注释,确认后再动手。
这条更像常识,但翻车的人最多。数据库密码、API密钥、私钥这些,不要硬编码在PHP文件里,也别用弱口令。放在环境变量或独立的配置文件中,权限设为600。道理大家都懂,执行起来才见真章。
上面这几个步骤走下来,PHP-FPM在Ubuntu上的安全性至少能提升两个档次。当然,安全是动态的,新的漏洞和攻击手法层出不穷,定期复查配置、关注官方安全公告,比什么灵丹妙药都管用。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8