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

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. [root@hlmcen69n3 ~]# du -sh /var/log/*
  12.  
  13. 8.0K /var/log/anaconda
  14.  
  15. 4.0K /var/log/anaconda.ifcfg.log
  16.  
  17. 24K /var/log/anaconda.log
  18.  
  19. 28K /var/log/anaconda.program.log
  20.  
  21. 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. [root@hlmcen69n3 ~]# ll /etc/sha*
  8.  
  9. ----------. 1 root root 816 Sep 15 11:36 /etc/shadow
  10.  
  11. ----------. 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. [root@hlmcen69n3 ~]# more /etc/shadow
  10.  
  11. root:*LOCK*:14600::::::
  12.  
  13. bin:*:17246:0:99999:7:::
  14.  
  15. 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**

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. [root@hlmcen69n3 ~]# ll /usr/bin/python
  6.  
  7. -rwxr-xr-x. 2 root root 9032 Aug 18 2016 /usr/bin/python

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

Note:

参考Link:http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316599.html

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//fd/
  2.  
  3. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:session): session closed for user stone
  4.  
  5. Sep :: hlmcen69n3 su: pam_unix(su-l:session): session closed for user root
  6.  
  7. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:session): session closed for user test01
  8.  
  9. Sep :: hlmcen69n3 sshd[]: reverse mapping checking getaddrinfo for 190.78.120.106.static.bjtelecom.net [106.120.78.190] failed - POSSIBLE BREAK-IN ATTEMPT!
  10.  
  11. Sep :: hlmcen69n3 sshd[]: Accepted password for test01 from 106.120.78.190 port ssh2
  12.  
  13. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:session): session opened for user test01 by (uid=)
  14.  
  15. Sep :: hlmcen69n3 unix_chkpwd[]: password check failed for user (root)
  16.  
  17. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:auth): authentication failure; logname= uid= euid= tty=ssh ruser= rhost=51.15.81.90 user=root
  18.  
  19. Sep :: hlmcen69n3 sshd[]: Failed password for root from 51.15.81.90 port ssh2
  20.  
  21. Sep :: hlmcen69n3 sshd[]: 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--. root root Sep : /var/log/secure
  4.  
  5. [root@hlmcen69n3 ~]# head /var/log/secure
  6.  
  7. Sep :: hlmcen69n3 sshd[]: reverse mapping checking getaddrinfo for ---.rev.cloud.scaleway.com [51.15.64.137] failed - POSSIBLE BREAK-IN ATTEMPT!
  8.  
  9. Sep :: hlmcen69n3 unix_chkpwd[]: password check failed for user (root)
  10.  
  11. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:auth): authentication failure; logname= uid= euid= tty=ssh ruser= rhost=51.15.64.137 user=root
  12.  
  13. Sep :: hlmcen69n3 sshd[]: Failed password for root from 51.15.64.137 port ssh2
  14.  
  15. Sep :: hlmcen69n3 sshd[]: Received disconnect from 51.15.64.137: : Bye Bye
  16.  
  17. Sep :: hlmcen69n3 sshd[]: reverse mapping checking getaddrinfo for ---.rev.cloud.scaleway.com [51.15.64.137] failed - POSSIBLE BREAK-IN ATTEMPT!
  18.  
  19. Sep :: hlmcen69n3 unix_chkpwd[]: password check failed for user (root)
  20.  
  21. Sep :: hlmcen69n3 sshd[]: pam_unix(sshd:auth): authentication failure; logname= uid= euid= tty=ssh ruser= rhost=51.15.64.137 user=root
  22.  
  23. Sep :: hlmcen69n3 sshd[]: Failed password for root from 51.15.64.137 port ssh2
  24.  
  25. Sep :: hlmcen69n3 sshd[]: Received disconnect from 51.15.64.137: : Bye Bye

