被入侵服务器的症状

当服务器被没有经验攻击者或者自动攻击程序入侵了的话,他们往往会消耗 100% 的资源。他们可能消耗 CPU 资源来进行数字货币的采矿或者发送垃圾邮件,也可能消耗带宽来发动 DoS 攻击。

因此出现问题的第一个表现就是服务器 “变慢了”。这可能表现在网站的页面打开的很慢,或者电子邮件要花很长时间才能发送出去。

那么你应该查看那些东西呢?

检查 1 - 当前都有谁在登录?

你首先要查看当前都有谁登录在服务器上。发现攻击者登录到服务器上进行操作并不复杂。

其对应的命令是 w。运行 w 会输出如下结果:

  1. 08:32:55 up 98 days,  5:43,  2 users,  load average: 0.05, 0.03, 0.00
  2. USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
  3. root     pts/0    113.174.161.1    08:26    0.00s  0.03s  0.02s ssh root@coopeaa12
  4. root     pts/1    78.31.109.1      08:26    0.00s  0.01s  0.00s w

第一个 IP 是英国 IP,而第二个 IP 是越南 IP。这个不是个好兆头。

停下来做个深呼吸, 不要恐慌之下只是干掉他们的 SSH 连接。除非你能够防止他们再次进入服务器,否则他们会很快进来并踢掉你,以防你再次回去。

请参阅本文最后的“被入侵之后怎么办”这一章节来看找到了被入侵的证据后应该怎么办。

whois 命令可以接一个 IP 地址然后告诉你该 IP 所注册的组织的所有信息,当然就包括所在国家的信息。

检查 2 - 谁曾经登录过?

Linux 服务器会记录下哪些用户,从哪个 IP,在什么时候登录的以及登录了多长时间这些信息。使用 last 命令可以查看这些信息。

输出类似这样:

  1. root     pts/1        78.31.109.1      Thu Nov 30 08:26   still logged in
  2. root     pts/0        113.174.161.1    Thu Nov 30 08:26   still logged in
  3. root     pts/1        78.31.109.1      Thu Nov 30 08:24 - 08:26  (00:01)
  4. root     pts/0        113.174.161.1    Wed Nov 29 12:34 - 12:52  (00:18)
  5. root     pts/0        14.176.196.1     Mon Nov 27 13:32 - 13:53  (00:21)

这里可以看到英国 IP 和越南 IP 交替出现,而且最上面两个 IP 现在还处于登录状态。如果你看到任何未经授权的 IP,那么请参阅最后章节。

登录后的历史记录会记录到二进制的 /var/log/wtmp 文件中(LCTT 译注:这里作者应该写错了,根据实际情况修改),因此很容易被删除。通常攻击者会直接把这个文件删掉,以掩盖他们的攻击行为。 因此, 若你运行了 last 命令却只看得见你的当前登录,那么这就是个不妙的信号。

如果没有登录历史的话,请一定小心,继续留意入侵的其他线索。

检查 3 - 回顾命令历史

这个层次的攻击者通常不会注意掩盖命令的历史记录,因此运行 history 命令会显示出他们曾经做过的所有事情。 一定留意有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件。

命令历史存储在 ~/.bash_history 文件中,因此有些攻击者会删除该文件以掩盖他们的所作所为。跟登录历史一样,若你运行 history 命令却没有输出任何东西那就表示历史文件被删掉了。这也是个不妙的信号,你需要很小心地检查一下服务器了。(LCTT 译注,如果没有命令历史,也有可能是你的配置错误。)

检查 4 - 哪些进程在消耗 CPU?

你常遇到的这类攻击者通常不怎么会去掩盖他们做的事情。他们会运行一些特别消耗 CPU 的进程。这就很容易发现这些进程了。只需要运行 top 然后看最前的那几个进程就行了。

这也能显示出那些未登录进来的攻击者。比如,可能有人在用未受保护的邮件脚本来发送垃圾邮件。

