网络安全基础知识-nginx安全配置

admin 2022年4月1日23:32:55安全闲碎评论18 views2542字阅读8分28秒阅读模式

nginx安全配置

  • 隐藏版本号
`http {   server_tokens off;}`
  • 开启HTTPS
server {    
  listen 443;  
  server_name xxx.com;  
  ssl on;  
  ssl_certificate /etc/nginx/certs/xxx.com.pem;    
  ssl_certificate_key /etc/nginx/certs/xx.com.key;  
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!MD5;
}
  • ssl on:开启https
  • ssl_certificate:配置nginx ssl证书的路径
  • ssl_certificate_key:配置nginx ssl证书key的路径
  • ssl_protocols:指定客户端建立连接时使用的ssl协议版本,如果不需要兼容TSLv1,直接去掉即可
  • ssl_ciphers:指定客户端连接时所使用的加密算法,你可以在这里配置更高安全的算法

  • 黑白名单配置

  • 白名单配置
`location /admin/ {   allow 192.168.1.0/24;   deny all;}`
上边表示只允许192.168.1.0/24网段的主机访问,拒绝其他所有。
  • 黑名单配置
`location /uploads/ {   deny 192.168.1.0/24;   allow all;}`
`set $allow false;if ($http_x_forwarded_for = "211.144.204.2") { set $allow true; }if ($http_x_forwarded_for ~ "108.2.66.[89]") { set $allow true; }if ($allow = false) { return 404; }`
  • 账号认证
server {  
  location / {  
      auth_basic "please input user&passwd";  
      auth_basic_user_file key/auth.key;  
  }
}

  • 限制请求方法

  • server 块配置
if ($request_method !~ ^(GET|POST)$ ) {  
  return 405;
}
  • 或者
location / {
limit_except GET HEAD POST { deny all; }
}
  • 拒绝User-Agent
if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl) {    
  return 444;
}
  • 图片防盗链
location /images/ {  
  valid_referers none blocked www.xx.com xx.com;  
      if ($invalid_referer) {  
      return 403;  
  }
}
valid_referers:验证referer,其中none允许referer为空,blocked允许不带协议的请求,除了以上两类外仅允许referer为 www.xx.com或xx.com时访问images下的图片资源,否则返回403
也可以给不符合referer规则的请求重定向到一个默认的图片
location /images/ {  
  valid_referers blocked www.xx.com xx.com  
  if ($invalid_referer) {  
  rewrite ^/images/.*.(gif|jpg|jpeg|png)$ /static/qrcode.jpg last;
  }
}
  • 控制并发连接数
http {
  limit_conn_zone $binary_remote_addr zone=ops:10m;

  server {
      listen 80;
      server_name xx.com;
         
      root /home/project/webapp;
      index index.html;
      location / {
          limit_conn ops 10;
      }
      access_log /var/log/nginx/nginx_access.log main;
  }
}
limit_conn_zone:设定保存各个键(例如$binary_remote_addr)状态的共享内存空间的参数,zone=空间名字:大小大小的计算与变量有关
例如:
$binary_remote_addr变量的大小对于记录IPV4地址是固定的4 bytes,而记录IPV6地址时固定的16 bytes,存储状态在32位平台中占用32或者64 bytes,在64位平台中占用64 bytes。1m的共享内存空间可以保存大约3.2万个32位的状态,1.6万个64位的状态limit_conn指定一块已经设定的共享内存空间(例如name为ops的空间),以及每个给定键值的最大连接数
上边的例子表示同一IP同一时间只允许10个连接

  • 缓冲区溢出攻击
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;

  • Header头设置
通过以下设置可有效防止XSS攻击
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
  • 禁止访问 htaccess
location ~/.ht {
    deny all;
}
  • 禁止访问多个目录
location ~ ^/(picture|move)/ {
    deny all;
    break;
}
  • 禁止访问 /data 开头的文件
location ~ ^/data {
    deny all;
}
  • 禁止访问单个目录
location /imxhy/images/ {
    deny all;
}

*本文章仅供技术交流分享,请勿做未授权违法攻击,雨笋教育不负任何责任。具体请参考《网络安全法》。

下篇更新nginx目录结构和配置文件详解

网络安全基础知识-nginx安全配置
 领取免费学习资料
扫码咨询

原文始发于微信公众号(雨笋君):网络安全基础知识---nginx安全配置

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月1日23:32:55
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  网络安全基础知识-nginx安全配置 http://cn-sec.com/archives/862576.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: