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; # 限制单个连接使用的带宽
        }
    }
}
相关推荐
yzx9910134 小时前
生活在数字世界:一份人人都能看懂的网络安全生存指南
运维·开发语言·网络·人工智能·自动化
2501_915918415 小时前
HTTPS 端口号详解 443 端口作用、iOS 抓包方法、常见 HTTPS 抓包工具与网络调试实践
android·网络·ios·小程序·https·uni-app·iphone
qq_359716235 小时前
UDP的使用
网络·网络协议·udp
嘉里蓝海7 小时前
我在嘉顺达蓝海的安全日常
安全
2301_780789667 小时前
渗透测试真的能发现系统漏洞吗
服务器·网络·安全·web安全·网络安全
嘉里蓝海7 小时前
我在嘉顺达蓝海的安全坚守
安全
天天开心a8 小时前
华为HCIP-Datacom-Core Technology H12-831 书籍目录
网络·华为
Davie_Liu8 小时前
【Docker Buildx】docker buildx本地构建多架构镜像,拉取镜像时的网络延迟问题(已解决)
网络·docker·buildx
提笔忘字的帝国9 小时前
宝塔SSL自动续签
网络·网络协议·ssl
上海云盾商务经理杨杨9 小时前
高防IP如何抵御CC攻击?2025年全面防护机制解析
网络·网络协议·tcp/ip·网络安全