Nginx 强化防范 HTTP 伪请求头攻击 - 汇站网

Nginx 强化防范 HTTP 伪请求头攻击

2023-11-12 0 1,121

前言:

在查看 nginx 日志时,经常会发现一种攻击方式,攻击者不使用 GET 或 POST 方法,而是使用了一个 16 进制伪码:\0x01 作为请求方法。这种攻击的目的是使服务器溢出,并导致大量的 400 bad request 包外流。因此,最好的方式来应对这种攻击就是直接断开连接。

Nginx 强化防范 HTTP 伪请求头攻击

配置方式

下面代码放进 http{ }段内

 map $request_method $ban_method{
    default 1;
    GET 0;
    POST 0;
}  

下面代码放进 server{}段内

 if ( $ban_method = 1 ) {
    return 444;
}  

444: Nginx上的 HTTP 服务器扩展。服务器不向客户端返回任何信息,并关闭连接,以防止恶意软件的威胁。

map 指令说明:
map 指令是由 ngx_http_map_module 模块提供的,默认情况下,安装 nginx 时会自动安装该模块。

map 的主要作用是创建自定义变量,通过使用 nginx 的内置变量,匹配特定规则,如果匹配成功,则将某个值设置给自定义变量。而这个自定义变量可以在其他地方使用。

下面是一个例子,可以更清楚地理解:

场景:匹配请求的 URL 参数,如果参数是 debug,则设置$foo 为 1,否则默认设置$foo 为 0。

map $args $foo {
    default 0;
    debug   1;
}   

解释:

$args 是 nginx 内置变量,就是获取的请求 url 的参数。 如果 $args 匹配到 debug 那么 $foo 的值会被设为 1 ,如果 $args 一个都匹配不到 $foo 就是 default 定义的值,在这里就是 0

map 语法
map $var1 $var2 {…}

map 指令的三个参数:

1、default : 指定源变量匹配不到任何表达式时将使用的默认值。当没有设置 default,将会用一个空的字符串作为默认的结果。

2、hostnames : 允许用前缀或者后缀掩码指定域名作为源变量值。这个参数必须写在值映射列表的最前面。

3、include : 包含一个或多个含有映射值的文件。

在 Nginx 配置文件中的作用段: http{} ,注意 map 不能写在 server{} 否则会报错
map 的 $var1 为源变量,通常可以是 nginx 的内置变量,$var2 是自定义变量。 $var2 的值取决于 $var1 在对应表达式的匹配情况。 如果一个都匹配不到则 $var2 就是 default 对应的值。

一个正则表达式如果以 “~” 开头,表示这个正则表达式对大小写敏感。以 “~*”开头,表示这个正则表达式对大小写不敏感。

 map $http_user_agent $agent {
    default "";
    ~curl curl;
    ~*apachebench" ab;
}  

正则表达式里可以包含命名捕获和位置捕获,这些变量可以跟结果变量一起被其它指令使用。

 map $uri $value {
    /abc                       /index.php;
    ~^/teacher/(?<suffix>.*)$  /boy/;
    ~/fz(/.*)                  /index.php?fz=1;                           
}  

注意:不能在 map 块里面引用命名捕获或位置捕获变量。如~^/qupeicom/(.*) /peiyin/$1; 这样会报错 nginx: [emerg] unknown variable

注意二:如果源变量值包含特殊字符如‘~’,则要以‘\’来转义。

  map $http_referer $value {
    Mozilla    111;
    \~Mozilla  222;
} 

源变量匹配表达式对应的结果值可以是一个字符串也可以是另外一个变量。

 map $http_referer $value {
    Mozilla    'chrom';
    \~safity    $http_user_agent;
}  

实例(一)

使用 map 来实现允许多个域名跨域访问的问题
如果是允许单域名跨域访问直接配置就行了,如下:

# 这些配置可以写在 http{} 或者 server{} 都是支持的。
add_header Access-Control-Allow-Origin “http://www.tutu.com”;
add_header Access-Control-Allow-Methods “POST, GET, PUT, OPTIONS, DELETE”;
add_header Access-Control-Max-Age “3600”;
add_header Access-Control-Allow-Headers “Origin, X-Requested-With, Content-Type, Accept;

