温馨提示×

centos lnmp如何实现安全防护

小樊
47
2025-08-26 23:34:17
栏目: 智能运维

以下是CentOS上部署LNMP实现安全防护的关键措施:

系统基础安全

  1. 系统更新与权限管理

    • 定期执行 yum update 修复系统漏洞。
    • 禁用 root 远程登录,创建专用服务用户(如 webuser),并限制其权限。
    • 使用 chattr +i 锁定关键配置文件,防止篡改。
  2. 防火墙配置

    • 启用 firewalldiptables,仅开放必要端口(HTTP 80、HTTPS 443、SSH 22等),禁止数据库端口(3306)外部访问。
    • 示例 firewalld 规则:
      firewall-cmd --permanent --add-service=http --add-service=https  
      firewall-cmd --reload  
      
  3. 服务最小权限原则

    • Nginx、MySQL、PHP-FPM 均以非 root 用户运行,配置文件中指定用户组(如 user = webuser)。

组件安全加固

Nginx 安全配置

  • 隐藏版本号:server_tokens off;
  • 禁用危险 HTTP 方法:if ($request_method !~ ^(GET|HEAD|POST)$) { return 405; }
  • 启用安全头:
    add_header X-Frame-Options "SAMEORIGIN";  
    add_header X-XSS-Protection "1; mode=block";  
    add_header Content-Security-Policy "default-src 'self';";  
    

MySQL 安全配置

  • 使用强密码,禁止远程 root 登录,限制用户权限至最小必要范围。
  • 配置 my.cnf
    [mysqld]  
    skip-name-resolve  # 禁用DNS解析  
    sql_mode=STRICT_TRANS_TABLES  # 严格模式  
    

PHP 安全配置

  • 禁用高危函数:disable_functions = exec,passthru,shell_exec
  • 启用 open_basedir 限制文件访问路径,防止跨目录攻击。
  • 使用预处理语句(PDO/MySQLi)防止SQL注入,避免直接拼接用户输入。

数据与访问控制

  1. 文件与目录权限

    • Web 根目录权限设为 755,敏感文件(如配置文件)设为 640,确保仅服务用户可读。
    • 上传文件存储于独立目录,禁止执行权限(chmod 600),并使用随机文件名。
  2. 数据备份与加密

    • 定期备份数据库(如 mysqldump)和网站文件,存储至异地。
    • 启用 HTTPS(Let’s Encrypt 免费证书),加密传输数据。

安全监控与审计

  • 部署日志分析工具(如 ELK Stack)监控异常访问,重点关注 404500 错误及异常登录尝试。
  • 使用 fail2ban 防止暴力破解,限制单个IP的失败登录次数。
  • 定期进行安全审计,通过工具(如 Lynis)扫描系统漏洞。

高级防护(可选)

  • 部署 Web 应用防火墙(WAF)如 ModSecurity,拦截SQL注入、XSS等攻击。
  • 启用 SELinux 限制进程权限,仅允许必要操作。

参考来源:[1,2,3,6,7,8,9,10,11,13,14]

0