我朋友的生日是星期五。我刚吃完饭,正要唱歌。收到商家付款失败的消息。问题是银行前端机无法与银行建立正常连接。我麻木了……这个服务器是银行亲自架设的。说实话,我很少管理:1.是Windows服务器,不熟(太菜:路窄)。2.不知道银行里装的是什么东西,动了会引起其他问题(还是太好了:怕)。3、业务量不大,平时也没什么问题(还是太好了:惯性思维)。但是出了点问题,我不得不处理它。我不唱了,跑到车库,打开电脑,开始瞎操作。先查看所有的监控数据(此时就靠它了)。首先确保CPU、内存、磁盘IO、网络等一切正常。但是发现在问题出现的时间点,前端处理器的连接数很高(也许这才是问题的症结所在)。没办法,先试试看能不能远程访问服务器,就OK了。先用查网三招:(1)打开浏览器访问域名,发现无法建立连接。(2)ping域名,发现域名可以正常解析。(3)TelnetIP+Port,发现Telnet不可达。当时没想到连接数已经用完了。然后我去寻找Windows事件日志。日志太多了,看得我头晕目眩。也就是本地端口用完了,没有多余的端口可以分配使用,会导致无法与外界通信。你是什??么意思?这是关于TCP三向握手的。当TCP客户端连接到服务器时,客户端必须分配一个动态端口,这里我继续重复。每个人都是大老板。Windows默认的动态端口范围是1024-5000,也就是只能发起4000个左右的Socket连接,第一反应就是加大动态端口分配范围(简直太聪明了)。然后我更改了注册表([HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters]),将端口范围增加到2000,并重新启动了服务器(名副其实的SRE(服务器重启引擎))。服务器重启后,应该可以正常服务了。毕竟没有重启解决不了的问题。如果有,重启几次。但这就是它的结束了吗?当然不是,你要找出为什么有这么多的联系。在正常的业务情况下,不会出现这种问题。所以我打开控制台并使用natstat-ano。不知道是不是没看到。吓了一跳,发现很多链接都是用47.95.x.x做的。我使用netstat-ano|找到“47.95.x.x”|找到/c"80"查看一下,刚启动的机器有2000多个连接,吓死我了。先找业务方确认这个IP是不是第三方的,得到明确的回答不是,我就开始慌了。然后上网查了一下,发现这个IP属于阿里云北京数据中心。一开始以为是阿里云的一些公有云服务,比如阿里云盾、云监控等(我都懂)。于是直接去找阿里,得到回复说不是阿里云盾这些服务的IP。我慌了很多,一种不好的预感在心里挥之不去。立即禁用此IP并限制在安全组中。然后从netstat-ano可以发现连接主要是通过1060这个进程建立的。uqccmg这个进程一看就是个非常规的进程(不符合常规的命名规则),当然肯定是确认的。得到准确答案后,尝试杀掉进程,杀掉再启动,杀掉再启动,麻木了。然后通过过程找到文件。看着这个非主流icon,无疑是中毒了。我试图删除该文件,但当然失败了。但是,我也知道这个进程是由.net服务托管的,所以我会停止.net服务。反正这个服务没用。停止后,进程确实可以杀掉,并没有重新启动,连接也减少了。但是,不要那么乐观……病毒仍然存在,只是消失了,仅此而已。于是只有借助杀毒软件,我下载了Tinder,发现了17个风险项目。首先,用杀毒软件查杀病毒。不知道干净不干净(菜是原罪)。现在业务可以正常使用,socket连接也正常,没有发现可疑进程。不过我一直没有想法,最好的办法就是重装,这也需要评估迁移和安装的成本,主要是不要自己安装,不知道。。。通过这次的经历,发现自己还是太优秀了:1.没有做好系统安全加固,没有安装杀毒软件等,主要是阿里云的云盾太贵了...2.没有检查服务器频繁,并没有做好日常巡查。3、不需要开放的端口都开放了(银行开了,我不敢关,怎么办?)。4.对Windows服务器的自然反抗。
