去年夏天,别人我帮一个开淘宝店的何远朋友排查网站卡顿问题。折腾了半天,程连最后发现是接上数据库被一个陌生IP反复尝试登录,那台服务器上跑着SQL Server默认端口1433,别人防火墙形同虚设。何远他一脸茫然:“我从来没开过远程啊?程连”——问题就出在这:SQL Server默认就监听远程连接,只是接上你没意识到而已。
别人想连上你的别人SQL Server,其实就三步:知道你的何远IP、知道你的程连端口、拿到合法的接上账号密码。这三样缺一不可,别人但现实中它们往往比你想的何远更容易泄露。IP地址在公网上就像门牌号,程连扫一扫就能发现;端口默认是1433,如果你没改,等于告诉全世界“我在这儿”;账号密码就更别提了——多少人还在用sa加空密码,或者干脆把密码设成“123456”。
我见过最离谱的一次,是某公司把SQL Server直接暴露在公网,管理员账号密码是“admin/admin”。扫描工具五分钟就能扫出来,然后对方用SQL注入或者暴力破解,轻松拿到整个库。你说他们不知道风险?不,他们知道,但总觉得“不会有人专门来搞我”。可现实是,攻击者用自动化脚本每天扫描全网IP,根本不挑食。
如果你自己开了远程连接,那别人连上来就更直接了。SQL Server Management Studio(SSMS)里勾选“允许远程连接到此服务器”,再把防火墙的1433端口放行,这就等于给大门配了把钥匙。但钥匙在谁手里?如果你用Windows身份验证,那Windows账号的密码强度就决定了安全线;如果你用SQL Server混合模式,那sa账号几乎就是靶子——sa是系统管理员,权限大到能删库跑路,很多人却拿它当普通账号用。
另一个容易被忽略的入口是“命名实例”。默认实例监听1433,命名实例则用动态端口,每次启动都可能变。但有些配置会用固定端口,比如1433,反而更容易被扫到。更麻烦的是,如果你在路由器上做了端口映射,把外网的某个端口转发到内网SQL Server的1433,那别人只要扫到你的公网IP加对应端口,就能直接摸到内网数据库。
说个真实案例。有个做外贸的小公司,IT外包给了一个兼职网管。网管为了方便自己远程维护,把SQL Server的端口改成了2333,又在路由器上映射了这个端口。结果外包合同到期后,网管没删映射,新接手的人也不知道这事。半年后,公司财务数据被加密勒索,对方留言要比特币。查来查去,就是那个旧映射端口被扫描器盯上了,密码还是网管当年设的“Abc@123”。
所以,别人能连上你的SQL Server,归根结底是三个漏洞叠加:暴露面太大(IP+端口可访问)、口令太弱、权限太宽。你要真想防,别急着关远程——先改掉默认端口,再禁用sa账号,用Windows身份验证加强密码策略,最后用防火墙限制来源IP,只允许特定几个地址访问。做完这些,大部分扫描器就绕道走了。
但话说回来,如果你压根不需要远程,那就干脆别开。默认情况下,SQL Server Express版本甚至不启用TCP/IP协议,很多人装完就忘了这茬。可一旦你为了图方便勾选了“允许远程”,又不做任何加固,那等于把数据库的钥匙挂在门口。别高估自己的运气,也别低估攻击者的耐心——他们每天都在扫,哪天扫到你,只是时间问题。
顶: 71915踩: 6






评论专区