如何防止Ubuntu PHP被攻击

防止Ubuntu PHP被攻击可从系统、PHP配置、Web服务器、安全机制等多方面入手,具体措施如下:

  1. 系统与软件更新
    定期更新Ubuntu系统和PHP到最新版本,修复已知漏洞:

    sudo apt update && sudo apt upgrade  
    
  2. PHP配置安全

    • 禁用危险函数:在php.ini中关闭eval()exec()等高危函数。
    • 限制文件上传:设置upload_max_filesizepost_max_size,验证文件类型并重命名上传文件。
    • 关闭错误显示:设置display_errors=Off,启用日志记录log_errors=On
    • 限制资源使用:通过security.ini限制脚本执行时间、内存占用等。
  3. Web服务器防护

    • 启用防火墙:使用UFW限制端口访问,仅开放必要服务。
    • 配置HTTPS:通过Let’s Encrypt获取SSL证书,强制加密数据传输。
    • 禁用不必要的模块:移除Apache/Nginx中不用的模块(如xmlrpc)。
  4. 安全模块与工具

    • 启用安全模块:安装mod_security(Apache)或ngx_http_security_module(Nginx)过滤恶意请求。
    • 使用WAF:部署Web应用防火墙(如ModSecurity)拦截SQL注入、XSS等攻击。
  5. 代码与权限管理

    • 输入验证与输出编码:使用filter_input()验证输入,htmlspecialchars()转义输出。
    • 安全会话管理:设置session.cookie_secure=1(仅HTTPS传输)、session_regenerate_id()防止劫持。
    • 文件权限控制:确保PHP文件和目录权限为755,敏感文件仅允许www-data用户访问。
  6. 监控与审计

    • 日志监控:定期查看/var/log/apache2//var/log/nginx/中的访问和错误日志。
    • 安全扫描:使用工具(如Lynis、OWASP ZAP)定期检测漏洞。

参考来源