linux

LNMP安全设置怎么做

小樊
41
2025-09-06 07:30:29
栏目: 编程语言

以下是LNMP环境的安全设置要点,涵盖系统、组件及运维层面:

一、系统基础安全

  1. 最小权限原则
    • 创建专用用户(如webuser)运行Nginx、PHP-FPM,禁止使用root用户。
    • 通过useradd -r -s /sbin/nologin webuser创建非登录用户。
  2. 防火墙配置
    • 使用ufwfirewalld限制端口,仅开放SSH(22)、HTTP(80)、HTTPS(443)等必要端口。
    • 示例(ufw):sudo ufw allow 22,80,443
  3. 软件更新
    • 定期更新系统及组件(Nginx、MySQL、PHP),修复漏洞。
    • Debian/Ubuntu:sudo apt update && sudo apt upgrade -y

二、Nginx安全加固

  1. 隐藏敏感信息
    • 禁止显示版本号:server_tokens off;
    • 禁用目录列表:autoindex off;
  2. 访问控制
    • 限制IP访问:allow 192.168.1.0/24; deny all;
    • 禁用危险HTTP方法:if ($request_method !~ ^(GET|POST|HEAD)$) { return 405; }
  3. SSL/TLS配置
    • 强制HTTPS跳转:return 301 https://$host$request_uri;
    • 配置强加密套件:ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
    • 启用HSTS:add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
  4. 防攻击策略
    • 限制请求速率:limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
    • 防止点击劫持:add_header X-Frame-Options "SAMEORIGIN";

三、MySQL安全设置

  1. 用户权限管理
    • 创建专用数据库用户,限制仅能访问特定库:
      CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
      GRANT SELECT, INSERT, UPDATE ON dbname.* TO 'webuser'@'localhost';
      
    • 禁止root远程登录:修改/etc/mysql/my.cnf,设置bind-address = 127.0.0.1
  2. 数据加密与审计
    • 启用SSL连接:在my.cnf中配置ssl-cassl-certssl-key
    • 定期备份:使用mysqldump备份数据并测试恢复。

四、PHP安全配置

  1. 禁用危险函数
    • php.ini中禁用execsystem等高危函数:disable_functions = exec,passthru,shell_exec
  2. 文件权限控制
    • 网站目录权限:chown -R webuser:webuser /var/www/html,文件权限设为640,目录设为750
  3. 会话安全
    • 启用session.cookie_httponlysession.cookie_secure,防止XSS和会话劫持。

五、运维与监控

  1. 日志管理
    • 配置Nginx、MySQL错误日志路径,定期分析异常请求。
    • 使用logrotate定期轮转日志,避免占满磁盘。
  2. 安全工具部署
    • 安装fail2ban防止暴力破解:sudo apt install fail2ban,配置针对Nginx和SSH的防护规则。
    • 定期扫描漏洞:使用rkhunterlynis检测系统漏洞。

六、备份策略

参考来源

通过以上步骤可显著提升LNMP环境的安全性,需定期审查配置并更新安全策略。

0
看了该问题的人还看了