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


    目录

    1、隐藏版本号

    2、配置错误页面重定向

    3、添加header防止XSS攻击

    4、利用referer图片防盗链

    5、拒绝某些user-agent

    6、限制HTTP请求方法

    7、nginx开启https

    8、控制迸发连接数


    1、隐藏版本号

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

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

    1. [root@localhost ~]# curl -I 192.168.6.116
    2. HTTP/1.1 200 OK
    3. Server: nginx/1.20.1
    4. [root@localhost ~]# vim /etc/nginx/nginx.conf
    5. http {
    6. server_tokens off;
    7. [root@localhost ~]# systemctl restart nginx.service
    8. [root@localhost ~]# curl -I 192.168.6.116
    9. HTTP/1.1 200 OK
    10. Server: nginx

    2、配置错误页面重定向

    1. http {
    2. ...
    3. error_page 401 /401.html;
    4. error_page 402 /402.html;
    5. error_page 403 /403.html;
    6. error_page 404 /404.html;
    7. error_page 405 /405.html;
    8. error_page 500 /500.html;
    9. ...
    10. }

    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示例:

    1. location / {
    2. add_header X-Frame-Options "SAMEORIGIN";
    3. add_header X-XSS-Protection "1; mode=block";
    4. add_header X-Content-Type-Options "nosniff";
    5. }

    4、利用referer图片防盗链

    说明:

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

    Nginx校验referer配置示例:

    1. location /images/ {
    2. valid_referers none blocked <domain_name> <domain_name>;
    3. if ($invalid_referer) {
    4. return 403;
    5. }
    6. }

    5、拒绝某些user-agent

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

    Nginx拒绝User-Agent配置示例:

    1. if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl){
    2. return 444;
    3. }

    6、限制HTTP请求方法

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

    Nginx限制HTTP请求方式示例:

    1. if ($request_method !~ ^(GET|POST)$ ){
    2. return 405;
    3. }

    7、nginx开启https

    1. server {
    2. listen 443;
    3. server_name ;
    4. # 开启https
    5. ssl on;
    6. # 配置nginx ssl证书的路径
    7. ssl_certificate ;
    8. # 配置nginx ssl证书key的路径
    9. ssl_certificate_key ;
    10. # 指定客户端建立连接时使用的ssl协议版本
    11. ssl_protocols TLSv1.2;
    12. # 指定客户端连接时所使用的加密算法
    13. ssl_ciphers HIGH:!aNULL:!MD%
    14. }

    8、控制迸发连接数

    说明:

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

    Nginx限制并发数配置示例:

    1. http {
    2. limit_conn_zone $binary_remote_addr zone=ops:10m;
    3. limit_conn_zone $server_name zone=coffee:10m;
    4. server {
    5. listen 80
    6. server_name ;
    7. ...
    8. location / {
    9. limit_conn opos 10; # 限制单一IP来源的连接数为10
    10. limit_conn coffee 2000; # 限制单一虚拟服务器的总连接数为2000
    11. limit_rate 500k; # 限制单个连接使用的带宽
    12. }
    13. }
    14. }

  • 相关阅读:
    GPT-4 及更高版本:大型语言模型的力量
    Cloudera Manager环境准备【一】
    Redis缓存数据库-快速入门
    阿里云服务器添加安全组和防火墙规则
    Java集合05:Map接口
    【机器学习基础】无监督学习(5)——生成模型
    MVCC
    SpringCloud - Config分布式配置中心
    dolphinscheduler3.0.1功能梳理
    【JAVA】-- setBorder
  • 原文地址:https://blog.csdn.net/youcan_doit/article/details/134036630