ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Knock 用法总结

2026/8/11 10:11:38 拓冰建站 浏览量
Knock 用法总结 成事不说遂事不谏既往不咎。导航1 工具介绍2 示例配置3 杂七杂八1、工具介绍knock 是一个 Linux 下的“端口敲门Port Knocking” 服务它的主要作用是通过监听特殊端口访问顺序动态修改防火墙规则从而隐藏真实服务的端口。工作原理它相当于是一个数据包监听器会时刻监听指定的网卡捕获 TCP/UDP 包。对于捕获到的每一个数据包它都会检查包的目的端口、TcpFlag、以及包的到访顺序若成功匹配到了配置文件中指定的规则便开始执行配置文件中指定的 command 命令。2、示例配置注意安装 knock 服务之后首先确保防火墙的 INPUT 链的策略是不是 DROP若是 ACCEPT 则 knock 是无法发挥其真正作用的因为 iptable 默认放行了所有的包。注1iptables 防火墙 INPUT 链的默认策略修改命令iptables -P INPUT DROP。2不建议通过添加丢弃全部包规则的方式处理iptables -A INPUT -j DROP因为配置规则先后顺序的原因这样做会导致后面添加进来的 ACCEPT 规则无法生效。【1】手动关闭开启目标端口需要敲一下关闭目标端口也需要敲一下。[options] #UseSyslog # 日志被统一保存在了 /var/log/syslog 中 Interface eth0 logfile /var/log/knockd.log [openSSH] sequence 7000,8000,9000 seq_timeout 10 tcpflags syn command /sbin/iptables -A INPUT -s %IP% --dport 22 -j ACCEPT [closeSSH] sequence 9000,8000,7000 seq_timeout 10 tcpflags syn command /sbin/iptables -D INPUT -s %IP% --dport 22 -j ACCEPT【2】自动关闭开启目标端口需要敲一下在等待 cmd_timeout 秒之后knock 会自动关闭目标端口。[options] logfile /var/log/knockd.log Interface eth0 [opencloseSSH] sequence 2222:udp,3333:tcp,4444:udp seq_timeout 15 tcpflags syn,ack start_command /usr/sbin/iptables -A INPUT -s %IP% -p tcp --syn -j ACCEPT cmd_timeout 600 stop_command /usr/sbin/iptables -D INPUT -s %IP% -p tcp --syn -j ACCEPT3、杂七杂八1python 版的 knock 客户端可适用于 Windowsknock2knock 的替代品fwknop3如何判断通过 knock 客户端python knock.py -v 1.1.1.1 7000 8000 9000敲击的包是否被 knock 服务端接收到可通过journalctl -u knockd -f动态查看其日志成功示例如下图4knock 的 command 不光可以执行 iptables 规则还可以让其执行其它的命令。于是乎我们似乎就可以借助 knock 的这个功能来实现一些通过网络触发事件的任务。不光可以执行 iptables 规则还可以让其执行其它的命令。于是乎我们似乎就可以借助 knock 的这个功能来实现一些通过网络触发事件的任务。我的博客园