【问题标题】:Any posible way to make secure links for multiple ips?有什么方法可以为多个 ip 建立安全链接?
【发布时间】:2018-07-09 03:11:31
【问题描述】:

我正在使用 Nginx 运行一个使用良好的 CDN 系统,我需要保护我的链接,以免它们在用户之间共享。

当前配置完美运行..

# Setup Secure Links
secure_link      $arg_md5,$arg_expires;
secure_link_md5  "$secure_link_expires$uri$remote_addr secret";

if ($secure_link = "") { return 403; }
if ($secure_link = "0") { return 410; }

然而,随着互联网变得越来越移动化,并且现在许多用户来自大学校园等,我看到大量失败的请求,并且因为请求者的 IP 在请求之间发生了变化,最终用户很恼火。

请求的 IP 几乎总是在同一个范围内,例如:

Original Request: 192.168.0.25
File Request:     192.168.0.67

我很乐意将这些安全链接锁定在一个范围内,例如

192.168.0.0 - 192.168.0.255

或者更进一步,让它变得更大

192.168.0.0 - 192.168.255.255

但我想不出在 nginx 中执行此操作的方法,或者如果 secure_link 功能甚至支持此操作。

如果这不可能 - 是否有人对如何保护限制较少但仍然相当安全的链接有任何其他想法?我曾考虑使用浏览器字符串,但我们的许多用户都有下载管理器或使用第 3 部分桌面客户端 - 所以这是不可行的。

我非常努力地尝试这样做,而不必使用任何动态代码来检查远程数据库,因为这是非常大的容量,我宁愿没有这种依赖性。

【问题讨论】:

  • 为什么不将$remote_addr 替换为另一个仅有的映射变量? IP 的前 2/3 部分?
  • 看起来它可能会起作用 - 你以前做过吗?看起来需要正则表达式来分解 IP。如果你已经完成了,你可以分享配置吗?

标签: nginx cdn


【解决方案1】:

您可以在 Nginx 中使用多个 auth 指令,因此您可以从安全链接中删除 IP 并将其指定为单独的指令。

Nginx 使用 CIDR 范围,因此对于您的示例,它只是

的一种情况
allow 192.168.0.0/16;
deny all;

【讨论】:

  • 问题是这需要是动态的 - 我在全球范围内提供数千个并发下载。
  • 哦,抱歉,当您说 The requesting IP is almost always in the same range 并引用 IP 范围时,我假设了一个可以接受的解决方案
【解决方案2】:

您可以使用地图方法

map $remote_addr $auth_addr {
    default         $remote_addr;
    ~*^192\.168\.100     192.168.100;
    ~*^192\.169     192.169;
}

然后再使用一些东西

secure_link_md5  "$secure_link_expires$uri$auth_addr secret";

我没有使用过这种方法,但我认为它应该可以工作。如果没有请告诉我

【讨论】:

  • 谢谢,我已经开始工作了,我已经在下面发布了工作配置。
【解决方案3】:

感谢@Tarun Lalwani 指出地图的想法,我成功地完成了这项工作。

# This map breaks down $remote_addr into octets 
map $remote_addr $ipv4_first_two_octets {
  "~(?<octet1>\d+)\.(?<octet2>\d+)\.(?<octet3>\d+)\.(?<octet4>\d+)" "${octet1}.${octet2}";
  default "0.0";
}


location / {
  # Setup Secure Links secure_link $arg_md5,$arg_expires;
  secure_link_md5 "$secure_link_expires$uri$ipv4_first_two_octets secret";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-10
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多