保持系统和PHP更新
定期更新Debian系统和PHP及相关软件包,是修补已知安全漏洞的核心措施。使用以下命令完成更新:
sudo apt update && sudo apt upgrade -y
建议启用unattended-upgrades工具,实现安全更新的自动安装,减少手动操作遗漏的风险。
优化PHP配置文件(php.ini)
通过调整php.ini关键参数,降低PHP应用的安全风险:
display_errors设为Off,避免敏感信息(如数据库凭据、服务器路径)通过错误页面泄露;同时开启log_errors并将错误日志记录到专用文件(如/var/log/php_errors.log),便于后续审计。expose_php = Off,防止响应头中暴露PHP版本信息,减少针对性攻击的可能。register_globals(防止表单数据自动注入全局变量)、allow_url_fopen/allow_url_include(禁止通过URL访问远程资源,规避文件包含漏洞)。open_basedir约束PHP仅能访问指定目录(如/var/www:/tmp),防止非法读取系统敏感文件(如/etc/passwd)。eval()、exec()、system()等高危函数,减少代码注入风险。配置Web服务器(Apache/Nginx)
根据使用的Web服务器调整配置,增强PHP处理的安全性:
mod_php或PHP-FPM模块已启用,通过虚拟主机配置限制对敏感目录(如/admin)的访问,或使用.htaccess文件添加访问控制规则。location ~ \.php$块中添加fastcgi_pass指令指向PHP-FPM进程,并设置try_files $uri =404防止恶意文件访问。/etc/php/8.2/fpm/pool.d/www.conf),调整listen参数为Unix socket(更安全),并设置pm.max_children限制并发进程数,避免资源耗尽攻击。强化系统与用户权限管理
useradd命令创建具有sudo权限的普通用户,并将其加入sudo组。/etc/ssh/sshd_config中的PermitRootLogin no),启用SSH密钥对认证(替换PasswordAuthentication yes为no),并修改SSH端口(如从22改为2222),减少暴力破解风险。www-data)分配最小权限,确保网站目录(如/var/www/html)的所有者为www-data,但组权限仅允许必要访问(如chmod 750)。配置防火墙限制访问
使用ufw(Uncomplicated Firewall)或iptables配置防火墙规则,仅允许必要的网络流量:
sudo ufw enable # 启用ufw
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
sudo ufw allow 22/tcp # 允许SSH
sudo ufw reload # 重新加载规则
通过限制入站端口,减少未经授权的访问尝试。
安装安全增强工具
extension=suhosin.so到php.ini即可启用。定期审计与监控
/var/log/syslog)和PHP错误日志(/var/log/php_errors.log),使用grep、awk等工具筛选异常请求(如大量404错误、POST请求包含SQL关键字)。Logwatch(生成每日日志报告)或Fail2ban(自动封禁频繁失败的IP地址),及时发现并响应潜在攻击。