服务器遭受攻击,很多时候并不是因为主动招惹了其他人。公网上大量扫描工具会持续全网探测,扫描到开放端口,就尝试弱密码登录,一旦验证成功就能进入系统。或是你的IP被识别存在活跃流量,各类自动化脚本就会轮番发起试探。
流量型攻击最为常见,目标就是占满带宽,阻断正常用户访问。SYN Flood属于老牌攻击手段,攻击者发送大量半连接请求,服务器完成应答之后,攻击端不再做确认,连接队列被占满,新的合法请求无法建立连接。UDP Flood方式更加粗暴,持续向目标端口推送UDP数据包,直接耗尽带宽资源。反射放大攻击,攻击者伪造你的IP去向DNS、NTP、memcached这类公共服务发起请求,这类服务返回的响应包,体积远大于原始请求,有的能放大几十甚至上万倍,攻击者用很低成本,就能把超大流量导向你的服务器。

连接层攻击专门消耗服务器并发连接。单台服务器能够承载的并发连接存在上限,攻击者控制大量肉鸡,持续和服务器建立连接,连接建立后不执行任何操作,只是保持挂起状态。正常用户发起连接请求,系统没有多余资源分配,网站直接无法访问。这类攻击产生流量不大,但识别难度高,请求行为接近真实访客,防火墙很难区分。
应用层攻击隐蔽性更强。CC攻击就是典型,攻击者模拟普通用户请求,反复刷新搜索页面、登录入口、动态接口,每一次请求都会消耗CPU资源,触发数据库查询。流量数值看起来不高,服务器负载却快速飙升。慢速攻击原理类似,Slowloris发送HTTP请求时刻意放慢传输速度,单个请求头发送耗时长达数分钟,服务器需要持续等待,连接池慢慢被耗尽。慢速POST攻击,会把请求体拆分成多段逐步传输,服务器持续等待剩余数据,资源被持续占用。
漏洞利用是另一类入侵途径。Web层面的SQL注入、文件上传、命令注入、反序列化漏洞,攻击者利用这类漏洞拿到数据库权限,或是直接执行系统指令。服务侧漏洞同样很多,Redis未授权访问、Elasticsearch未授权访问、Docker远程API未授权,这类服务直接暴露公网,等同于对外敞开大门。零日漏洞风险更高,厂商还没有发布修复补丁,攻击者就已经利用工具批量扫描。
暴力破解行为一直持续存在。SSH、RDP、FTP、MySQL、Redis,端口对外开放,就会有程序不断尝试账号密码。跑完一套密码字典就切换下一组,当日没有试完会持续重试。大量服务器被入侵,根源就是弱密码,或是常年没有修改的默认口令。
入侵成功之后,攻击者一般会部署恶意软件或是勒索程序。植入挖矿程序,占用服务器CPU与算力为攻击者挖矿。或是部署勒索软件,加密服务器内数据,索要赎金。还有攻击者将服务器作为跳板,攻击其他设备,或是当作代理节点售卖。你的服务器在不知情的情况下,沦为僵尸网络的一部分。
服务器场景同样会出现中间人攻击与流量劫持。ARP欺骗在局域网伪装网关,劫持网络流量。DNS劫持修改域名解析记录,用户访问域名会跳转至其他页面。BGP劫持影响范围更大,攻击者在路由层面宣告你的IP段,将全网流量引流至自身网络。这类攻击需要一定网络资源,门槛偏高,但一旦实施,造成的影响范围很大。
供应链攻击在近几年越来越受重视。攻击者不直接攻击你的服务器,转而攻击你依赖的第三方组件、开源库、运维工具。你在更新组件过程中同步安装恶意代码,攻击者借此绕过外层防护。这类攻击实施门槛高,一旦入侵成功,破坏力极强。
还有一类行为不属于传统攻击,但会大量消耗服务器资源。API接口没有配置频率限制,被第三方拿来批量执行任务。邮件服务器配置出错,被用来群发垃圾邮件。带宽资源被爬虫占用,正常用户访问速度变慢。表面看没有被黑客入侵,但造成的损失和攻击相差不大。
攻击者很少单独使用单一手段,大多采用组合方式。先用扫描工具寻找可利用入口,借助漏洞或是弱密码完成入侵,接着部署后门、提升权限、横向渗透,最后达成攻击目的。防护不能只依靠单一设备,防火墙、WAF、访问控制、补丁更新、日志监控、备份恢复都要部署,任意环节出现短板,都会成为入侵突破口。