温馨提示×

LNMP环境如何安全设置

小樊
36
2025-12-12 02:26:48
栏目: 编程语言

LNMP环境安全设置清单

一 系统与账户安全

  • 保持系统与组件持续更新:执行apt update && apt upgrade -yyum/dnf update,及时修补漏洞。
  • 最小权限账户与sudo:创建非root运维账号并加入sudo组,日常以该账号登录。
  • 禁用root远程登录:编辑**/etc/ssh/sshd_config**,设置PermitRootLogin no,重启sshd。
  • SSH加固:优先使用SSH密钥认证,必要时可更改默认端口并限制来源网段;变更前保留一个备用会话,防止锁死。
  • 防火墙仅放行业务必需端口:如22/80/443;数据库端口3306默认仅本地访问。
  • 自动化与安全审计:启用unattended-upgrades自动安全更新;部署fail2ban防暴力破解;定期用rkhunter/chkrootkit做基线巡检。

二 Nginx安全加固

  • 隐藏版本与信息泄露:在http/server块设置server_tokens off;,禁用目录列表autoindex off;
  • 限制请求方法:仅允许GET/POST/HEAD,其余返回403
  • 安全响应头:启用X-Frame-Options SAMEORIGINX-XSS-Protection “1; mode=block”X-Content-Type-Options nosniff、并配置Content-Security-Policy(按站点策略收紧)。
  • 强制HTTPS与HSTS:将HTTP→HTTPS 301重定向,启用HSTS(Strict-Transport-Security)。
  • 优化SSL/TLS:仅启用TLSv1.2/1.3,使用ECDHEAEAD套件,开启OCSP Stapling
  • 访问控制与速率限制:对管理路径实施IP白名单,对登录/接口做rate limiting与连接数限制。
  • 防敏感信息泄露:禁止访问**.git/.ht等敏感路径;自定义4xx/5xx**错误页面且不泄露版本与路径信息。

三 MySQL MariaDB安全

  • 运行安全脚本与基础加固:执行mysql_secure_installation;删除test库、限制root远程、移除匿名用户。
  • 最小权限与账户隔离:为每个应用创建最小权限专用账户;收回FILE/PROCESS/SUPER/SHUTDOWN/GRANT等非必要权限。
  • 网络与加密:默认仅127.0.0.1监听;需要远程时强制TLS/SSL连接并校验证书;禁止3306对公网开放。
  • 关键参数:设置local_infile=0skip-name-resolvesymbolic-links=0secure-file-priv到受控目录。
  • 数据与日志权限:确保datadir错误/慢查询/二进制等日志目录属主为mysql:mysql,权限600/660;日志与数据目录避免放在系统分区
  • 认证与密码策略:启用validate_password组件;MySQL 8.0优先使用caching_sha2_password;定期轮换强密码。

四 PHP与PHP-FPM安全

  • 关闭暴露与调试:设置expose_php Offdisplay_errors Offlog_errors On,错误日志写入受控路径。
  • 禁用危险函数与特性:在disable_functions中禁用exec/passthru/shell_exec/system/proc_open/popen等;关闭allow_url_fopen/allow_url_include
  • 路径与访问限制:使用open_basedir将PHP访问限制在**/var/www**与临时目录;上传目录禁止执行。
  • 会话与Cookie:启用session.cookie_httponly=1session.cookie_secure=1,必要时设置SameSite策略。
  • PHP-FPM进程隔离:以非root用户运行(如webuser),配置listen.owner/grouppm参数,分离站点池并限制pm.max_children
  • 上传安全:校验MIME类型/后缀/大小,重命名上传文件,存储于非Web可访问目录,通过脚本代理访问。

五 文件权限 备份监控与持续运维

  • 文件与目录权限:网站根目录建议750/640(目录/文件),属主webuser:webuser;敏感配置(如my.cnf/php.ini)设为600
  • 日志与轮转:为Nginx/PHP-FPM/MySQL配置logrotate按日轮转并压缩,保留至少14天。
  • 备份与恢复演练:定期备份数据库与网站文件/配置,并进行可恢复性测试;保留多份异地副本。
  • 监控与告警:集中收集访问/错误日志,对5xx/登录失败/暴力破解等设定阈值告警;结合性能监控观察异常流量与连接数。
  • 安全基线与合规:定期执行CIS等基线检查与漏洞扫描;对公网接口考虑WAF/Rate Limiting/Geo-IP等纵深防护。

0