防止Ubuntu PHP被攻击可从系统、PHP配置、Web服务器、安全机制等多方面入手,具体措施如下:
-
系统与软件更新
定期更新Ubuntu系统和PHP到最新版本,修复已知漏洞:sudo apt update && sudo apt upgrade -
PHP配置安全
- 禁用危险函数:在
php.ini中关闭eval()、exec()等高危函数。 - 限制文件上传:设置
upload_max_filesize、post_max_size,验证文件类型并重命名上传文件。 - 关闭错误显示:设置
display_errors=Off,启用日志记录log_errors=On。 - 限制资源使用:通过
security.ini限制脚本执行时间、内存占用等。
- 禁用危险函数:在
-
Web服务器防护
- 启用防火墙:使用UFW限制端口访问,仅开放必要服务。
- 配置HTTPS:通过Let’s Encrypt获取SSL证书,强制加密数据传输。
- 禁用不必要的模块:移除Apache/Nginx中不用的模块(如
xmlrpc)。
-
安全模块与工具
- 启用安全模块:安装
mod_security(Apache)或ngx_http_security_module(Nginx)过滤恶意请求。 - 使用WAF:部署Web应用防火墙(如ModSecurity)拦截SQL注入、XSS等攻击。
- 启用安全模块:安装
-
代码与权限管理
- 输入验证与输出编码:使用
filter_input()验证输入,htmlspecialchars()转义输出。 - 安全会话管理:设置
session.cookie_secure=1(仅HTTPS传输)、session_regenerate_id()防止劫持。 - 文件权限控制:确保PHP文件和目录权限为
755,敏感文件仅允许www-data用户访问。
- 输入验证与输出编码:使用
-
监控与审计
- 日志监控:定期查看
/var/log/apache2/或/var/log/nginx/中的访问和错误日志。 - 安全扫描:使用工具(如Lynis、OWASP ZAP)定期检测漏洞。
- 日志监控:定期查看
参考来源: