服务器被黑,安全事故排查和处置的方法
时间:2018-02-05
1、了解服务器异常情况。
常见异常情况:异常的流量、异常tcp链接(来源端口,往外发的端口)、异常的访问日志(大量的ip频繁的访问个别文件)。
如果部署了监控系统的话(强烈建议部署zabbix,并增加对系统添加专门安全items),可以方便通过zabbix监控图和趋势对比了解这些信息:
比如系统被黑或者中木马的话,zabbix上表现常见为:
1)系统负载不正常增加(14天,按天对比,事故当天安时对比),主要是因为会有系统操作,起一些恶意进程会占用CPU,占用IO:比如起进程挖矿,会大量占用CPU;如果中勒索木马的话,会对系统文件加密,会大量占用占用CPU,占用IO。
2) 系统链接数不正常,对外流量不寻常的增加:木马利用当前服务器对外发包,进行二次扫描或者Ddos攻击。
异常上行流量监控表现
3) 服务器文件变化,文件被篡改:主要涉及目录有/tmp,/root/.ssh,/boot/,/bin,/sbin,/etc,/etc/crontab,/etc/init.d/ 等等。
关于服务器安全监控的有关内容,此处不在在赘述,后续笔者会推出专门文章予以阐述,敬请期待。
2、根据服务器情况判断
利用last,lastb发现异常的用户登录情况,ip来源。利用lastlog,/var/log/message,/var/log/secure,日志等,是否权限已经被攻陷。用history 发现shell执行情况信息,用top,ps,pstree等发现异常进程和服务器负载等情况,用netstat -natlp发现异常进程情况。用w命令发现当前系统登录用户的情况。
恶意进程项目
如以上图为一台,通过对外暴露的mysql 简单用户名密码被人攻陷,中木马后,启动恶意进程的情况。
3、中标服务器处理:
如果发现异常用户,立即修改用户密码,pkill -kill -t tty 剔除异常用户。然后进行进一步处理。
1)发现异常进程,立即禁止,冻结禁止。
如果禁止后会自动重启,则需要判断crontab等来找到进程重启的原因,如果有cron项目恶意重启进程,先要对cron进行清理。如果,是进程有自启动机制保护进程被杀后重启的话,此时可暂时冻结异常进程(注意不是停止)
发现一个恶意进程后通过 ls al /proc/Pid (Pid为具体的进程号),发现进程的启动路径,启动的文件所在目录等信息。
kill -STOP Pid 可以暂时冻结pid的进程,这时此进程将不能正常工作,不能占用系统资源,不往外发包。,被冻结的进程可以通过ps aux|grep T来查到,此后如果需要可通过 skill -CONT Pid恢复进程。
2)如果发现异常连接数,通过iptables封禁相关端口或者ip
tcpdump -i eth0 -tnn dst port 80 -c 1000 |perl -F"." -lane 'print join ".",@F[0..3]'|sort |uniq -c|sort nr
iptables -I INPUT -s ip -j DROP
iptables -I OUTPUT -p tcp --dport 25 -j DROP
iptables -I INPUT -p tcp --dport 25 -j DROP
3) 查看网站访问日志,分析异常访问,对异常访问ip进行处理,对异常访问的文件进行处理
具体处理,上一篇文章
4)对清理移动木马,杀掉进程。
首先清理掉,木马创建的cron 计划项和主要是/etc/crontab文件,和cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ cron.weekly/等目录下的恶意计划项目; /etc/init.d/下的恶意启动项以及rcN目录下的启动项。记录下这些项目的内容涉及到的文件,然后全部清理到,注意截图保留相应的证据(文件时间签,文件内容等的截图)。
其次,根据ls -al /etc/proc/Pid/ 找的恶意木马文件,以及上一步的计划项和启动项目中涉及所有木马文件。所有进程项目的进程ID:
恶意进程的执行目录和文件
最后用一条命令 kill -9 所有的进程ID && rm -rf 所有涉及的文件和目录。
ok,搞定。然后注意观察服务器情况,如果有问题立马重复以上步骤请出。利用以上步骤可以完全清理所有木马,完全没有必要,已有问题就格盘重装系统,那是非常不专业,业务选手的做法。而且很多时候业务不允许有时间,有资源让你下线重装的。