如果你最上面的进程对不了解,那么你可以 Google 一下进程名称,或者通过 losf 和 strace 来看看它做的事情是什么。

使用这些工具,第一步从 top 中拷贝出进程的 PID,然后运行:

  1. strace -p PID

这会显示出该进程调用的所有系统调用。它产生的内容会很多,但这些信息能告诉你这个进程在做什么。

  1. lsof  -p PID

这个程序会列出该进程打开的文件。通过查看它访问的文件可以很好的理解它在做的事情。

检查 5 - 检查所有的系统进程

消耗 CPU 不严重的未授权进程可能不会在 top 中显露出来,不过它依然可以通过 ps 列出来。命令 ps auxf 就能显示足够清晰的信息了。

你需要检查一下每个不认识的进程。经常运行 ps (这是个好习惯)能帮助你发现奇怪的进程。

检查 6 - 检查进程的网络使用情况

iftop 的功能类似 top,它会排列显示收发网络数据的进程以及它们的源地址和目的地址。类似 DoS 攻击或垃圾机器人这样的进程很容易显示在列表的最顶端。

检查 7 - 哪些进程在监听网络连接?

通常攻击者会安装一个后门程序专门监听网络端口接受指令。该进程等待期间是不会消耗 CPU 和带宽的,因此也就不容易通过 top 之类的命令发现。

lsof 和 netstat 命令都会列出所有的联网进程。我通常会让它们带上下面这些参数:

  1. lsof -i
  1. netstat -plunt

你需要留意那些处于 LISTEN 和 ESTABLISHED 状态的进程,这些进程要么正在等待连接(LISTEN),要么已经连接(ESTABLISHED)。如果遇到不认识的进程,使用 strace 和 lsof 来看看它们在做什么东西。

被入侵之后该怎么办呢?

首先,不要紧张,尤其当攻击者正处于登录状态时更不能紧张。你需要在攻击者警觉到你已经发现他之前夺回机器的控制权。如果他发现你已经发觉到他了,那么他可能会锁死你不让你登陆服务器,然后开始毁尸灭迹。

如果你技术不太好那么就直接关机吧。你可以在服务器上运行 shutdown -h now 或者 systemctl poweroff 这两条命令之一。也可以登录主机提供商的控制面板中关闭服务器。关机后,你就可以开始配置防火墙或者咨询一下供应商的意见。

如果你对自己颇有自信,而你的主机提供商也有提供上游防火墙,那么你只需要以此创建并启用下面两条规则就行了:

  1. 只允许从你的 IP 地址登录 SSH。
  2. 封禁除此之外的任何东西,不仅仅是 SSH,还包括任何端口上的任何协议。

这样会立即关闭攻击者的 SSH 会话,而只留下你可以访问服务器。

如果你无法访问上游防火墙,那么你就需要在服务器本身创建并启用这些防火墙策略,然后在防火墙规则起效后使用 kill 命令关闭攻击者的 SSH 会话。(LCTT 译注:本地防火墙规则 有可能不会阻止已经建立的 SSH 会话,所以保险起见,你需要手工杀死该会话。)

最后还有一种方法,如果支持的话,就是通过诸如串行控制台之类的带外连接登录服务器,然后通过 systemctl stop network.service 停止网络功能。这会关闭所有服务器上的网络连接,这样你就可以慢慢的配置那些防火墙规则了。

重夺服务器的控制权后,也不要以为就万事大吉了。

不要试着修复这台服务器,然后接着用。你永远不知道攻击者做过什么,因此你也永远无法保证这台服务器还是安全的。

最好的方法就是拷贝出所有的数据,然后重装系统。(LCTT 译注:你的程序这时已经不可信了,但是数据一般来说没问题。)

转载于:https://www.cnblogs.com/yunweis/p/8073983.html

