温馨提示×

LNMP安全配置指南

小樊
47
2025-09-12 07:51:08
栏目: 编程语言

以下是LNMP安全配置指南,涵盖系统、服务及运维关键环节:

一、系统基础安全

  1. 更新与补丁
    定期更新Linux内核、Nginx、MySQL、PHP至最新版本,修复漏洞。
    # Debian/Ubuntu  sudo apt update && sudo apt upgrade -y # CentOS/RHEL  sudo yum update -y 
  2. 用户权限
    • 创建专用服务用户(如webuser),禁止root直接运行服务。
    • 限制SSH登录为密钥认证,禁用密码登录。

二、Nginx安全配置

  1. 隐藏敏感信息
    server_tokens off; # 隐藏版本号  autoindex off; # 禁止目录列表  
  2. 访问控制
    • 限制IP访问关键目录(如/admin)。
    • 使用limit_req模块防止DDoS/暴力破解。
  3. 加密与安全头
    • 强制HTTPS,配置SSL证书(如Let’s Encrypt)。
    • 添加安全HTTP头:
      add_header X-Frame-Options "SAMEORIGIN"; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "default-src 'self'"; 

三、MySQL安全配置

  1. 账户与权限
    • 使用强密码,删除默认匿名用户,禁止root远程登录。
    • 通过mysql_secure_installation脚本初始化安全设置。
  2. 访问控制
    • 限制数据库用户仅能访问必要表,使用GRANT最小权限原则。
    • 绑定IP至0.0.0.0或内网地址,避免暴露公网。
  3. 防注入
    强制使用预处理语句(PDO/MySQLi),避免动态拼接SQL。

四、PHP安全配置

  1. 禁用危险函数
    php.ini中禁用exec, system, passthru等高危函数。
  2. 文件与错误处理
    • 限制文件上传类型/大小,禁止执行上传目录的PHP文件。
    • 关闭错误显示,记录日志至专用文件。
  3. 资源限制
    调整pm.max_children等参数,防止资源耗尽攻击。

五、服务与运维安全

  1. 防火墙与端口
    • 使用ufwiptables仅开放必要端口(22、80、443等)。
    • 禁止3306端口对外访问(MySQL仅限内网)。
  2. 日志与监控
    • 配置日志轮转(如Nginx、PHP错误日志),定期分析异常。
    • 部署监控工具(如Prometheus)实时检测异常流量。
  3. 备份与恢复
    • 定期备份数据库和网站文件,测试恢复流程。
    • 存储备份至异地,避免单点故障。

六、安全增强措施

  • 安全扫描:定期用工具(如Nikto、OWASP ZAP)检测漏洞。
  • 最小权限原则:删除非必要服务,限制用户权限至“必需知道”。
  • 合规性检查:遵循等保2.0等标准,确保关键配置符合监管要求。

参考来源

0