nginx通过配置文件来进行的安全方面优化

目录

1、隐藏版本号

2、配置错误页面重定向

3、添加header防止XSS攻击

4、利用referer图片防盗链

5、拒绝某些user-agent

6、限制HTTP请求方法

7、nginx开启https

8、控制迸发连接数


1、隐藏版本号

说明: 由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。

Nginx隐藏版本信息配置示例:

bash 复制代码
[root@localhost ~]# curl -I 192.168.6.116
HTTP/1.1 200 OK
Server: nginx/1.20.1

[root@localhost ~]# vim /etc/nginx/nginx.conf
http {
   server_tokens off;
[root@localhost ~]# systemctl restart nginx.service 
[root@localhost ~]# curl -I 192.168.6.116
HTTP/1.1 200 OK
Server: nginx

2、配置错误页面重定向

复制代码
http {
...
error_page 401 /401.html;
error_page 402 /402.html;
error_page 403 /403.html;
error_page 404 /404.html;
error_page 405 /405.html;
error_page 500 /500.html;
...
}

3、添加header防止XSS攻击

说明:

  1. X-Frame-Options:标识是否允许浏览器加载frame等属性。
  • DENY:禁止任何网页被嵌入
  • SAMEORIGIN:只允许本网站的嵌套
  • ALLOW-FROM:允许指定地址的嵌套
  1. X-XSS-Protection:启用XSS过滤。mode=block标识若检查到XSS攻击则停止渲染页面
  2. X-Content-Type-Options:用来指定浏览器对未指定或错误指定Content-Type资源真正类型的猜测行为
  • nosniff:标识不允许任何猜测
  • 在通常的请求相应中,浏览器会根据Content-Type来分辨响应的类型,如果响应类型未指定或错误指定时,浏览器会启用MIME-sniffing来猜测资源的响应类型

Nginx添加Header示例:

复制代码
location / {
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";
}

4、利用referer图片防盗链

说明:

  1. valid_referers:验证referer
  • none:允许referer为空
  • blocked:允许不带协议的请求

Nginx校验referer配置示例:

复制代码
location /images/ {
    valid_referers none blocked <domain_name> <domain_name>;
    if ($invalid_referer) {
        return 403;
    }
}

5、拒绝某些user-agent

说明:禁止一些爬虫的扫描

Nginx拒绝User-Agent配置示例:

复制代码
if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl){
    return 444;
}

6、限制HTTP请求方法

说明:$request_method能获取到请求时所使用的method,应该配置只使用GET/POST方法访问,其他的method返回405

Nginx限制HTTP请求方式示例:

复制代码
if ($request_method !~ ^(GET|POST)$ ){
    return 405;
}

7、nginx开启https

bash 复制代码
server {
    listen 443;
    server_name <xxx>;
    
    # 开启https
    ssl on;
    # 配置nginx ssl证书的路径
    ssl_certificate <pem路径>;
    # 配置nginx ssl证书key的路径
    ssl_certificate_key <key路径>;
    # 指定客户端建立连接时使用的ssl协议版本
    ssl_protocols TLSv1.2;
    # 指定客户端连接时所使用的加密算法
    ssl_ciphers HIGH:!aNULL:!MD%
}

8、控制迸发连接数

说明:

  1. limit_conn_zone:设定保存各个属性状态的共享内存空间的参数
  • limit_conn_zone <属性> zone=<空间名称>:<大小>
  1. limit_conn:为已经设定zone的属性设置最大连接数
  2. limit_rate:限制单个连接使用的带宽

Nginx限制并发数配置示例:

bash 复制代码
http {
    limit_conn_zone $binary_remote_addr zone=ops:10m;
    limit_conn_zone $server_name zone=coffee:10m;

    server {
        listen 80
        server_name <server_name>;
        ...
        location / {
            limit_conn opos 10; # 限制单一IP来源的连接数为10
            limit_conn coffee 2000; # 限制单一虚拟服务器的总连接数为2000 
            limit_rate 500k; # 限制单个连接使用的带宽
        }
    }
}
相关推荐
红姐跨境书3 小时前
从零打造高性能 API 网关: Go 语言中的双缓冲 Dynamic Config 最佳实践
安全
比兔代理4 小时前
正向代理与反向代理技术辨析,为什么代理 IP 属于正向代理
服务器·网络·http·ip
Ivanqhz6 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
迪康Defender9 小时前
终端安全实战:如何高效解决企业U盘泄密与管控难题
运维·网络·安全·web安全·终端安全管理
网安小学生(兼顾数据库版)9 小时前
固件+软件供应链:ONEKEY+Mend如何实现全链路安全覆盖
网络·安全·web安全
学习中的码虫10 小时前
网络编程5
服务器·网络
GPU实战笔记10 小时前
本地跑不动 llama.cpp,临时租云 GPU 怎么搭?从启动服务到环境复用
java·服务器·网络·人工智能·深度学习·llama
珠海西格电力10 小时前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源
发量惊人的中年网工11 小时前
2026年DDoS防护方案怎么选?从攻击响应、清洗位置到成本账单,解析全球高防方案
大数据·网络·安全·ddos
Lsetea11 小时前
Nginx报No required SSL certificate was sent:mTLS客户端证书排查
运维·nginx·https·ssl·openssl