当线上服务器发现异常以后,无非就是常见的几种现象:
Web入侵:挂马、篡改、Webshell
系统入侵:系统异常、RDP爆破、SSH爆破、主机漏洞
病毒木马:远控、后门、勒索软件
信息泄漏:刷裤、数据库登录(弱口令)
网络流量:频繁发包、批量请求、DDOS攻击
被黑之后可按照如下方法逐一操作
1.跟开发运维确认被黑机器的用途、重要程度,能否断网处理,如果不能,先做下白名单处理,限制源ip访问,防止黑客继续深入
2.查找进程, ps -ef 查找进程id,根据进程process-id查看 进程所在的路径 ls -al /proc/process-id/exe 即可查找进程所在的文件绝对路径。也可以用lsof -p process-id 和 lsof -i listen-port|ip-address|
但需要注意如下点
1)虽然通过ps,netstat可以查看进程和网络连接,但是很多时候,你使用ll,stat命令查看ps,netstat等文件的时候,发现这些常用命令都被黑客替换了,这样查看的时候是看不到恶意的进程的,需要从正常的机器上拷贝完整的命令到该机器上再执行即可
pstree -a -pn 查看进程比较好看一些
2)当遇到僵尸进程(多个进程互相守护,一个进程被杀死,另外一个进程立马启动,总也杀不死的情况),首先需要定位到可执行文件的路径,锁定常用的可执行文件路径,禁止新的文件生成,命令为:
chattr +i /usr/bin/ /usr/sbin/ /bin ...
使该目录不可读不可写不可删除文件,同时修改恶意文件的权限为000
chmod 000 bad-binary-file
3)当定位一个异常进程后,注意查看该进程的启动时间,假设的Feb 27 那么你就要注意查看一下常用的进程的文件的修改时间(如sshd),是否是Feb 27,这样可以简单的确认,sshd是否被植入了后门文件,命令如下:
ls -al /bin /usr/bin /usr/sbin/ /sbin/ | grep "Feb 27"
3.查日志,通过查看常见的登陆日志确定黑客的攻击路径,ssh弱口令?中间件上传木马?等等,常见的日志文件
1)nginx或者apache的access_log,使用grep命令过滤黑客日志,定位404状态码,500状态码等方法
2)/var/log/secure 该日志记录了系统登陆成功和失败的日志,可利用cat /var/log/secure|grep "Accepted"或者cat /var/log/secure|grep "Failed"|wc -l 确定黑客爆破次数,登陆信息等,但是该日志很可能会被黑客删除,一种解决办法就是修改系统的登陆bash脚本,将系统的登陆信息以syslog的形式丢出去,即使黑客把日志删除了,登陆信息也可以查到
3)last命令记录了系统最近被登陆的信息,也可能被删除,last命令读取的是 /var/log/wtmp文件,/var/run/utmp同样也保存了登陆信息,区别
/var/log/wtmp文件中保存的是登录过本系统的用户的信息
/var/run/utmp文件保存的是当前正在本系统中的用户的信息
想要查看上面两个文件需要使用last -f /var/log/wtmp|/var/run/utmp
lastlog命令,记录系统中所有用户最近一次登录信息。
lastb命令,记录用户错误的登录列表 对应的数据源 /var/log/btmp
4)history命令,如果黑客执行了history -c 命令,那么历史记录会被清楚,但是查看 cat ~/.bash_history还是可以查看历史命令,要想彻底删除历史记录,需要先执行history -c 然后history -w 这样~/.bash_history文件也会被清空了,
4.查最近更改过的文件,巧用find 命令参考另外一篇详解
5.查开机启动项和定时任务
定时任务排查 http://www.cnblogs.com/Kevin-1967/p/7219120.html
6.后门排查
chkrootkit www.chkrootkit.org
rkhunter rkhunter.sourceforge.net