距离上次写博客已有半月之久,这半个月可谓是风波四起,狼烟弥漫。

自服务器加了fail2ban和frp的一些限制以后,这对我云服务器的攻击就日渐凋零,fail2ban封禁了200个ip后,云服务器得以免受ssh爆破之苦。


然陈年旧疾一朝爆发,当日才艺不精,意识薄弱,文档难读,无意之中,情理之间,将服务尽数以tcp协议暴露了端口,这可谓是鹰之一手。

一来,tcp服务配置起来虽是轻松方便,恰如直接运行在云服务器上一般,假以nginx反代,省去了不少前期的脑力之苦。可惜事与愿违,随着爆破程序发现并扫描,这些tcp端口难逃被检测到的命令。

二来,随着服务日益增多,tcp混为一谈的管理方法让后起的端口配置难以加入,对端口的占用也导致加入服务必须要检查端口冲突。查询端口对应的服务也是一种噩梦,维护nginx的反代的map更是令人肝胆尽碎。


于是乎,灾厄一朝而至,远道而来的ssh tcp端口由于显露了其服务的特性,被进行了爆破攻击。彼时一位刚回故乡一天,正欲发奋学习,想要搭建环境的可怜蛋,连上服务器一会就会掉线。他查询了日志,发现了很多MaxStartup的报错。

原来如此,爆破程序直接大量连接ssh进行爆破使得这位愤怒的青年被挤下线了。于是乎,他就将要开启新一轮的防御。

当然,如果继续对每个服务器的每个tcp服务都做各种限制,对于每个ssh做防护,对每种服务做限流,无异于饮鸩止渴。并且,这套建立于不成熟根基的穿透结构已是积重难返,摇摇欲坠,青年也是无力回天了。


所谓不破不立,经过详细的阅读frp的文档,这才发觉tcp也只是一个基本,更令人拍案叫绝的是frp竟可以基本替代nginx的反向代理的功能,虽然以前作者倒是也略有耳闻,然当时已觉tcp穿透已是包罗天地无需留出什么后路来。因此首先是需要调整tcp协议到http/https/tcpmux协议。

对于nginx的配置,只需要把80端口自动转发到443并自动转https,并且在卸载ssl后转发到http和https不同的端口即可。


这样,通过只开放了tcpmux端口和http/https端口即可代理全部服务。