有哪些推荐的“Syn 代理服务器”?或者如何搭建一个?

有哪些推荐的“Syn 代理服务器”?或者如何搭建一个?

我的问题是:

1.) 推荐使用哪种“SYN 代理服务器”来过滤虚假 SYN 攻击并仅将“握手”有效连接转发到其后面的主机(以进行保护)。我搜索了该术语,但没有找到任何直接匹配/产品,最好是开源/免费的?

2.) 如果没有“现成的” Syn 代理服务器,我该如何构建自己的(使用 iptables?)

3.) Syn 代理服务器是否值得推荐并且有用?有人用过吗?(否则我可能会使用 syncookies...)

答案1

SYN 代理服务器只不过是一个堡垒主机,用于处理大量传入的半构建 TCP 连接,并且只传递已完成的连接。老实说,我不知道你为什么要使用它;它们仍然容易因资源耗尽而失败(它们仍然具有有限的状态空间),因此其扩展性远不如良好的 SYN cookie 实现。

出于兴趣,您能分享您推荐 SYN 代理服务器的来源吗?

答案2

您可以使用 syn 代理来代替 CPU 时间的内存,该代理向套接字地址添加一个秘密并计算其哈希值,该哈希值用作 tcp 连接的服务器的起始序列号。

状态表中不会添加任何半开连接的条目。

如果有数据包进入(设置了 ack 标志),则从客户端发送的确认号减 1 将与连接到秘密的套接字地址的哈希值进行比较。

如果数字不匹配,数据包将被丢弃。

半开连接数没有限制,只有连接速率有限制,而连接速率取决于 CPU 的能力。

答案3

需要理解的重要一点是,SYN-cookie 允许服务器响应初始 SYN 而无需创建流表条目;它消耗更少的资源并使您的服务器保持在线;性能通常提高高达 20 倍!

您真的应该阅读这些背景文章;SYNPROXY 真的值得一试。

http://rhelblog.redhat.com/2014/04/11/mitigate-tcp-syn-flood-attacks-with-red-hat-enterprise-linux-7-beta/ https://r00t-services.net/knowledgebase/14/Homemade-DDoS-Protection-Using-IPTables-SYNPROXY.html

答案4

当提出这个问题时,可能没有开源的带 SYN cookies 的 TCP SYN 代理(可能有 OpenBSD 的 PF,但它使用 SYN 缓存而不是 SYN cookies)。但是现在有了 netfilter SYN 代理:https://lwn.net/Articles/563151/

作为此 netfilter SYN 代理的替代方案,您可以编写自己的代码。我已经这样做了。我的实现是用 C 语言编写的 9000 行主要组件代码和 17000 行支持库代码。行数包括非常详尽的单元测试。我不会建议将这种“自己编写代码”的方法用于生产目的,但如果您有空闲时间,编写自己的 SYN 代理可能是学习大量 TCP 知识的好方法。我在一个多月的时间里完成了我的实现。

netfilter SYN 代理显然在一段时间前出现了一个错误,即 TCP RST 数据包未得到正确修改,无法被打开连接的主机接受。因此,如果您设法将连接代理到 SYN 代理,但另一个端点没有接受它,则连接未正确关闭,因此发起端点不会注意到它。我不确定他们现在是否已经修复了这个错误。

至于我的建议,我建议运行具有 TCP SYN cookie 支持的端点主机。这使得 SYN 代理过时。如果您绝对必须运行没有 SYN cookie 支持的端点主机,那么 SYN 代理可能是一个好主意。此外,如果您运行防火墙,它会为资源耗尽创建一个新目标:不要耗尽端点主机的资源,而是耗尽防火墙的资源。除了使用 SYN cookie 的适当 SYN 代理之外,防火墙没有其他保护自己的方法。因此,如果使用防火墙,请考虑使用具有 TCP SYN 代理支持的防火墙。OpenBSD 的 PF 具有带 SYN 缓存的 SYN 代理,它容易受到资源耗尽攻击,尽管不像没有 SYN 缓存的防火墙那么容易受到攻击。Linux 的 iptables 可以配置 SYN 代理模块,使用 SYN cookie,因此不容易受到资源耗尽攻击。

相关内容