温馨提示×

如何保护debian nginx安全

小樊
39
2026-10-06 12:29:44
栏目: 智能运维

保护 Debian 上 Nginx 的安全,通常可以从系统层、Nginx 配置层、应用与运维层三个维度来做。下面是一套比较实用、可落地的清单。


一、系统与基础安全

1. 保持系统与软件更新

sudo apt update
sudo apt upgrade -y

并启用自动安全更新:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

2. 使用非 root 用户管理

  • 禁止 root 直接 SSH 登录
  • 使用 sudo 用户
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
sudo systemctl restart ssh

3. 配置防火墙(UFW)

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

4. 限制 SSH 访问(可选)

  • 只允许特定 IP
  • 使用密钥登录

二、Nginx 安全配置

1. 隐藏 Nginx 版本信息

server_tokens off;

2. 使用 HTTPS(强烈推荐)

  • 使用 Let’s Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
  • 强制 HTTPS 跳转
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

3. 强化 SSL 配置

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

4. 限制请求与方法

limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

server {
    limit_req zone=req_limit burst=20 nodelay;

    if ($request_method !~ ^(GET|POST|HEAD)$ ) {
        return 405;
    }
}

5. 禁止访问敏感文件

location ~ /\. {
    deny all;
}

location ~* \.(env|ini|log|sh)$ {
    deny all;
}

6. 配置安全 Headers

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Referrer-Policy "no-referrer";
add_header Content-Security-Policy "default-src 'self'";

三、Nginx 运行与权限安全

1. 使用独立用户运行

user www-data;

并确保网站目录不可写:

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html

2. 禁用不必要的模块

  • 如不需要 autoindex
autoindex off;

3. 限制客户端请求大小

client_max_body_size 10m;

四、日志与监控

1. 开启访问与错误日志

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;

2. 定期分析日志

  • 使用 goaccess
  • 或 fail2ban 防爆破

3. 安装 fail2ban

sudo apt install fail2ban

保护 SSH 与 Nginx 异常访问。


五、进阶安全(可选)

  • 使用 ModSecurity(WAF)
  • 使用 Cloudflare / CDN
  • 使用 AppArmor / SELinux
  • 定期漏洞扫描(lynis、nikto)

六、最小安全配置示例

server {
    listen 443 ssl;
    server_tokens off;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ /\. {
        deny all;
    }
}

如果你愿意,我可以:

  • 针对你的 Nginx 版本/业务类型给具体配置
  • 帮你审计现有 nginx.conf
  • 教你一键加固脚本

你可以直接把配置文件贴出来。

0 踩