上面的配置只允许 http://www.tutu.com 跨域访问,如果要支持所有域名都可以跨域调用该站。  把上面一行改成这样,不过不推荐这样做,因为不安全

 add_header Access-Control-Allow-Origin "*";  

如果不想允许所有,但是又需要允许多个域名,那么就需要用到 map

 map $http_origin $corsHost {
    default 0;
    "~https://www.huizhanii.com/" https://www.huizhanii.com/;
    "~https://www.huizhanii.com/" https://www.huizhanii.com/;
    "~https://www.huizhanii.com/" https://www.huizhanii.com/;
}
server
{
    listen 80;
    server_name www.huizhanii.com;
    root /nginx;
    location /
    {
        add_header Access-Control-Allow-Origin $corsHost;
    }
}  

实例(二)

使用源变量(通常是 nginx 内置变量)匹配一些规则,创建自定义变量,然后在页面输出. 这通常在调试的时候非常有用

 http {
    map $uri $match {
        ~^/hello/(.*) http://www.hello.com/;
    }
}
server {
    listen       8080;
    server_name  test.hello.com;

    location /hello {
            default_type text/plain;
            echo uri: $uri;
            echo match: $match;
            echo capture: ;
            echo new: $match;
    }
}  

map 涉及的性能问题并不会对所有虚拟主机的请求都产生性能损失。只有在请求中使用到相关变量时,才会执行 map 操作。这样可以避免不必要的计算,提高性能。

当存在多个匹配的特定变量时,会按照以下顺序进行选择:

1. 没有掩码的字符串
2. 最长的带前缀的字符串,例如: “.example.com”
3. 最长的带后缀的字符串,例如:“mail.”
4. 按照配置文件中的顺序,选择第一个匹配的正则表达式。

转载请注明:汇站网 » Nginx 强化防范 HTTP 伪请求头攻击

收藏 (0)

微信扫一扫

支付宝扫一扫

点赞 (0)

免责 声明

本资源仅用于个人 学习和研究使用,禁止用于任何商业环境!

 1.  本网站名称:汇站网
 2.  本站永久网址:https://www.huizhanii.com/
 3.  本站所有资源来源于网友投稿和高价 购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务 !
 4.  本站所有资源的展示图片和信息不代表本站的立场 !本站只是储蓄平台及搬运
 5.  下载者禁止在服务器和虚拟机下进行搭建运营,本站 所有资源不支持联网运行!只允许调试,参考和研究!!!!
 6.  未经原版权作者许可,禁止用于任何 商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
 7.  为尊重作者版权,请在下载24小时 内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
 8.  若资源侵犯了您的合法权益, 请持 您的版权证书和相关原作品信息来信通知我们请来信     通知我们 我们会及时删除,给您带来的不便,我们深表歉意!
 9.  如下载链接失效、广告或者压缩包 问题请联系站长处理!
 10.  如果你也有好源码或者教程,可以 发布到网站,分享有金币奖励和额外收入!
 11.  本站资源售价只是赞助,收取费用 仅维持本站的日常运营所需!
 12.  因源码具有可复制性,一经赞助 ,不得以任何形式退款。
 13.  更多详情请点击查看

汇站网 Nginx Nginx 强化防范 HTTP 伪请求头攻击 https://www.huizhanii.com/33758.html

汇站

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

发表评论
暂无评论
  随机评论   表情   下载本站到电脑桌面


表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
登录后评论
联系官方客服

为您解决烦忧 - 24小时在线 专业服务

(汇站网)一个专注站长资源的平台网站,提供最新的网站模板和整站源码,内容包含各类精品网页模板,企业网站模板,网站模板,DIV+CSS模板,织梦模板,帝国cms模板,discuz模板,wordpress模板,个人博客论坛模板,上千种免费网页模板下载尽在汇站网.找源码上汇站.huizhanii.com