保持系统与PHP更新
定期执行sudo apt update && sudo apt upgrade命令,更新Debian系统及PHP组件至最新稳定版本,及时修补已知安全漏洞。建议开启unattended-upgrades工具(sudo apt install unattended-upgrades -y && sudo dpkg-reconfigure unattended-upgrades),自动安装安全更新,确保系统持续处于最新防护状态。
优化PHP配置文件(php.ini)
通过调整php.ini关键参数降低安全风险:
display_errors = Off(避免错误详情暴露给用户)、expose_php = Off(不在HTTP响应头中泄露PHP版本);disable_functions = eval,exec,passthru,shell_exec(防止恶意代码执行)、register_globals = Off(避免表单数据自动成为全局变量);open_basedir = /var/www/html(限制PHP仅能访问指定目录,防范非法文件读取);allow_url_fopen = Off、allow_url_include = Off(禁止通过URL加载外部资源,防止文件包含漏洞)。强化Web服务器配置
.htaccess或虚拟主机配置限制敏感目录访问(如Deny from all禁止直接访问/config目录),启用mod_security模块过滤恶意请求;fastcgi_pass unix:/run/php/php8.3-fpm.sock;),避免将PHP文件直接暴露在Web根目录下;/etc/php/8.3/fpm/pool.d/www.conf中的listen参数为Unix socket(listen = /run/php/php8.3-fpm.sock),提升进程间通信安全性,并设置listen.owner = www-data、listen.group = www-data(确保PHP-FPM以低权限用户运行)。实施最小权限原则
www-data)运行PHP服务,避免使用root用户;750(所有者可读写执行,组用户可读执行,其他用户无权限)、文件权限为640(所有者可读写,组用户可读,其他用户无权限);/etc/ssh/sshd_config中的PermitRootLogin no)、启用SSH密钥认证(PasswordAuthentication no),降低SSH爆破风险。配置防火墙与网络隔离
使用ufw(Uncomplicated Firewall)限制入站流量,仅允许HTTP(80端口)、HTTPS(443端口)和SSH(22端口)访问:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable
若需更严格的控制,可使用iptables设置规则,如限制单个IP的连接频率(iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP),防范DDoS攻击。
部署安全增强工具
wget http://download.suhosin.org/suhosin-0.9.38.tar.gz && tar zxvf suhosin-0.9.38.tar.gz && cd suhosin-0.9.38 && phpize && ./configure --with-php-config=/usr/bin/php-config && make && sudo make install),在php.ini中添加extension=suhosin.so,增强PHP对缓冲区溢出、格式化字符串等漏洞的防护;sudo apt install crowdsec crowdsec-firewall-bouncer),通过行为分析拦截恶意机器人及攻击者请求,实时防护PHP站点。定期安全审计与监控
/var/log/php8.3-fpm.log或/var/log/apache2/error.log)及系统日志(journalctl -xe),使用fail2ban工具自动封禁频繁失败的登录尝试(如SSH爆破);Vuls(无代理开源漏洞扫描器)或Nessus扫描系统,及时发现并修复PHP组件及依赖库的安全漏洞;htmlspecialchars()过滤用户输入防止XSS),定期对PHP代码进行安全审查,修复潜在漏洞。