温馨提示×

Debian下LNMP安全配置指南

小樊
37
2025-11-15 03:58:28
栏目: 智能运维

Debian 下 LNMP 安全配置指南

一 基础加固

  • 保持系统最新:执行 sudo apt update && sudo apt upgrade -y,及时获取安全补丁。
  • 创建非 root 运维用户:避免直接使用 root,为日常操作创建普通用户并加入 sudo 组。
  • 启用防火墙:使用 UFW 仅放行必要端口(如 22/80/443),示例:
    sudo apt install ufw -y
    sudo ufw allow OpenSSH
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
  • SSH 安全:优先使用 SSH 密钥登录,禁用 root 远程登录,必要时更改默认端口(如 2222),示例:
    sudo nano /etc/ssh/sshd_config
    Port 2222
    PermitRootLogin no
    PasswordAuthentication no
    修改后执行:sudo systemctl restart ssh。

二 Nginx 安全配置

  • 只暴露必要端口与服务:确保仅开放 80/443,Nginx 进程以最小权限运行。
  • 隐藏版本信息:在 /etc/nginx/nginx.confhttp 块添加:
    server_tokens off;
  • 强制 HTTPSHSTS:在 server 块配置重定向与 HSTS(示例):
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
    }
    server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security “max-age=63072000; includeSubDomains; preload” always;
    }
  • 限制请求方法与目录访问:
    location / {
    limit_except GET POST HEAD { deny all; }
    }
    location ~ /.ht { deny all; }
    location ~ /.git { deny all; }
  • 正确解析 PHP:在 /etc/nginx/sites-available/defaultserver 块中仅保留必要 location ~ .php$ 配置,示例:
    location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 按实际 PHP 版本调整
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    修改后执行:sudo nginx -t && sudo systemctl reload nginx。

三 PHP-FPM 与 PHP 安全

  • 禁用危险函数:在 /etc/php/7.4/fpm/php.ini(按实际版本)设置:
    disable_functions = exec,passthru,shell_exec,system,proc_open,popen,eval,assert,`
  • 关闭路径信息泄露:设置 cgi.fix_pathinfo=0
  • 限制资源与进程:在 /etc/php/7.4/fpm/pool.d/www.conf 合理设置:
    pm.max_children = 5
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3
    request_terminate_timeout = 30
  • 仅启用必要扩展:如 php-fpm php-mysql php-gd php-curl php-mbstring php-zip php-opcache php-xml php-mysqli
  • 重启生效:sudo systemctl restart php7.4-fpm。

四 MariaDB MySQL 安全

  • 运行安全向导:sudo mysql_secure_installation(设置 root 强密码、移除匿名用户、禁止远程 root、删除测试库)。
  • 限制远程访问:在 /etc/mysql/mariadb.conf.d/50-server.cnf 设置:
    bind-address = 127.0.0.1
  • 创建最小权限数据库用户(示例):
    CREATE DATABASE dbname;
    CREATE USER ‘username’@‘localhost’ IDENTIFIED BY ‘StrongPassword!’;
    GRANT ALL PRIVILEGES ON dbname.* TO ‘username’@‘localhost’;
    FLUSH PRIVILEGES;
  • 重启数据库:sudo systemctl restart mariadb。

五 入侵防护 日志与备份

  • 入侵防护:部署 Fail2ban 监控 SSH/Nginx 暴力登录,示例:
    sudo apt install fail2ban -y
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    [sshd] 段落启用:enabled = true;在 [nginx-http-auth] 段落启用:enabled = true;
    sudo systemctl enable --now fail2ban。
  • 日志与审计:定期查看 /var/log/(如 nginx/mysql/auth.log),并使用 Logwatch 进行汇总报告。
  • 备份与恢复:制定周期性备份(如每日全量、每小时增量),可使用 rsync/tar 或专业备份工具,保留 ≥30 天 并定期演练恢复流程。

0