远程桌面守护者,3389马后炮,3389看门狗。
这个软件是用于防守远程桌面的,目的在于加强服务器安全,防止别有用心的人登录你的服务器3389。
防御原理:利用Windows系统日志产生的 登录成功4624事件 和 登录失败4625事件,并判断相关的IP、地理位置等来执行相关操作,简单说就是对方IP不是允许的范围,则拉黑它,因为正常用户不会去登陆你的3389(当然,对于正常服务器来说,这样可能会误伤这个IP下的所有用户,这个就需要自行斟酌了。)
为什么说是马后炮?因为日志的产生是在结果之后,也就是说,对方已经登录进来了,然后才产生的日志,并不能在对方登录之前拦截,因此是被动的防御。
其实这个想法很久之前就有了,Linux上有个fail2ban,但是Windows上我没有找到类似的,所以按照自己的想法做了这个。因为要放到服务器上用,所以开源了。其实按照这个思路自己做个也很容易。
其实当时做的时候,还有另一种思路,但是我实现不了,思想就是hook系统进程之类的,hook关键的对比call,拿到对方登录输入的账号密码等,此时判断对方IP,不合法则直接返回错误,这就相当于主动防御了,更加安全,但是成本太高,期待哪位大佬实现一下。
另外就是火绒的系统防御还是啥的,会有这种提示,某个“ip触犯远程WMI调用,已阻止”之类的,但是却没有后续操作,比如直接将IP拉黑等等。
做出来一年多了,断断续续改了好多地方,目前不光3389,别的形式的登录也会产生这俩事件,后来就加上了一并处理。
现在一天一个服务器可能就得面临十几次的非法访问,国外IP居多。
软件的功能及设置很简单,基本都有对应的说明,但是还是得强调,不要设置错了,不然可能你就无法登录服务器了!
建议改个迷惑性的名字然后塞到迷惑性的目录里,这样隐蔽性比较高。
另外,最好自己审核代码自己编译。源码中的DeLog_EC.ec也是开源的,但是代码貌似找不到了,只是用来输出日志的,可以自己删了。
源码、成品等附件太大,上传阿里云了:https://www.aliyundrive.com/s/SAXe9QJRnBu
排版不会整,凑合看吧。
补充一下:
1.修改远程桌面的默认端口号,有用,但是同时也是最没用的防护,因为不管怎么改,协议不变,遍历端口号0-65535,总会识别出来的。
2.本软件会动态读取你远程桌面所使用的端口号,也就是说,修改了RDP端口号依然可以使用本软件。
3.关于端口号的高端玩法是这样的:服务器端口号改不改随意,但是可以限制客户端端口号,也就是客户端只能通过指定的端口来连接服务器的RDP端口,因为入侵者不可能知道你的服务器允许的客户端端口号。(这个主要适用于使用第三方RDP工具,可以指定出站端口号的RDP工具)
举个例子来说就是:Client通过本地12345端口 来连接 Server的3389端口,Server会检查远程Client的端口号,发现是12345,不符合设置的1234端口,则会中断远程会话。
另外关于为什么不用第三方远程桌面工具
对于我来说:1.自带的更方便,第三方的工具可能要求客户端服务端都安装之类的比较麻烦;2.服务器上还是尽可能用开源的、自带的工具比较放心;
一些仁者见仁的问题,就不一一回复了。
经过66楼大佬提醒,GitHub上有这么个开源项目:https://github.com/DigitalRuby/IPBan 如果需要保护 SSH, SMTP, databases like MySQL or SQL Server, 可以试试,他支持的更加全面。
原理都是一样的,监控系统日志。它对于第三方软件使用的端口,则是监控软件的log文件。
要说不同,就是IPBan则是后台持续运行,因为使用了系统日志监控,这和我最初的设计思路是一致的,但是后来我觉得没必要,改成了仅当日志产生后才会启动进程执行后续操作,代码里应该有注释说明。另外就是,不知道它是不是支持地理位置限制啥的。总之,各有优缺,各取所需吧~