【问题标题】:nginx deny based on $http_x_forwarded_for基于 $http_x_forwarded_for 的 nginx 拒绝
【发布时间】:2021-12-27 21:21:57
【问题描述】:

我在 openshift 中有一个 nginx 容器。我正在尝试限制来自外部 IP 的访问,更具体地说,限制不在 10.X.X.X 范围内的任何内容。

这是我的配置文件

http {
    ....
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    ....

    }
    server {

        listen 8080;
        server_name app.okd.company.com;
        allow 10.0.0.0/8;
        deny all;
        location / {
        proxy_pass http://app/;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_redirect off;
        }

        location /static/ {
        autoindex on;
        alias /app/static/;
        }
    }

连接是允许的,无论是私人的还是外部的。这是一些日志。

10.129.2.1 - - [16/Nov/2021:19:28:57 +0000] "POST /graphql/ HTTP/1.1" 200 53384 "https://app.okd.company.com/" "Mozilla /5.0(X11;Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0" "10.3.16.158"

10.131.2.1 - - [16/Nov/2021:19:42:56 +0000] "POST /graphql/ HTTP/1.1" 200 53384 "https://app.okd.company.com/" "Mozilla /5.0 (X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0" "73.177.XXX.XXX"

第一个日志似乎允许私有 IP 连接,这是意料之中的,但第二个日志仍然被允许。我不知道为什么它没有阻塞。

编辑:

我意识到 remote_addr 在私有 IP 范围内。我不在乎它使用哪个代理访问我可以控制的 nginx。我只关心origin/http_x_forwarded_for。有没有一种方法可以允许或拒绝基于此

【问题讨论】:

  • 你的第二个日志IP 10.131.2.1 不是属于10.0.0.0/8 子网以及第一个10.129.2.1 一个吗?
  • 是的,10.131.2.110.0.0.0/8
  • 所以它检查的ip是第一个ip,而不是日志末尾的IP?在这种情况下,73.177.***.***
  • 继续挖掘,看起来我正在尝试基于 http_x_forwarded_for 进行阻止

标签: nginx openshift okd


【解决方案1】:

要将http_x_forwarded_for 用作真实IP,您应该在服务器配置中进行设置。

...
    server {
        set_real_ip_from 10.0.0.0/8;
        real_ip_header X-Forwarded-For;
...

set_real_ip_from1 不是可选的。它需要包含所有可能成为转发代理的地址

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    相关资源
    最近更新 更多