插件窝 干货文章 Linux LNMP安全性如何保障

Linux LNMP安全性如何保障

Nginx 安全 权限 MySQL 308    来源:    2025-05-09

LNMP(Linux + Nginx + MySQL + PHP)作为流行的Web服务架构,其安全性需要从系统层、服务层、应用层进行全方位防护。以下是关键保障措施和最佳实践:


一、操作系统(Linux)安全

  1. 最小化安装与更新

    • 仅安装必要软件包:yum --setopt=install_weak_deps=False install package
    • 定期更新系统:yum update -y && apt-get update && apt-get upgrade -y
  2. 用户与权限控制

    • 禁用root远程登录:修改/etc/ssh/sshd_configPermitRootLogin no
    • 使用sudo权限管理:visudo限制用户权限
    • 关键目录权限:chmod 750 /etc/nginx/(Nginx配置目录)
  3. 防火墙与SELinux

    # 启用firewalld
    firewall-cmd --permanent --add-service={http,https}
    firewall-cmd --reload
    
    # 启用SELinux(Enforcing模式)
    setenforce 1
    

二、Nginx安全加固

  1. 基础配置

    • 隐藏版本号:server_tokens off;
    • 限制HTTP方法:if ($request_method !~ ^(GET|POST|HEAD)$) { return 444; }
  2. HTTPS强制化

    server {
       listen 80;
       server_name example.com;
       return 301 https://$host$request_uri;
    }
    
    • 使用Let's Encrypt免费证书:certbot --nginx
  3. 防常见攻击

    • 防DDoS:限制连接速率 nginx limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    • 防目录遍历:autoindex off;

三、MySQL安全配置

  1. 初始化安全

    mysql_secure_installation # 交互式安全设置
    
  2. 权限最小化

    CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword!123';
    GRANT SELECT,INSERT ON appdb.* TO 'appuser'@'localhost';
    FLUSH PRIVILEGES;
    
  3. 日志与加密

    • 启用二进制日志审计:log_bin = /var/log/mysql/mysql-bin.log
    • 强制SSL连接:REQUIRE SSL用户选项

四、PHP安全优化

  1. php.ini关键参数

    expose_php = Off
    disable_functions = exec,passthru,shell_exec,system
    open_basedir = /var/www/html:/tmp
    
  2. 运行环境隔离

    • 使用PHP-FPM独立用户: ini [www] user = nginx group = nginx
  3. 版本维护

    • 及时升级PHP版本(如从PHP 7.4迁移到8.2+)

五、Web应用防护

  1. 文件上传控制

    • 限制上传目录无执行权限:chmod -R 750 /uploads
    • Nginx规则拦截可执行文件: nginx location ~* \.(php|pl|py|jsp)$ { deny all; }
  2. WAF集成

    • 使用ModSecurity+Nginx组合
    • 云WAF(如Cloudflare免费版)
  3. 定期漏洞扫描

    • 工具:Nikto, OpenVAS, Lynis

六、监控与应急

  1. 日志集中分析

    • ELK Stack收集Nginx/MySQL日志
    • 关键命令:grep '404' /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c
  2. 入侵检测

    • 工具:AIDE(文件完整性检查)
    aide --init && mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
    
  3. 备份策略

    • 数据库每日备份: bash mysqldump -u root -p --all-databases | gzip > /backups/mysql_$(date +%F).sql.gz

七、自动化加固工具推荐

  1. CIS基准扫描
    bash docker run --rm -v /:/host aquasec/kube-bench:latest cis
  2. Lynis审计
    bash lynis audit system

通过以上分层防护措施,LNMP环境可达到企业级安全水平。建议每季度进行一次渗透测试(如使用Kali Linux工具集),并保持所有组件的最新稳定版本。安全是一个持续过程,需结合技术手段和运维规范共同保障。