如何判断Linux服务器是否被入侵?相关推荐

  1. linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机

    如何判断linux服务器是虚拟机还是物理机 发布时间:2020-03-31 15:38:12 来源:亿速云 阅读:1089 作者:三月 随着虚拟化技术的日益成熟,越来越多的企业开始接受使用虚拟化软件产 ...

  2. 排查Linux服务器是否被入侵步骤

    作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,以下是结合centos7.9操作系统进行排查Linux操作系统是否被入侵,其他Linux发行版的操作类似 1.入侵者可 ...

  3. 判断Linux服务器是否被攻击以及相应的预防措施

    一.前言 随着现代互联网科技的快速发展,网络服务器的安全也逐渐成为各大企业开始关注的焦点.服务器后台的安全保证关系着整个网络数据的命脉,所以服务器的安全防范也逐渐称为各大企业关注的重点. 其中较为常见 ...

  4. linux服务器排查病毒纪实

    1. 前言 昨天邮件收到如下图所示: 一开始我是束手无策的,根本无从所知病毒在哪,黑客怎么入侵我的服务器.接下来,让我们一步步来排查吧,先看看如何判断 Linux 服务器是否被入侵? 2. 判断Lin ...

  5. 查看Linux服务器的CPU详细信息

    在Linux系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过cat /proc/cpuinfo查看如下: 下面我们来分析其中几个比较重要的指标: pr ...

  6. Linux服务器中的wget、curl和scp

    Linux服务器从互联网中下载文件共三种方式:推荐使用第一种 第一种方式:使用wget命令 wget http://www.download.com/1.txt wget命令配合-O选项给下载的文件重 ...

  7. linux服务器黑客攻防

    为什么80%的码农都做不了架构师?>>>    最近公司内服务器被攻击,导致公司内网特别慢,然后就自己查着资料检查了下. 检查自己的linux服务器是否被黑客侵入可以先看下这篇文章: ...

  8. 入侵你Linux服务器的一万种玩法...

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 来源:uee.me/cFLQY 本文主要分为如下五部分展开 ...

  9. Linux服务器被入侵之后的处理方法

    安全事件处理流程 如上图,将服务器安全应急响应流程分为如下 8 个环节: 发现安全事件(核实)-现场保护–服务器保护-影响范围评估-在线分析-数据备份-深入分析----事件报告整理 各阶段说明 核实信 ...

最新文章

  1. Browser Security-同源策略、伪URL的域
  2. 开始学习RED HAT LINUX了
  3. 决策树算法介绍及应用
  4. GitHub Token的使用
  5. resultset遍历取数据_数据放在哪?如何从数据库取数据?
  6. python免费网课-Python网课推荐——免费学习Python编程
  7. c# 类的序列化,以及嵌套问题
  8. Python 视频教程下载 (全阶段)
  9. Android性能优化(第一章)
  10. 基于Vivado和Ego1的密码锁设计
  11. Windows7安装IIS服务器
  12. 网易有道笔试题(2014届,2013.10北邮站)
  13. win10电脑不显示手机连接服务器失败,手机投屏win10电脑失败的解决方案
  14. Unity 知识点复习
  15. 计算机软硬件的开发及应用,管理和控制计算机系统软硬件资源的软件是 计算机软硬件开发...
  16. Linux芯片级移植与底层驱动(基于3.7.4内核) --SMP多核启动以及CPU热插拔驱动
  17. mysql绿色版本的安装
  18. java生成二维码扫描跳转到指定的路径URL
  19. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf
  20. Linux SYN报文接收及发送SYNACK报文

热门文章

  1. linux下安装telnet服务
  2. ubuntu下opencv和qt的安装配置
  3. Hive partition prune Failed
  4. VC++中文件类型小结
  5. ORACLE数据库常见问题诊断方法 ---(常见错误篇)
  6. WordPress本地运行,PhpStudy中MySQL无法启动,数据库无法连接?
  7. Python使用for循环打印直角三角形、九九乘法表、金字塔
  8. c语言交换两个变量的值 讲课,用C语言的泛型实现交换两个变量值
  9. 部署到gcp_将S/4部署在“大型公有云”上
  10. SAP License:SAP上线期初导入方法