11个步骤完美排查Linux机器是否已经被入侵

随着开源产品的越来越盛行,作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,个人结合自己的工作经历,整理了几种常见的机器被黑情况供参考。

背景信息:以下情况是在CentOS 6.9的系统中查看的,其它Linux发行版类似。

 

[[327812]]

1. 入侵者可能会删除机器的日志信息

可以查看日志信息是否还存在或者是否被清空,相关命令示例:

  1. [root@hlmcen69n3 ~]# ll -h /var/log/* 
  2.  
  3. -rw-------. 1 root root 2.6K Jul  7 18:31 /var/log/anaconda.ifcfg.log 
  4.  
  5. -rw-------. 1 root root  23K Jul  7 18:31 /var/log/anaconda.log 
  6.  
  7. -rw-------. 1 root root  26K Jul  7 18:31 /var/log/anaconda.program.log 
  8.  
  9. -rw-------. 1 root root  63K Jul  7 18:31 /var/log/anaconda.storage.log 
  10.  
  11.   
  12.  
  13. [root@hlmcen69n3 ~]# du -sh /var/log/* 
  14.  
  15. 8.0K /var/log/anaconda 
  16.  
  17. 4.0K /var/log/anaconda.ifcfg.log 
  18.  
  19. 24K  /var/log/anaconda.log 
  20.  
  21. 28K  /var/log/anaconda.program.log 
  22.  
  23. 64K  /var/log/anaconda.storage.log 

 2. 入侵者可能创建一个新的存放用户名及密码文件

可以查看/etc/passwd及/etc/shadow文件,相关命令示例:

  1. [root@hlmcen69n3 ~]# ll /etc/pass* 
  2.  
  3. -rw-r--r--. 1 root root 1373 Sep 15 11:36 /etc/passwd 
  4.  
  5. -rw-r--r--. 1 root root 1373 Sep 15 11:36 /etc/passwd- 
  6.  
  7.   
  8.  
  9. [root@hlmcen69n3 ~]# ll /etc/sha* 
  10.  
  11. ----------. 1 root root 816 Sep 15 11:36 /etc/shadow 
  12.  
  13. ----------. 1 root root 718 Sep 15 11:36 /etc/shadow- 

 3. 入侵者可能修改用户名及密码文件

可以查看/etc/passwd及/etc/shadow文件内容进行鉴别,相关命令示例:

  1. [root@hlmcen69n3 ~]# more /etc/passwd 
  2.  
  3. root:x:0:0:root:/root:/bin/bash 
  4.  
  5. bin:x:1:1:bin:/bin:/sbin/nologin 
  6.  
  7. daemon:x:2:2:daemon:/sbin:/sbin/nologin 
  8.  
  9.   
  10.  
  11. [root@hlmcen69n3 ~]# more /etc/shadow 
  12.  
  13. root:*LOCK*:14600:::::: 
  14.  
  15. bin:*:17246:0:99999:7::: 
  16.  
  17. daemon:*:17246:0:99999:7::: 

 4. 查看机器最近成功登陆的事件和最后一次不成功的登陆事件

对应日志“/var/log/lastlog”,相关命令示例:

  1. [root@hlmcen69n3 ~]# lastlog 
  2.  
  3. Username         Port     From             Latest 
  4.  
  5. root                                       **Never logged in** 
  6.  
  7. bin                                        **Never logged in** 
  8.  
  9. daemon                                     **Never logged in** 
  10. 复制代码 

 5. 查看机器当前登录的全部用户

对应日志文件“/var/run/utmp”,相关命令示例:

  1. [root@hlmcen69n3 ~]# who 
  2.  
  3. stone    pts/0        2017-09-20 16:17 (X.X.X.X) 
  4.  
  5. test01   pts/2        2017-09-20 16:47 (X.X.X.X) 

6. 查看机器创建以来登陆过的用户

对应日志文件“/var/log/wtmp”,相关命令示例:

  1. [root@hlmcen69n3 ~]# last 
  2.  
  3. test01   pts/1        X.X.X.X   Wed Sep 20 16:50   still logged in   
  4.  
  5. test01   pts/2        X.X.X.X   Wed Sep 20 16:47 - 16:49  (00:02)    
  6.  
  7. stone    pts/1        X.X.X.X   Wed Sep 20 16:46 - 16:47  (00:01)    
  8.  
  9. stone    pts/0        X.X.X.X   Wed Sep 20 16:17   still logged in 

 7. 查看机器所有用户的连接时间(小时)

