具有HMAC-PSK身份验证的UDP端口敲门套件
pyknock的Python项目详细描述
爆震
具有HMAC-PSK身份验证的UDP端口敲门套件。一旦接收到用有效的预共享密钥签名的有效数据包,它就会运行打开或关闭访问的命令。命令应由用户通过服务器命令行指定。服务器允许在配置的命令中使用替换占位符:
$ip
-签名数据包中提到的IP地址$af
-ip地址类型:inet
或inet6
$cmd
-请求的操作:open
或close
示例见用法。
主旨
在此应用程序中,选择udp数据报是有原因的。防火墙计算机的典型配置只允许将数据包发送到某些公共端口,并将数据包发送到所有其他端口。使用udp外部观察员无法区分被接受的包和被防火墙丢弃的包。因此,如果防火墙配置将除了数据包以外的所有udp数据包丢弃到pyknock端口,则外部观察者甚至无法检测到有什么东西在等待magic数据包。因此,它可能被用来完全隐藏未经验证的对等网络的机器。此外,它还可以作为经典的端口敲门解决方案,为敏感的网络应用程序添加另一个保护层。
功能
- 使用经过加密身份验证的消息。
- 抗重放攻击。
- 后量子就绪密码(HMAC-PSK和SHA-256)。
- 完全适用于用户空间。甚至可以作为非特权用户运行。
要求
只需要Python2.6+。还支持Python3。
安装
把文件放在任何你想运行的地方。或者使用pip install pyknock
将其作为python包安装到系统中。脚本应在标准二进制路径上可用。
用法
服务器示例:
pyknock-server MySecretPSK 'ipset add -exist myallowedset $ip timeout 3600''ipset del -exist myallowedset $ip'
客户示例:
pyknock-client open my-protected-host.com MySecretPSK
NAT背后的客户端示例:
pyknock-client -S $(curl -s https://canihazip.com/s) open my-protected-host.com MySecretPSK
有关更多选项,请参见帮助。