通过端口敲门加强SSH 或 外部任何端口访问内网

如字面意思,类似‘敲门’,只是这里敲的是‘端口’,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。

例如,在routeros 设置ssh 两次端口敲门。

第一阶段 - 首先连接到指定的端口号,例如 7000
RouterOS 将会把触发此连接端口的 IP 放入指定的地址列表(P1-Knocking),并且只保留 30 秒或指定#的时间内。

/ip firewall filter add action=add-src-to-address-list address-list="P1_Knocking" address-list-timeout=30s chain=input dst-port=7000 protocol=tcp comment="**P1-Knocking**" place-before=0

第二阶段 - 连接到另一个指定端口号,例如 8000
基于第一阶段的地址列表,允许并且必须在这 30 秒内#或指定时间内,完成连接到第二阶段的指定端口号,将其 IP 列入另一个地址列表(P2-Trusted),并设置超时时间为 30 秒

自动允许访问:通过2次端口敲门的连接,自动加入白名单 ,并记录来源IP地址。下次可以不用再敲端口。

自动黑名单:用户2次端口敲击的端口不对 或没有在规定时间完成,自动加入黑名单 ,并记录来源IP地址,并可按需要用脚本进行微信通知非法访问记录。

当然端口敲2次,还是3次或更多次,完全是你自己定。

28 Likes

只能在RouterOS 中使用吗?其他系统上怎么用

有点意思,第一次听说,涨见识了,谢谢。但没有用ros,不知道有没有服务器端的实例?

这个是防火墙的知识。适用于其他路由器。我只是在ros实现而已,比较简单。其他路由器懂原理即可模仿。

上面给了ros的实例了。就是配置ros的防火墙。

我问了一下chatgpt4,给出来的答案可参考。
这个策略是有点意思,但还是要根据自己的实际情况改动。

涉及到的命令

sudo apt install ipset
sudo ipset create P1_Knocking hash:ip timeout 30
sudo iptables -A INPUT -p tcp --dport 7000 -m state --state NEW -j SET --add-set P1_Knocking src
sudo iptables -A INPUT -m set --match-set P1_Knocking src -p tcp --dport 22 -j ACCEPT

有意思,第一次听说这个概念

这个有意思 :100:

思路真巧妙

先马克一下

思路清齐啊

1 Like

涨知识了!

很有意思啊

这个思路好

22 Likes

有种特务接头的意思了

1 Like

这种方式可以对抗中间人重放请求吗

这个新颖,可以研究研究

这个比喻很恰当

配合下其他安全措施 很安全了。
比如限制一切外来端口、非法登录和日志 微信提醒。

之前曾经想过,写一个cf worker,正常访问都是404,访问一个生成的随机uuid的路径时调用cf的api把对应的ip放行或者执行一些其他操作。由于使用https,路径不会被泄露,并且也没有暴露服务器IP。但是后面直接上了cf的zero trust,就没有必要自己搞了。