前言:被端口扫描扫麻了
因为临时外出远程控制宽带下面的一台电脑,就偷懒直接映射了3389端口。过了几天忘了关,回来一看电脑被锁着了,显示"账户引用账户当前已锁定,且可能无法登录",就是被远程尝试密码次数过多锁住了,虽然是强密码,但还得进PE改管理员改安全策略才进去了。
开常用端口映射固然不安全,但天天被扫也很烦,不如就直接弄个蜜罐把扫描的IP收集起来,一扫就拉黑舒服了。
实现:利用ipset和动作-j SET
我想的是写一个脚本部署在路由器/VPS上的,尽可能简单轻量和兼容,加入开机启动运行一次就可以,因此最基本的思路就是:创建一个ipset,谁扫了我的常用端口,就把他加入这个ipset(利用iptables的动作-j SET),然后在入站对ipset里面的IP全部DROP掉。
一个比较简单的例子是这样的,假设公网IP的网口是eth0:
Flytrap —— 一个简单的蜜罐防火墙脚本
脚本可从Github下载: https://github.com/kkkgo/Flytrap
Flytrap,一个简单的蜜罐防火墙脚本。如其名字,就像一个捕蝇草,抓住来扫端口的IP地址捣蛋鬼,拉黑他DROP掉!
脚本配置项:
改好脚本直接执行sh flytrap.sh
就可以帮你加上规则。加入开机运行一次即可。
脚本还有提供了其他操作命令:
如果需要修改端口trap_ports
,修改完了直接执行即可,会自动清除旧规则。
如果要指定端口范围可以用冒号,比如trap_ports="1:1024,3306,3389"
如果需要修改接口名wan_name
,修改前可以执行sh flytrap.sh clean
清除相关接口的规则。
建议设置一些unlock
选项的时间,存太多旧数据意义不大。
脚本仅需依赖ipset和iptables命令。一些系统可能自带的防火墙命令是nft,由于nft并不像iptables那样有默认的表,可以根据提供的脚本和思路,按需修改。
注意事项
一些远程rdp客户端似乎会默认主动尝试3389端口导致把自己锁外面了,如果你有用到rdp的话,建议3389不要加到里面,rdp使用较高位端口,比如12388,并且把相邻的端口加入到陷阱(比如12387和12389)。