对应日志文件“/var/log/wtmp”,相关命令示例:

  1. [root@hlmcen69n3 ~]# ac -dp 
  2.  
  3.          stone                               11.98 
  4.  
  5. Sep 15      total       11.98 
  6.  
  7.          stone                               67.06 
  8.  
  9. Sep 18      total       67.06 
  10.  
  11.          stone                                1.27 
  12.  
  13.          test01                               0.24 
  14.  
  15. Today        total        1.50 

 8. 如果发现机器产生了异常流量

可以使用命令“tcpdump”抓取网络包查看流量情况或者使用工具”iperf”查看流量情况

9. 可以查看/var/log/secure日志文件

尝试发现入侵者的信息,相关命令示例:

  1. [root@hlmcen69n3 ~]# cat /var/log/secure | grep -i "accepted password" 
  2.  
  3. Sep 20 12:47:20 hlmcen69n3 sshd[37193]: Accepted password for stone from X.X.X.X port 15898 ssh2 
  4.  
  5. Sep 20 16:17:47 hlmcen69n3 sshd[38206]: Accepted password for stone from X.X.X.X port 9140 ssh2 
  6.  
  7. Sep 20 16:46:00 hlmcen69n3 sshd[38511]: Accepted password for stone from X.X.X.X port 2540 ssh2 
  8.  
  9. Sep 20 16:47:16 hlmcen69n3 sshd[38605]: Accepted password for test01 from X.X.X.X port 10790 ssh2 
  10.  
  11. Sep 20 16:50:04 hlmcen69n3 sshd[38652]: Accepted password for test01 from X.X.X.X port 28956 ssh2 

10. 查询异常进程所对应的执行脚本文件

a.top命令查看异常进程对应的PID

b.在虚拟文件系统目录查找该进程的可执行文件

  1. [root@hlmcen69n3 ~]# ll /proc/1850/ | grep -i exe 
  2.  
  3. lrwxrwxrwx. 1 root root 0 Sep 15 12:31 exe -> /usr/bin/python 
  4.  
  5.   
  6.  
  7. [root@hlmcen69n3 ~]# ll /usr/bin/python 
  8.  
  9. -rwxr-xr-x. 2 root root 9032 Aug 18  2016 /usr/bin/python 

11.如果确认机器已经被入侵,重要文件已经被删除,可以尝试找回被删除的文件

(1) 当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。

(2) 在/proc 目录下,其中包含了反映内核和进程树的各种文件。/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在于磁盘中,因此当我们对这些文件进行读取和写入时,实际上是在从内存中获取相关信息。大多数与 lsof 相关的信息都存储于以进程的 PID 命名的目录中,即 /proc/1234 中包含的是 PID 为 1234 的进程的信息。每个进程目录中存在着各种文件,它们可以使得应用程序简单地了解进程的内存空间、文件描述符列表、指向磁盘上的文件的符号链接和其他系统信息。lsof 程序使用该信息和其他关于内核内部状态的信息来产生其输出。所以lsof 可以显示进程的文件描述符和相关的文件名等信息。也就是我们通过访问进程的文件描述符可以找到该文件的相关信息。

(3) 当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。

假设入侵者将/var/log/secure文件删除掉了,尝试将/var/log/secure文件恢复的方法可以参考如下:

a. 查看/var/log/secure文件,发现已经没有该文件

  1. [root@hlmcen69n3 ~]# ll /var/log/secure 
  2.  
  3. ls: cannot access /var/log/secure: No such file or directory 

b. 使用lsof命令查看当前是否有进程打开/var/log/secure,

  1. [root@hlmcen69n3 ~]# lsof | grep /var/log/secure 
  2.  
  3. rsyslogd   1264      root    4w      REG                8,1  3173904     263917 /var/log/secure (deleted) 

