我知道是什么Port Knocking
。但我读到过某处写的URL Knocking
。我没有找到任何有用的链接URL Knocking
。现在我真的很想知道它是什么以及它与有什么区别Port Knocking
。提前谢谢。
答案1
URL 敲击持续读取 apache(或其他 Web 服务器)的日志,如果发现某个 URL(例如https://example.com/TheSecretStringHere/
)绕过与服务器端预设的“TheSecretStringHere”字符串匹配的请求 URL,则只需通过打开对服务器端指定端口的访问来操纵防火墙规则即可。此解决方案无需任何第三方软件,只需使用操作系统实用程序即可安装。
这种方法的优点是,如果您使用https
协议,那么它可以消除中间人监视者,因为实际 URL 是不可见的,因为它是加密的。另一个优点是,它很容易根据您的工作流程实施您自己的解决方案。
缺点——一切都基于实施。
在我提供的链接中,脚本使用
tail -f
(利用)的有效功能不断读取 Web 服务器的日志通知内核文件更改通知)并使用 过滤 URL grep
。如果 URL 与秘密字符串匹配,则脚本触发某些操作。
还有一些额外的实用程序可以在用户空间中使用,比如inotifywait
可以有效地监视 Web 服务器日志,如果有任何更改,则启动一些操作(可能不仅仅是打开端口)。
Port Knocking
相比之下,通常是专用的第三方程序,并且没有中间人保护,但功能与相同URL Knocking
。
总之,如果您设置了任何可以创建日志文件和支持的 Web 服务器,https
那么 IMOURL Knocking
是按需打开端口的更安全的方式。
URL 敲击示例(来自上面的链接):
#!/bin/sh
open_port() {
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
}
close_port() {
/sbin/iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT
}
tail -n0 --follow=name /var/log/apache2/access.log |
(while read line; do
if echo $line | grep "/SOME SECRET THING/"; then
echo OPEN
open_port
sleep 60
echo CLOSE
close_port
fi
done)
剧本归功于:杰森·斯帕谢特
答案2
URL 敲击与端口敲击的理念相同,但它不是监视对一系列秘密端口的连接尝试,而是查找对一系列秘密 URL 的 HTTP 请求。它是为了以下情况而发明的:执行敲击的外部设备位于具有限制性出口规则的防火墙后面,因此它无法敲击除 80 和 443 之外的任何端口。因此,它通过 HTTP[S] 进行连接,并通过请求一系列神奇的 URL 来“敲击”。