玖叶教程网

前端编程开发入门

2020年 Nginx 最新安全加固及策略配置示例

本文介绍如何通过优化 Nginx 配置,提高 Nginx Web 服务器的安全性和用户访问效率

配置

 http {
     server_tokens off;      # 隐藏 nginx 版本号
     autoindex off
     # 避免点击劫持
     add_header X-Frame-Options "SAMEORIGIN";    
     # 防止 XSS 攻击
     add_header X-XSS-Protection "1; mode=block";
     # 禁止嗅探文件类型 
     add_header X-Content-Type-Options "nosniff";
 
     limit_conn_zone $binary_remote_addr zone=z1:8m;    # 根据客户端 Ip 限制并发连接数
     limit_conn_zone $server_name zone=z2:16m;   #  根据nginx 虚拟服务器名称限制并发连接数
     limit_req_zone $binary_remote_addr zone=z3:32m rate=20r/s; # 根据客户端 Ip 限制平均每秒的请求数
     
     # 限制缓冲区大小, 防止缓冲区溢出
     client_body_buffer_size 1K;
     client_header_buffer_size 1k;
     client_max_body_size 1k;
     large_client_header_buffers 2 1k;
     client_body_timeout 10;
     client_header_timeout 10;
     keepalive_timeout 20 20;
     send_timeout 10;
 
 ?
     server {
         listen       443 ssl;
         server_name  www.test1.com;
         root         /opt/www/www.test1.com;
 ?
         ssl_certificate "/opt/www/www.test1.comssl/ssl/www.test1.com.pem";
         ssl_certificate_key "/opt/www/www.test1.com/ssl/www.test1.com.key";
         ssl_session_cache shared:SSL:1m;
         ssl_session_timeout  10m;
         ssl_ciphers HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers on;
 ?
         location / {
             # 限制请求方法
             if ($request_method !~ ^(GET|POST)$ ) {
                 return 405;
             }
             # 限制特定 user-agent
             if ($http_user_agent ~* ApacheBench|wget|curl|python-requests|Scrapy|nmap|perl|ruby|bash|httpclient) {
                 return 406;
             }
             # 防止 http头攻击漏洞
             if ( $host !~* 'test1.com' ) {
                 rewrite ^/(.*)$ http://test1.com/$1 permanent;
             }
             # url 参数过滤敏感字
             if ($query_string ~* "union.*select.*\(") {
                 rewrite ^/(.*)$  $host  permanent;
             }
             if ($query_string ~* "concat.*\(") {
                 rewrite ^/(.*)$  $host  permanent;
             }
 ?
             limit_conn z1 10;   # 同一IP同一时间只允许10个并发连接
             limit_conn z2 3000;   # 限制某一 nginx 虚拟服务器的总连接数 3000
             limit_rate 300k;     # 限制单个连接带宽为 300k
             limit_req zone=z3 burst=30 nodelay;  # 限制每秒20并发请求 + 30个请求排队,其余连接直接拒绝
 ?
             deny 192.168.31.0/24;  # 拒绝 IP 段
             allow 192.168.32.0/24; # 允许 IP 段
 ?
             # 清除不安全的HTTP响应头, 需要安装 ngx_headers_more 模块
             more_clear_headers "X-Powered-By";
             more_clear_headers "Server";
             more_clear_headers "ETag";
             more_clear_headers "Connection";
             more_clear_headers "Date";
             more_clear_headers "Accept-Ranges";
             more_clear_headers "Last-Modified";
 ?
         }
         # 图片防盗链, referers 验证, 仅允许如下指定域名访问 images 路径
         location /images/ {
             valid_referers none blocked www.test1.com test1.com;
             if ($invalid_referer) {
                 # 返回状态码 407
                 return 407;
                 # 或重定向请求到某特定图片
                 # rewrite ^/images/.*.(gif|jpg|png)$ /static/defaults.jpg last;
             }
         }
         # 静态资源
         location ~* \.(js|css|flash|media|jpg|png|gif)$ {
             # 缓存30天
             add_header Cache-Control "max-age=2592000";
         }
         # 静态页面
         location ~* \.html$ {
             # 不缓存
             add_header Cache-Control "no-cache";
         }
 ?
     }
 }
 ?

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言