如何使用Linux服务器的巡检用户和基础命令,捕捉用户登录痕迹?
本文使用一个 最普通的巡检用户,查看RedHat 7.4系统日志,检查 用户登录痕迹,说明如何判断是否存在 违规访问记录,如跳板访问等。
这里需要关心的日志列表如下
/var/log/lastlog 二进制文件,记录了最近的连接记录
/var/log/wtmp 二进制文件,记录每个用户的登录和注销信息
/var/log/secure 文本文件,记录用户的登录行为信息
/var/log/btmp 二进制文件,记录失败的登录尝试信息
/run/utmp 二进制文件,记录当前登录用户信息
01
-
使用cat命令查看
如果只有cat等基础命令,二进制文件输出的内容会以乱码形式出现
不过虽然乱码很多,但是也可以看到关键信息, 图中可以看出历史访问的IP信息,以及所用的访问用户。 如果发现可疑的IP地址,那就可以深入的行为分析了。
02
-
使用strings命令查看
用strings命令可以查看二进制文件信息,输出的内容比较接近文本内容。分别查看文件内容如下:
执行命令: strings lastlog
关注的要点是检查是否存在可疑IP地址
[root@test log]# strings lastlog^pts/2182.207.162.59[pts/1^pts/0182.207.162.59^pts/0^pts/7
执行命令: strings wtmp
因为输出内容过多,截取部分展示,关注的要点是用户和IP地址是否可疑
ts/0cams182.207.177.97pts/0pts/0ts/0root182.207.177.122pts/0pts/0ts/0cams182.119.114.218pts/0pts/0ts/0cams182.207.162.59
执行命令: strings /run/utmp
关注当前是否还有其他IP地址连上服务器
[cams@test log]$ strings /run/utmp reboot3.10.0-693.el7.x86_64runlevel3.10.0-693.el7.x86_64pts/0ts/0cams182.207.162.59pts/1ts/1pts/2ts/2root182.207.162.59
03
-
其他情况
但是也可能存在部分系统日志无权限访问的情况
[cams@test log]$ strings btmpstrings: btmp: 权限不够[cams@test log]$ strings securestrings: secure: 权限不够
对于 执行cat命令 提示权限不够的文件,如果有sudo cat权限就能看,如果没有sudo cat权限就不能看。一般情况下,生产环境巡检用户拥有sudo cat权限。
对于btmp文件,可以结合secure文件判断是否存在 尝试登录行为,重点还是关注日志中的IP地址是否可疑,访问行为是否合规等!
截取和展示/var/log/secure文本文件部分内容,可以清晰看到带时间戳的日志信息,失败的登录信息是Failed开头,成功的登录信息是Accepted开头,IP地址和用户等信息也清晰可见。
Jun 18 19:13:09 test sshd[24648]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=182.207.162.59 user=rootJun 18 19:13:09 test sshd[24648]: pam_succeed_if(sshd:auth): requirement "uid >= 1000" not met by user "root"Jun 18 19:13:11 test sshd[24648]: Failed password for root from 182.207.162.59 port 28680 ssh3Jun 18 19:13:16 test sshd[24648]: error: Received disconnect from 182.207.162.59 port 28680:0: [preauth]Jun 18 19:13:16 test sshd[24648]: Disconnected from 182.207.162.59 port 28680 [preauth]Jun 18 19:13:59 test sshd[24683]: Accepted password for root from 182.207.162.59 port 28814 ssh3Jun 18 19:13:59 test sshd[24683]: pam_unix(sshd:session): session opened for user root by (uid=0)
可能有的同学会问,为什么不用grep、awk、sed等命令匹配日志文件中的IP地址,或者执行shell脚本,然后输出结果呢?
答:因为一般生产环境有命令白名单,限制了很多命令的使用,最基础的命令才能适用于绝大多数生产环境。另外,巡检用户只有读权限,创建和执行shell脚本等也不会被允许。