服务器遭攻击原因分析,服务器被攻击了怎么办

服务器被攻击这件事,不少人第一反应都会纳闷,自己并没有和谁结下过节。但绝大多数攻击都不是私人恩怨引发的,只是扫描程序在公网大范围探测,只要找到对外开放的端口,尝试几组弱密码,一旦验证成功就直接入侵系统。还有一种情况,你的IP被识别成存在活跃流量,各类攻击脚本就会轮番发起试探,全程都是自动化执行。真正针对性的定向攻击一般只出现在同行竞争、游戏私服场景,或是你的服务器存储了别人想要获取的数据。其余大部分被入侵案例,都只是随机扫描被选中而已。

很多人不清楚为什么自己的服务器会被扫描,现实情况比较直接。只要服务器上的服务暴露在公网环境,就一定会被扫描探测。SSH默认使用22端口,每天遭遇几百次密码爆破属于常态。Redis如果没有设置密码并且直接对外暴露,短短几分钟就会被植入挖矿脚本。像Elasticsearch、Docker远程API、MongoDB这类组件,一旦监听地址设为0.0.0.0,同时没有配置访问限制,等同于直接敞开大门。Web应用层面同样存在风险,SQL注入、文件上传、命令执行这类漏洞,攻击者会借助工具批量扫描,只要你的程序存在任意一类漏洞,就有可能被拿下权限。更麻烦的是,部分攻击者拿到权限后不会立刻搞破坏,而是提前部署后门,把这台服务器当作跳板攻击其他机器,或是搭建代理出售。你这边看不出任何异常,直到机房发来通知,告知你的IP正在向外发送攻击流量。

服务器遭攻击原因分析,服务器被攻击了怎么办

怎么判断服务器遭遇了攻击?有几类比较典型的现象。网站突然打不开,或是加载速度异常缓慢,但带宽占用和CPU使用率并没有跑满,大概率是遭遇DDoS攻击。CPU占用莫名飙升至百分之百,内存占用也居高不下,登录服务器查看时发现陌生进程在运行,基本可以判定是中了挖矿程序。流量监控图表出现突兀峰值,凌晨时段短时间内产生几百兆带宽流量,说明服务器被当作代理,或是木马程序向外发包。收到勒索邮件,对方声称已经拿到你的数据,要求支付加密货币赎金,代表系统已经被入侵,文件也遭到加密。还有一类隐蔽的挂马情况,用户访问网站会被跳转至赌博、色情页面,但你自己浏览器访问却一切正常,攻击者做了IP判断机制,只针对特定地区访客触发跳转。

察觉到服务器被入侵,最先要记住不要直接关机。关机虽然可以切断攻击连接,但同时会销毁所有排查线索,日志和内存中的取证数据全部丢失,根本无法定位攻击者的入侵入口。正确操作是先断开网络,拔掉网线,或是在云服务器控制台关闭全部安全组规则,让服务器与外网隔离,保持系统继续运行。之后通过带外管理或者VNC工具登录服务器开展排查。查看登录记录,使用who和last命令查看当前以及历史登录行为。检查进程状态,执行ps aux和top命令,寻找名称怪异、CPU占用高、存放路径异常的进程。查看网络连接,借助netstat -antp或者ss -antp,找到和陌生IP建立的连接。核查计划任务,运行crontab -l查看内容,同时检查/etc/cron*目录,挖矿脚本通常会在这里添加定时任务。查看系统启动项,执行systemctl list-units,检查/etc/rc.local,后门程序经常藏匿于此。

日志是排查入侵源头的核心依据。查看/var/log/auth.log或者/var/log/secure,获取登录尝试以及登录成功记录;查看/var/log/nginx/access.log,从Web访问记录里寻找可疑URL和异常User-Agent。如果原有日志已经被攻击者删除,可以查找本地备份文件,或是查看云平台是否留存访问日志。找到入侵入口之后第一时间封堵。如果是SSH爆破入侵,修改SSH端口,关闭密码登录方式,仅保留密钥认证。如果是Web漏洞导致入侵,临时下线对应页面,打上安全补丁,或是临时添加WAF防护规则。如果是Redis未授权访问问题,给Redis设置密码,绑定本地回环地址,修改服务端口。完成封堵操作之后,再着手恢复业务与数据。

数据恢复阶段,如果有快照或者完整备份,最稳妥干净的方案是回滚到入侵发生之前的快照,紧接着立刻修补漏洞、修改各类密码,加固服务器配置。没有备份文件就只能手动清理,但手动清理存在隐患,你没办法确认攻击者是否预埋了隐藏后门。相对稳妥的处理方式,先导出重要业务数据,重装操作系统,重新部署运行环境,再把数据导入回去。整套流程耗时较多,但可以避免重装完成之后再次被入侵。

清理完服务器之后,几项安全操作不能省略。修改全部密码,包括服务器登录密码、数据库密码、API密钥、后台管理账号密码。检查服务器账号列表,查看/etc/passwd文件,确认是否存在陌生账号。核查SSH的authorized_keys文件,查看是否被写入未知公钥。检查sudoers配置文件,确认有没有新增异常权限配置。遍历所有Web站点目录,查找是否被上传webshell木马文件。全部检查完毕,再恢复对外业务访问。

安全防护这件事,日常做好管控远比出事之后补救更重要。SSH禁用密码登录,采用密钥认证。端口遵循最小开放原则,需要用到的服务才开放对应端口。定期安装系统补丁,Web框架和中间件的安全更新不要遗漏。数据库、缓存服务不要直接暴露公网,绑定本地地址或者内网访问。部署fail2ban,自动封禁频繁尝试登录的IP。Web前端部署WAF,拦截绝大多数自动化扫描以及常见漏洞攻击。定期执行数据备份,并且把备份文件离线存放,不要和服务器放在同一个云账号内,防止服务器被攻破之后备份文件一同被删除。

服务器安全不存在一劳永逸的解决办法。就算当前把安全策略全部配置到位,后续还可能爆出新的安全漏洞。持续关注安全公告,定期巡检日志,发现异常及时处置,效果往往比采购高价高防产品更好。攻击者大多会挑选防护薄弱的机器下手,只要你的服务器防护门槛更高,对方很大概率就会更换目标。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。

相关推荐