有些人会更改自己服务器上的 SSH 端口,以增加自动扫描脚本或恶意程序找到它的难度。虽然这通常被视为一种通过隐藏实现安全的做法,但它确实能有效减少你在 /var/log/auth.log 中常见的大量自动登录尝试。
不过,如果我们能把这件事推向一个荒谬的极端呢?如果我们能使用通常作为第二因素验证码用于登录网站的 TOTP 代码,来实际知道 sshd 服务器正在监听哪个端口呢?
为此,我带来了 totp-ssh-flux,一种确保你的 sshd 端口每 30 秒变化一次的方法,并可能给你的对手带来短暂的小挫折。
演示:

上面你可以看到我的手机(使用通用 TOTP 客户端)生成代码,然后我可以用这些代码作为端口号 SSH 到服务器上。
背后的软件相当简单,它在一个循环中执行以下操作:
有趣的是,由于这是在 PREROUTING 中完成的,即使代码过期,已建立的连接仍保持连接。
在撰写本文时,该项目只是一个单一文件。你需要安装 golang,然后执行 go get 和 go build。
以 root 身份运行该程序(它需要这样做,抱歉,因为它要编辑 iptables)。
首次运行时,程序会在 /etc/ssh-flux-key 中为主机生成一个令牌(你可以使用 -keypath 选项更改路径),然后你可以将其输入到手机或其他客户端中。
你可以通过运行 watch iptables -vL -t nat 并等待 iptables 规则被插入和移除来确认其工作正常。
想看到更多类似疯狂的东西?在 Twitter 上关注我 @benjojo12