【转载】排查Linux机器是否已经被入侵的更多相关文章

  1. 排查Linux机器是否已经被入侵

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

  2. 如何排查 Linux 机器是否已经被入侵?

    原文: https://mp.weixin.qq.com/s/XP0eD40zpwajdv11bsbKkw http://www.cnblogs.com/stonehe/p/7562374.html ...

  3. 排查Linux机器是否已被入侵

    来自--马哥Linux运维 1.入侵者可能会删除机器的日志信息 ,可以查看日志信息是否存在后者被清除 [root@zklf-server02 ~]# ll -h /var/log/ total 3.4 ...

  4. 排查linux系统是否被入侵

    在日常繁琐的运维工作中,对linux服务器进行安全检查是一个非常重要的环节.今天,分享一下如何检查linux系统是否遭受了入侵? 一.是否入侵检查 1)检查系统日志 检查系统错误登陆日志,统计IP重试 ...

  5. (转载)Linux一句话精彩

    (转载)http://bjsfly.blog.163.com/blog/static/161276642007845228371/ 0001[url=111]111[/url] [ 本帖最后由 bjc ...

  6. Linux检查服务器是否被入侵

    Linux检查服务器是否被入侵 检查root用户是否被纂改 awk -F: '$3==0{print $1}' /etc/passwd awk -F: '$3==0 {print}' /etc/pas ...

  7. linux 挂载windows下目录,其它linux机器nfs的目录,自己dd的文件

    如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 挂载window下共享的目录 //192.168.0.11/share /mnt 挂载其它linux机器下目录 ...

  8. ssh-keygen的使用方法及配置authorized_keys两台linux机器相互认证

    一.概述 1.就是为了让两个linux机器之间使用ssh不需要用户名和密码.采用了数字签名RSA或者DSA来完成这个操作 2.模型分析 假设 A (192.168.20.59)为客户机器,B(192. ...

  9. 【转载】Linux下安装LoadRunner LoadGenerator

    原文地址:[转载]Linux下安装LoadRunner LoadGenerator作者:邱建忠tester LR的负载机安装在linux的理由: 1.windows xp,双核+4G内存,基本上每个v ...

随机推荐

  1. php header函数下载文件实现代码

    在php中header函数的使用很大,header不但可以向客户端发送原始的 HTTP 报头信息,同时还可以直接实现文件下载操作 header函数最常用的不是用于下载而是用于发送http类的 跳转 它 ...

  2. QMainWindow + QtabWidget 实现 菜单栏 和 标签

    from PyQt5.QtWidgets import ( QMainWindow, QMenu, QAction, QTabWidget) if __name__ == '__main__': im ...

  3. CentOS系统中的passwd命令实用技巧小结

    这篇文章主要介绍了Linux系统中的passwd命令实用技巧小结,是Linux入门学习中的基础知识,需要的朋友可以参考下   先来回顾一下passwd命令的基本用法: Linux passwd命令用来 ...

  4. POI-根据Cell获取对应的String类型值

    /** * 根据不同情况获取Java类型值 * <ul><li>空白类型<ul><li>返回空字符串</li></ul>< ...

  5. 如果返回结构体类型变量(named return value optimisation,NRVO)

    貌似这是一个非常愚蠢的问题,因为对于具有良好素质的程序员而言,在C中函数返回类型为结构体类型是不是有点不合格,干嘛不用指针做传入传出呢? 测试环境:Linux IOS 3.2.0-45-generic ...

  6. 教您如何在Word的mathtype加载项中修改章节号

    在MathType数学公式编辑器中,公式编号共有五部分内容:分别是章编号(Chapter Number).节编号(Section Number).公式编号(Equation Number).括号(En ...

  7. vs2013配置opencv3.2.0

    工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...

  8. 记录下自己常用的全框架HTML代码

    纯粹记录下,没有任何意义. 也不推荐使用 <frameset rows="> <frame src=" name="topFrame" scr ...

  9. 基于pyteseract google ocr的图形验证码识别

    先灰化图片,把图片二值化,利用pytesseract包的pytesseract.image_to_string转换出文字.

  10. ros网址链接

    安装教程:http://wiki.ros.org/cn/indigo/Installation robotics:http://www.rethinkrobotics.com/ 学习教程:http:/ ...