发布于2026-07-27 阅读(0)
扫一扫,手机访问
在Ubuntu系统下部署PHP-FPM,安全加固这件事儿,说简单也简单,说复杂也有不少细节。很多新手往往只关注功能实现,却忽略了底层的安全防护,等到被入侵或日志里出现异常请求时才追悔莫及。下面这几条措施,算是行业内比较统一的“基本功”,按顺序执行下来,基本能挡住绝大部分常见攻击。

这步没什么好说的,老旧软件包里的已知漏洞是最容易被利用的入口。保持系统最新是最基本的安全习惯:
sudo apt update && sudo apt upgrade -y
PHP-FPM必须用非特权用户运行,千万别用root。默认的www-data就够用,但得确认配置文件里确实指定了:
; /etc/php/7.x/fpm/pool.d/www.conf
user = www-data
group = www-data
攻击面这种东西,能少一个是一个。有些PHP函数在Web环境中压根用不上,直接禁用:
; /etc/php/7.x/cli/php.ini
disable_functions = exec,passthru,shell_exec,system
当然,具体禁哪些得根据你实际应用来定,但上面这几个基本是“安全黑名单”里的常客。
配置文件要是被随便改了,那前面所有加固都白搭。确保权限足够严格:
sudo chown root:root /etc/php/7.x/fpm/pool.d/www.conf
sudo chmod 644 /etc/php/7.x/fpm/pool.d/www.conf
PHP-FPM端口(默认9000)不该暴露给外网。用ufw限制一下,只允许本地或内网访问:
sudo ufw allow 9000/tcp
sudo ufw enable
注意,如果你用的是Nginx反向袋里,其实不需要对外暴露9000端口,改成只允许本机访问更安全。
Ubuntu默认用AppArmor而不是SELinux,但如果你手动启用了SELinux,可以进一步收紧权限。比如禁止PHP-FPM网络连接数据库等:
sudo setsebool -P httpd_can_network_connect_db 0
sudo setsebool -P httpd_enable_homedirs 0
对于大多数场景,这两个选项关了反而更安全。
数据在传输过程中要是明文,那跟没穿衣服一样。用Let's Encrypt免费证书搞定HTTPS:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
日志是安全事件的“第一现场”。定期看一眼PHP-FPM的错误日志,能发现不少异常尝试:
tail -f /var/log/php7.x-fpm.log
最好配合日志分析工具,手动翻太累。
安全加固做的再好,也怕万一。配置文件和网站数据定期打包,出问题能快速恢复:
sudo tar -czvf php-fpm-backup.tar.gz /etc/php/7.x/fpm /var/www/html
像mod_security这样的Web应用防火墙模块,可以给PHP应用再加一层防护:
sudo apt install libapache2-mod-security2
sudo systemctl enable apache2-mod-security2
不过要注意,规则配置不当可能导致误拦截,需要根据实际业务调整。
生产环境最忌讳把错误信息直接抛给用户。关掉显示,只记录到日志文件:
; /etc/php/7.x/cli/php.ini
display_errors = Off
log_errors = On
error_log = /var/log/php_errors.log
老版本意味着老漏洞。尽量用最新的稳定版,并定期更新:
sudo apt install php7.x-fpm
(注意替换成你实际使用的版本号,比如8.1、8.2等)
以上这些措施,每一条都经历过真实攻击的考验。关键不在于一次做完,而在于形成习惯——每次更新系统、每次部署新应用,都把这些步骤过一遍。安全没有终点,只有持续加固的过程。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8