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; # 限制单个连接使用的带宽
        }
    }
}
相关推荐
开发小程序的之朴23 分钟前
认识安企CMS - 系统概述
nginx·golang·系统架构
想你依然心痛30 分钟前
RT-Thread组件生态:SAL网络框架与AT组件实战——网络抽象、AT指令
网络·arm开发·at·sal
微信开发api-视频号协议31 分钟前
Codex++安全边界探秘:从模型能力到风险防御
前端·安全·微信·企业微信
2401_8415851839 分钟前
防破 · 稳定 · 易用——文心云网络验证,为您的软件商业化保驾护航
网络
枝头玉42 分钟前
新160个CrackMe048-monkeycrackme1、049-THraw-crackme8、050-daxxor逆向分析
安全·逆向·crackme·reserve
星恒讯工业路由器1 小时前
公网IP、NAT、端口映射:外网访问家里的“通关攻略”
网络·智能路由器·信息与通信·nat·端口映射·公网ip
小蜗牛的路1 小时前
使用OpenSSL生成本地证书https+nginx
网络协议·nginx·https
维基框架1 小时前
Claude Mythos Preview 发布后严重漏洞激增:安全还是营销?
人工智能·安全
前端炒粉1 小时前
个人简历面经总结二
前端·网络·vue.js·react.js·面试
技术不好的崎鸣同学1 小时前
[MRCTF2020]PYWebsite 思路及解法
安全·web安全