温馨提示×

LNMP服务器安全配置指南

小樊
57
2025-08-17 04:59:08
栏目: 云计算

以下是LNMP服务器安全配置指南,涵盖系统、组件及运维安全关键措施:

一、系统基础安全

  1. 最小权限原则
    • 为Nginx、MySQL、PHP-FPM创建专用用户(如www-data),禁止使用root运行服务。
    • 限制文件权限:网站目录设为755,敏感文件(如配置文件)设为644,避免777权限。
  2. 防火墙配置
    • 使用iptablesfirewalld仅开放必要端口(HTTP 80、HTTPS 443、SSH 22等),关闭默认未使用端口。
    • 示例(firewalld):
      sudo firewall-cmd --permanent --add-service=http --add-service=https  
      sudo firewall-cmd --reload  
      
  3. SSH安全
    • 禁用密码登录,启用公钥认证:修改/etc/ssh/sshd_config,设置PasswordAuthentication no

二、组件安全加固

1. Nginx安全配置

  • 隐藏敏感信息
    • 移除版本号:在配置中添加server_tokens off;
    • 禁止目录列表:autoindex off;
  • 访问控制
    • 通过location指令限制特定路径访问,如禁止访问.htaccess文件:
      location ~ /\.ht { deny all; }  
      
  • HTTPS强制启用
    • 使用Let’s Encrypt免费证书,配置SSL加密(参考):
      listen 443 ssl;  
      ssl_certificate /path/to/fullchain.pem;  
      ssl_certificate_key /path/to/privkey.pem;  
      

2. MySQL数据库安全

  • 权限管理
    • 为每个数据库用户设置强密码,仅授予必要权限(遵循最小权限原则)。
    • 示例:
      CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';  
      GRANT SELECT, INSERT ON database.* TO 'app_user'@'localhost';  
      
  • 加密连接
    • 启用SSL/TLS加密数据库传输(需在MySQL配置文件中设置ssl-ca等参数)。

3. PHP安全配置

  • 禁用危险函数
    • php.ini中禁用evalsystemexec等高危函数:
      disable_functions = eval,system,exec,passthru  
      
  • 文件上传限制
    • 限制上传文件类型(如仅允许图片)和大小,存储至非Web根目录。
    • 示例:
      upload_max_filesize = 2M  
      post_max_size = 2M  
      

三、运维与监控

  1. 日志管理
    • 启用Nginx、MySQL、PHP错误日志,定期分析异常请求(如404、500错误)。
    • 日志路径示例:
      • Nginx:/var/log/nginx/error.log
      • MySQL:/var/log/mysql/error.log
  2. 安全审计与更新
    • 定期更新系统及组件(Linux内核、Nginx、MySQL、PHP)至最新版本,修复漏洞。
    • 使用工具(如cron)定期备份数据库和网站数据,测试恢复流程。

四、高级防护(可选)

  • Web应用防火墙(WAF)
    • 部署ngx_lua_waf等模块,防御SQL注入、XSS等攻击。
  • 入侵检测系统(IDS)
    • 使用fail2ban监控异常登录行为,自动封禁恶意IP。

参考来源

通过以上措施,可显著提升LNMP服务器的安全性,降低被攻击风险。

0