gygy
(ss ss)
1
如字面意思,类似‘敲门’,只是这里敲的是‘端口’,而且需要按照顺序‘敲’端口。如果敲击规则匹配,则可以让防火墙实时更改策略。从而达到开关防火墙的目的。
例如,在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
linuxrm
(linuxrm)
2
只能在RouterOS 中使用吗?其他系统上怎么用
home
(Home)
3
有点意思,第一次听说,涨见识了,谢谢。但没有用ros,不知道有没有服务器端的实例?
gygy
(ss ss)
4
这个是防火墙的知识。适用于其他路由器。我只是在ros实现而已,比较简单。其他路由器懂原理即可模仿。
home
(Home)
6
我问了一下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
gygy
(ss ss)
19
配合下其他安全措施 很安全了。
比如限制一切外来端口、非法登录和日志 微信提醒。
1996cyj
(james)
20
之前曾经想过,写一个cf worker,正常访问都是404,访问一个生成的随机uuid的路径时调用cf的api把对应的ip放行或者执行一些其他操作。由于使用https,路径不会被泄露,并且也没有暴露服务器IP。但是后面直接上了cf的zero trust,就没有必要自己搞了。