虽然我还没有部署它,但我知道很多人已经部署了它。他们中的每一个人都注意到,SSH 蛮力攻击等事件消耗的带宽量因此而显着减少。
但是,这并不是说没有缺点。AFAIK,没有可用的基于内核的端口敲击实现,对我来说,这将是采用的真正关键。端口敲门守护程序依赖于从防火墙系统读取失败(和过滤/禁止)的日志文件条目。这一切都很好,但如果文件系统已满,会发生什么?当守护进程因为一些失控的进程耗尽系统的 RAM 和交换而被杀死时会发生什么?如果这两件事中的任何一个都依赖于其他东西并停止工作,会发生什么?您很可能最终会得到一台必须物理访问的服务器。这可能会比合理的成本更高,
我可以说的一件事是它不是“通过默默无闻的安全”。端口敲门是一种身份验证形式,与任何身份验证系统一样,它可以根据需要变得简单或复杂。可以完成诸如“敲击端口 10,000 + realPortNumber”之类的简单操作,这相当于一个微不足道的中断,或者端口敲击本身可能用于传输某种形式的真实身份验证(例如,给定 1 个 AES 编码数据块)由其他方法派生的密钥)。但是,使用端口敲击来传输大量数据是不可行的,因为它比仅发送单个数据包花费的时间要长得多,而且如果数据包是通过 TCP 传输的,那么至少可以知道它是否被成功接收或遇到某种形式的错误。
然而,这带来了一个有趣的问题,即如何管理日志文件——用户态实现主要需要日志文件来确定是否已成功发送敲门,如果这些日志泄露会发生什么?身份验证数据变得已知,这显然不是一件好事。
我不能告诉你是否在你的设置中使用端口敲门。我还没有,我也不是 100% 肯定我会。对我来说,使用基于强密码学(例如 PKI 基础设施)的强身份验证系统比使用端口敲门更有意义。此外,无论如何,添加单点故障来访问关键基础设施对我来说似乎是一个坏主意,并且更难以通过任何形式的保证来正确支持。不过,这同样是基于端口敲门软件未在操作系统内核级别与防火墙集成的概念;如果这种情况发生变化,我也可能会改变我对使用它的感觉。