c. 从上面的信息可以看到 PID 1264(rsyslogd)打开文件的文件描述符为4。同时还可以看到/var/log/ secure已经标记为被删除了。因此我们可以在/proc/1264/fd/4(fd下的每个以数字命名的文件表示进程对应的文件描述符)中查看相应的信息,如下:

  1. [root@hlmcen69n3 ~]# tail /proc/1264/fd/4 
  2.  
  3. Sep 20 16:47:21 hlmcen69n3 sshd[38511]: pam_unix(sshd:session): session closed for user stone 
  4.  
  5. Sep 20 16:47:21 hlmcen69n3 su: pam_unix(su-l:session): session closed for user root 
  6.  
  7. Sep 20 16:49:30 hlmcen69n3 sshd[38605]: pam_unix(sshd:session): session closed for user test01 
  8.  
  9. 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! 
  10.  
  11. Sep 20 16:50:04 hlmcen69n3 sshd[38652]: Accepted password for test01 from 106.120.78.190 port 28956 ssh2 
  12.  
  13. Sep 20 16:50:05 hlmcen69n3 sshd[38652]: pam_unix(sshd:session): session opened for user test01 by (uid=0
  14.  
  15. Sep 20 17:18:51 hlmcen69n3 unix_chkpwd[38793]: password check failed for user (root) 
  16.  
  17. Sep 20 17:18:51 hlmcen69n3 sshd[38789]: pam_unix(sshd:auth): authentication failure; lognameuid=0 euid=0 tty=ssh ruserrhost=51.15.81.90  user=root 
  18.  
  19. Sep 20 17:18:52 hlmcen69n3 sshd[38789]: Failed password for root from 51.15.81.90 port 47014 ssh2 
  20.  
  21. Sep 20 17:18:52 hlmcen69n3 sshd[38790]: Connection closed by 51.15.81.90 

 d. 从上面的信息可以看出,查看/proc/1264/fd/4就可以得到所要恢复的数据。如果可以通过文件描述符查看相应的数据,那么就可以使用I/O重定向将其重定向到文件中,如:

  1. [root@hlmcen69n3 ~]# cat /proc/1264/fd/4 > /var/log/secure 

e. 再次查看/var/log/secure,发现该文件已经存在。对于许多应用程序,尤其是日志文件和数据库,这种恢复删除文件的方法非常有用。

  1. [root@hlmcen69n3 ~]# ll /var/log/secure 
  2.  
  3. -rw-r--r--. 1 root root 3173904 Sep 20 17:24 /var/log/secure 
  4.  
  5.   
  6.  
  7. [root@hlmcen69n3 ~]# head /var/log/secure 
  8.  
  9. Sep 17 03:28:15 hlmcen69n3 sshd[13288]: reverse mapping checking getaddrinfo for 137-64-15-51.rev.cloud.scaleway.com [51.15.64.137] failed - POSSIBLE BREAK-IN ATTEMPT! 
  10.  
  11. Sep 17 03:28:15 hlmcen69n3 unix_chkpwd[13290]: password check failed for user (root) 
  12.  
  13. Sep 17 03:28:15 hlmcen69n3 sshd[13288]: pam_unix(sshd:auth): authentication failure; lognameuid=0 euid=0 tty=ssh ruserrhost=51.15.64.137  user=root 
  14.  
  15. Sep 17 03:28:17 hlmcen69n3 sshd[13288]: Failed password for root from 51.15.64.137 port 59498 ssh2 
  16.  
  17. Sep 17 03:28:18 hlmcen69n3 sshd[13289]: Received disconnect from 51.15.64.137: 11: Bye Bye 
  18.  
  19. Sep 17 03:28:22 hlmcen69n3 sshd[13291]: reverse mapping checking getaddrinfo for 137-64-15-51.rev.cloud.scaleway.com [51.15.64.137] failed - POSSIBLE BREAK-IN ATTEMPT! 
  20.  
  21. Sep 17 03:28:22 hlmcen69n3 unix_chkpwd[13293]: password check failed for user (root) 
  22.  
  23. Sep 17 03:28:22 hlmcen69n3 sshd[13291]: pam_unix(sshd:auth): authentication failure; lognameuid=0 euid=0 tty=ssh ruserrhost=51.15.64.137  user=root 
  24.  
  25. Sep 17 03:28:24 hlmcen69n3 sshd[13291]: Failed password for root from 51.15.64.137 port 37722 ssh2 
  26.  
  27. Sep 17 03:28:25 hlmcen69n3 sshd[13292]: Received disconnect from 51.15.64.137: 11: Bye Bye 

 

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/129262.html<

(0)
运维的头像运维
上一篇2025-02-25 12:57
下一篇 2025-02-25 12:59

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注