唯一标识计算机,防止黑客
Uniquely Identify Computer, prevents hackers
我完全认同这个问题的答案可能是"No."
我正在编写客户端-服务器程序的客户端部分,该程序将 运行 在可能有数千台计算机上运行,并将定期向服务器报告系统设置和配置。当计算机第一次启动时,目前客户端代码独立生成一个UUID值,并用该ID报告回服务器以唯一标识自己。服务器使用此 ID 号来识别机器,即使 IP 地址和其他相关数据发生变化。
虽然每个会话都通过 TLS 进行保护,但黑客可以轻而易举地识别协议并使用数千个新的 UUID 值向服务器发送垃圾邮件,从而诱使服务器认为网络上的新机器数量呈指数增长 - 这将最终填满数据库并触发 DoS 条件。
关于如何唯一标识 server/workstation 以致即使黑客也无法创建 "phantom" 机器的任何想法?
有什么想法吗?同样,我完全理解答案很可能是 "No"。
使用 TPM 芯片不是一个选项,主要是因为并非所有机器、体系结构或操作系统都允许此选项。
可能有更简单、更有效的方法来对您的服务器进行 DOS/DDOS。当你决定回家时要记住这一点,为此付出很多努力。
这里有一些可能(部分)有效的想法。
在全球范围内限制创建 UUID 的速度。如果您这样做,并监控您离数据库已满点有多近,您就可以领先于潜在的 DOS 向量。
严格限制由任何给定客户端 IP 地址创建的 UUID。但是,您需要注意这一点。在许多/大多数情况下,由于 HTTP 代理、NAT 等,您不会看到真实的客户端 IP 地址。
实际上有多种方法可以对请求进行速率限制。
- 您可以对请求进行计数,并在给定时间间隔内的计数超过给定阈值时拒绝它们。
- 可以记录距离上次请求的时间,如果间隔太小则拒绝请求。 (这是前一个的退化版本。)
- 您可以简单地慢慢处理请求;例如将它们放入队列中并以固定速率处理它们。
但是,您还需要注意您的防御措施不会创建替代的 DDOS 机制;例如用 UUID 请求攻击服务器以防止真实用户获得 UUID。
我完全认同这个问题的答案可能是"No."
我正在编写客户端-服务器程序的客户端部分,该程序将 运行 在可能有数千台计算机上运行,并将定期向服务器报告系统设置和配置。当计算机第一次启动时,目前客户端代码独立生成一个UUID值,并用该ID报告回服务器以唯一标识自己。服务器使用此 ID 号来识别机器,即使 IP 地址和其他相关数据发生变化。
虽然每个会话都通过 TLS 进行保护,但黑客可以轻而易举地识别协议并使用数千个新的 UUID 值向服务器发送垃圾邮件,从而诱使服务器认为网络上的新机器数量呈指数增长 - 这将最终填满数据库并触发 DoS 条件。
关于如何唯一标识 server/workstation 以致即使黑客也无法创建 "phantom" 机器的任何想法?
有什么想法吗?同样,我完全理解答案很可能是 "No"。 使用 TPM 芯片不是一个选项,主要是因为并非所有机器、体系结构或操作系统都允许此选项。
可能有更简单、更有效的方法来对您的服务器进行 DOS/DDOS。当你决定回家时要记住这一点,为此付出很多努力。
这里有一些可能(部分)有效的想法。
在全球范围内限制创建 UUID 的速度。如果您这样做,并监控您离数据库已满点有多近,您就可以领先于潜在的 DOS 向量。
严格限制由任何给定客户端 IP 地址创建的 UUID。但是,您需要注意这一点。在许多/大多数情况下,由于 HTTP 代理、NAT 等,您不会看到真实的客户端 IP 地址。
实际上有多种方法可以对请求进行速率限制。
- 您可以对请求进行计数,并在给定时间间隔内的计数超过给定阈值时拒绝它们。
- 可以记录距离上次请求的时间,如果间隔太小则拒绝请求。 (这是前一个的退化版本。)
- 您可以简单地慢慢处理请求;例如将它们放入队列中并以固定速率处理它们。
但是,您还需要注意您的防御措施不会创建替代的 DDOS 机制;例如用 UUID 请求攻击服务器以防止真实用户获得 UUID。