本文使用一个 最普通的巡检用户,查看RedHat 7.4系统日志,检查 用户登录痕迹,说明如何判断是否存在 违规访问记录,如跳板访问等。
这里需要关心的日志列表如下
01
—
使用cat命令查看
如果只有cat等基础命令,二进制文件输出的内容会以乱码形式出现
不过虽然乱码很多,但是也可以看到关键信息, 图中可以看出历史访问的IP信息,以及所用的访问用户。 如果发现可疑的IP地址,那就可以深入的行为分析了。
02
—
使用strings命令查看
用strings命令可以查看二进制文件信息,输出的内容比较接近文本内容。分别查看文件内容如下:
执行命令: strings lastlog
-
关注的要点是检查是否存在可疑IP地址
[root@test log]# strings lastlog ^pts/2 182.207.162.59 [pts/1 ^pts/0 182.207.162.59 ^pts/0 ^pts/7
执行命令: strings wtmp
ts/0cams 182.207.177.97 pts/0 pts/0 ts/0root 182.207.177.122 pts/0 pts/0 ts/0cams 182.119.114.218 pts/0 pts/0 ts/0cams 182.207.162.59
执行命令: strings /run/utmp
-
关注当前是否还有其他IP地址连上服务器
[cams@test log]$ strings /run/utmp reboot 3.10.0-693.el7.x86_64 runlevel 3.10.0-693.el7.x86_64 pts/0 ts/0cams 182.207.162.59 pts/1 ts/1 pts/2 ts/2root 182.207.162.59
03
—
其他情况
但是也可能存在部分系统日志无权限访问的情况
[cams@test log]$ strings btmp strings: btmp: 权限不够 [cams@test log]$ strings secure strings: 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=root Jun 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 ssh3 Jun 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 ssh3 Jun 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脚本等也不会被允许。