周末想用最近学的 Rust 来练手一下,于是参考一个很古老的 C 语言实现的端口敲门程序 knock,用 Rust 实现了一个版本。
Port Knocking 是一种网络安全技术,通过对服务器上的一系列预定义端口进行特定顺序的“敲门”(即发送数据包)来触发服务器上的一种反应,通常是打开一个原本关闭的端口,从而允许发起敲门序列的客户端建立连接。这种方法的优点在于,对外界而言,受保护的服务端口在没有接收到正确的敲门序列之前都是不可见的,从而增加了系统的安全性。
这个工具分为客户端和服务器端两部分:
服务器端 (knockd): 在服务器上运行,负责监听预设的一系列端口上的敲门尝试。当它检测到来自同一 IP 的特定序列时,会执行配置文件中定义的命令,如修改防火墙规则来允许来自该 IP 的连接。
客户端 (knock-cli): 用于发起敲门序列。用户可以通过客户端配置文件指定目标服务器地址和敲门的端口序列。执行敲门动作后,如果服务器端正确识别了敲门序列,客户端的 IP 地址将被允许访问原本隐藏或受限的服务。
项目地址: https://github.com/TimothyYe/knock
欢迎 Star 和贡献 Pull Request.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.