随着开源产品越来越流行,作为Linux运维工程师,能够清晰的识别异常机器是否被入侵非常重要.个人结合自己的工作经验,整理了几个常见的机器被黑案例,以供参考。背景资料:以下情况是在CentOS6.9系统中查看,其他Linux发行版类似。1、入侵者可能会删除本机的日志信息。可以查看日志信息是否还存在,或者是否已经清除。相关命令示例:[root@hlmcen69n3~]#ll-h/var/log/*-rw-------.1rootroot2.6KJul718:31/var/log/anaconda.ifcfg.log-rw-------.1rootroot23KJul718:31/var/log/anaconda.log-rw------.1rootroot26KJul718:31/var/log/anaconda.program.log-rw------。1rootroot63KJul718:31/var/log/anaconda.storage.log[root@hlmcen69n3~]#du-sh/var/log/*8.0K/var/log/anaconda4.0K/var/log/anaconda.ifcfg.log24K/var/log/anaconda.log28K/var/log/anaconda.program.log64K/var/log/anaconda.storage.log2。入侵者可能会创建一个新文件来存储用户名和密码。您可以查看/etc/passwd和/etc/shadow文件。相关命令示例:[root@hlmcen69n3~]#ll/etc/pass*-rw-r--r--.1rootroot1373Sep1511:36/etc/passwd-rw-r--r--.1rootroot1373Sep1511:36/etc/passwd-[root@hlmcen69n3~]#ll/etc/sha*---------.1rootroot816Sep1511:36/etc/shadow--------.1rootroot718Sep1511:36/etc/阴影-3。入侵者可能会修改用户名和密码文件,可以查看/etc/passwd和/etc/shadow文件内容进行识别,相关命令示例:[root@hlmcen69n3~]#more/etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin[root@hlmcen69n3~]#more/etc/shadowroot:*LOCK*:14600:::::bin:*:17246:0:99999:7:::daemon:*:17246:0:99999:7:::4。查看本机最近一次成功登录事件和最后一次登录不成功事件对应的日志“/var/log/lastlog”,相关命令示例:[root@hlmcen69n3~]#lastlogUsernamePortFromLatestroot**Neverloggedin**bin**Neverloggedin**daemon**Neverloggedin**复制代码5.查看本机所有当前登录用户对应的日志文件“/var/run/utmp”,相关命令示例:[root@hlmcen69n3~]#whotonepts/02017-09-2016:17(X.X.X.X)test01pts/22017-09-2016:47(X.X.X.X)6。检查日志文件“/var/log/wtmp”对应于创建机器后登录的用户。命令示例:[root@hlmcen69n3~]#lasttest01pts/1X.X.X.XWedSep2016:50stillloggedintest01pts/2X.X.X.XWedSep2016:47-16:49(00:02)stonepts/1X.X.X.XWedSep2016:46-16:47(00:01))stonepts/0X.X.X.XWedSep2016:17stillloggedin7。查看日志文件“/var/log/wtmp”对应的机器上所有用户的连接时间(小时)。相关命令示例:[root@hlmcen69n3~]#ac-dpstone11.98Sep15total11.98stone67.06Sep18total67.06stone1.27test010.24Todaytotal1.508。如果发现本机流量异常,可以使用“tcpdump”命令抓包查看流量情况或使用工具“iperf”查看流量情况9.可以查看/var/log/secure日志文件,尝试寻找入侵者的信息。相关命令示例:[root@hlmcen69n3~]#cat/var/log/secure|grep-i"acceptedpassword"Sep2012:47:20hlmcen69n3sshd[37193]:AcceptedpasswordforstonefromX.X.X.Xport15898ssh2Sep2016:17:47hlmcen69n3sshd[38206]:AcceptedpasswordforstonefromX.X.X.Xport9140ssh2Sep2016:46:00hlmcen69n3sshd[38511]:AcceptedpasswordforstonefromX.X.X.Xport2540ssh2Sep2016:47:16hlmcen69n3sshd[38605]:Acceptedpasswordfortest01fromX.X.X.Xport10790ssh2Sep2016:50:04hlmcen69n3sshd[38652]:Acceptedpasswordfortest01fromX.X.X.Xport28956ssh210.查询异常进程对应的执行脚本文件a.top命令查看异常进程对应的PIDb.查找异常进程对应的可执行文件虚拟文件系统目录下进程[root@hlmcen69n3~]#ll/proc/1850/|grep-iexelrwxrwxrwx.1rootroot0Sep1512:31exe->/usr/bin/python[root@hlmcen69n3~]#ll/usr/bin/python-rwxr-xr-x.2rootroot9032Aug182016/usr/bin/python11.如果确认机器被入侵,重要文件被删除,可以尝试找回被删除的文件(1)进程打开文件时,只要由于进程保持文件打开,即使它被删除,它仍然存在于磁盘上这意味着进程不知道文件已被删除,它仍然可以读写打开时给它的文件描述符.该文件对除进程以外的所有人都不可见,因为它对应的目录i-node已被删除。(2)/proc目录下,包含反映内核和进程树的各种文件。/proc目录挂载了一个映射在内存中的区域,所以这些文件和目录在磁盘上是不存在的,所以我们在读写这些文件的时候,实际上是在从内存中获取它们的相关信息。大多数lsof相关的信息都存放在以进程PID命名的目录中,即/proc/1234包含PID为1234的进程的信息。每个进程目录中存在各种文件,可以让应用程序轻松了解进程的内存空间,列表文件描述符、磁盘上文件的符号链接和其他系统信息。lsof程序使用这个和其他关于内核内部状态的信息来产生它的输出。所以lsof可以显示进程文件描述符和相关文件名等信息。也就是说,我们可以通过访问进程的文件描述符来找到文件的信息。(3)当系统中的某个文件被意外删除时,只要此时系统中有进程在访问该文件,那么我们就可以通过lsof从/proc目录中恢复该文件的内容。假设入侵者删除了/var/log/secure文件,尝试恢复/var/log/secure文件的方法可以参考如下:查看/var/log/secure文件,发现该文件不存在[root@hlmcen69n3~]#ll/var/log/securels:cannotaccess/var/log/secure:Nosuchfileordirectoryb。使用lsof命令查看当前是否有进程打开/var/log/secure,[root@hlmcen69n3~]#lsof|grep/var/log/securersyslogd1264root4wREG8,13173904263917/var/log/secure(deleted)c。从上面的信息我们可以看出PID为1264(rsyslogd)打开的文件的文件描述符是4,也可以看到/var/log/secure已经被标记为删除。因此,我们可以在/proc/1264/fd/4中查看相应的信息(fd下每个以数字命名的文件代表进程对应的文件描述符),如下:[root@hlmcen69n3~]#tail/proc/1264/fd/4Sep2016:47:21hlmcen69n3sshd[38511]:pam_unix(sshd:session):sessionclosedforuserstoneSep2016:47:21hlmcen69n3su:pam_unix(su-l:session):sessionclosedforuserrootSep2016:49:30hlmcen69n3sshd[38605]:session:session:sessionclosedforusertest01Sep2016:50:04hlmcen69n3sshd[38652]:reversemappingcheckinggetaddrinfofor190.78.120.106.static.bjtelecom.net[106.120.78.190]failed-POSSIBLEBREAK-INATTEMPT!Sep2016:50:04hlmcen69n3sshd[38652]:Acceptedpasswordfortest01from106.120.78.190port28956ssh2Sep2016:50:05hlmcen69n3sshd[38652]:pam_unix(sshd:session):sessionopenedforusertest01by(uid=0)Sep2017:18:51hlmcen69n3unix_chkpwd[38793]:passwordcheckfailedforuser(root)Sep2017:18:51hlmcen69n3sshd[38789]:sshailthicd;unixation=euid=euidttyname(uidtty=sshuser=rhost=51.15.81.90user=rootSep2017:18:52hlmcen69n3sshd[38789]:rootfrom51.15.81.90por的密码失败t47014ssh2Sep2017:18:52hlmcen69n3sshd[38790]:Connectionclosedby51.15.81.90d。从以上信息可以看出,查看/proc/1264/fd/4即可得到需要恢复的数据。如果可以通过文件描述符查看到相应的数据,那么就可以使用I/O重定向将其重定向到一个文件中,如:[root@hlmcen69n3~]#cat/proc/1264/fd/4>/var/日志/安全。再次检查/var/log/secure,发现该文件已经存在。这种取消删除文件的方法对许多应用程序非常有用,尤其是日志文件和数据库。[root@hlmcen69n3~]#ll/var/log/secure-rw-r--r--.1rootroot3173904Sep2017:24/var/log/secure[root@hlmcen69n3~]#head/var/log/secureSep1703:28:15hlmcen69n3sshd[13288]:reversemappingcheckinggetaddrinfofor137-64-15-51.rev.cloud.scaleway.com[51.15.64.137]failed-POSSIBLEBREAK-INATTEMPT!Sep1703:28:15hlmcen69n3unix_chkpwd[13290]:passwordcheckfailedforuser(root)Sep1703:28:15hlmcen69n3sshd[13288]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=51.15.64.137user=rootSep1703:28:17hlmcen69n3sshd[13288]:Failedpasswordforrootfrom51.15.64.137port59498ssh2Sep1703:28:18hlmcen69n3sshd[13289]:接收DisconnectFrom51.15.64.137:11:Byebyesep1703:28:28:22hlmcen69n3sshd[13291]:reververSemappingCheckingAddrInfofor137-64-64-64-15-51.rev.cloud.cloud.cloud.cloud.cloud.cloud.cloud.cloud.cloud.clod.sement2.51.15.15.15.15.64.15.64.13.64.13.64.13.64.13.64.137]13293]:passwordcheckfailedforuser(root)Sep1703:28:22hlmcen69n3sshd[13291]:pam_unix(sshd:auth):authenticationfailure;logname=uid=0euid=0tty=sshruser=rhost=51.15.64.137user=rootSep1703:28:24hlmcen69n3sshd[13291]:Failedpasswordforrootfrom51.15.64.137port37722ssh2Sep1703:28:25hlmcen69n3sshd[13292]:Receiveddisconnectfrom51.15.64.137:11:ByeBye
