温馨提示×

Debian如何保障LNMP安全

小樊
45
2026-01-03 09:27:01
栏目: 智能运维

Debian 上 LNMP 的安全加固清单

一 系统层加固

  • 保持系统与软件为最新:执行 apt update && apt full-upgrade -y && apt autoremove -y,及时修补漏洞。
  • 最小暴露面:仅开启必要服务,使用 systemctl list-units --type=service --state=running 排查并禁用不需要的服务。
  • 强口令与复杂度:安装 libpam-pwquality,在 /etc/security/pwquality.conf 中设置 minlen、dcredit、ucredit、lcredit、ocredit 等策略。
  • 防火墙基线:使用 UFW 默认拒绝入站、放行出站,仅开放 SSH(22)HTTP(80)HTTPS(443);示例:ufw default deny incoming → ufw allow OpenSSH → ufw allow 80,443/tcp → ufw enable。
  • 入侵防护:部署 Fail2ban,为 SSH/Nginx 配置拦截规则,启用服务并设为开机自启。
  • SSH 安全:修改 /etc/ssh/sshd_config,设置 Port 2222(可选)、PermitRootLogin noPasswordAuthentication noPubkeyAuthentication yes,重启 ssh 服务生效。
  • 持续监控与复核:定期查看日志、复核开放端口与运行服务,形成变更记录与回滚预案。

二 Nginx 加固

  • 隐藏版本信息:在 nginx.conf 或 server 块中设置 server_tokens off;
  • 全站 HTTPS:使用 Certbot 自动申请与部署证书,启用 –redirect --hsts --staple-ocsp,强制 HTTP→HTTPS 并开启 HSTSOCSP Stapling
  • 安全响应头:统一添加
    • X-Frame-Options “SAMEORIGIN”
    • X-Content-Type-Options “nosniff”
    • Referrer-Policy “strict-origin-when-cross-origin”
    • Permissions-Policy “accelerometer=(), camera=(), microphone=()”
    • Content-Security-Policy “default-src ‘self’; script-src ‘self’; object-src ‘none’;”
    • Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”
  • 请求与连接限制:设置 client_max_body_size 2M; client_body_timeout 10s; keepalive_timeout 15;,并使用 limit_conn/limit_req 对单 IP 的连接与请求速率进行限速,缓解 DoS/CC 风险。
  • 运行与权限:以 www-data 运行,网站根目录建议 chmod 755 /var/www/htmlchown -R www-data:www-data /var/www/html,避免 777 权限。

三 MySQL MariaDB 加固

  • 安全初始化:执行 mysql_secure_installation,完成设置 root 强口令、移除匿名用户、删除 test 库、禁止 root 远程登录等。
  • 绑定与解析:在 /etc/mysql/my.cnf/etc/mysql/mariadb.conf.d/50-server.cnf 中设置 bind-address = 127.0.0.1skip-name-resolve,减少暴露与解析延迟。
  • 权限最小化:仅授予应用所需权限,例如
    • CREATE USER ‘appuser’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
    • GRANT SELECT, INSERT, UPDATE, DELETE ON yourdb.* TO ‘appuser’@‘localhost’;
    • FLUSH PRIVILEGES;
  • 日志与审计:启用通用查询日志/慢查询日志(按需),并定期审计异常查询与登录。

四 PHP 与 PHP-FPM 加固

  • php.ini 关键项:
    • expose_php = Off
    • display_errors = Off; log_errors = On; error_log = /var/log/php_errors.log
    • memory_limit = 128M; max_execution_time = 30; max_input_time = 60
    • upload_max_filesize = 2M; post_max_size = 8M
    • session.cookie_httponly = 1; session.cookie_secure = 1; session.use_strict_mode = 1
    • 禁用危险函数:disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
  • PHP-FPM 与目录隔离:在 /etc/php/8.x/fpm/pool.d/www.conf 中限制资源(如 pm.max_children、pm.start_servers 等),并通过 open_basedir 限制脚本读写范围,例如:
    • fastcgi_param PHP_ADMIN_VALUE “open_basedir=/var/www/html:/tmp/”;
  • 运行用户与权限:确保 PHP-FPMwww-data 运行,网站目录权限与属主保持一致,避免跨站读写。

五 运维与备份

  • 持续监控与告警:部署 Fail2ban 拦截暴力破解,结合 Logwatch 或集中式日志平台定期审计 Nginx、PHP-FPM、MySQL 日志。
  • 变更与回滚:变更前备份配置与数据库,变更后分阶段灰度并回滚预案验证。
  • 备份与恢复:制定定期备份策略(配置、代码、数据库),并进行周期性恢复演练,确保 RPO/RTO 达标。
  • 定期复核:例行检查系统更新、开放端口、运行服务、证书有效期与权限配置,保持最小权限与最小暴露面。

0