在SOC、审计、4A等项目中,经常需要解析 Unix系统的登录日志,以此进行分析用户登录行为,特别是在4A项目中,需要判定绕过堡垒主机的登录行为及操作。对于Unix系统来说,默认的 syslog配置并不会记录用户的操作过程,只有一个结果的日志。比如以下在Linux系统上添加用户:
[root@RHEL2 ~]# useradd -m bashuser1
在系统日志里会有如下,显示了以上命令的一个结果,但是对于命令本身是没有日志记录在syslog中的。
Feb 19 11:21:39 RHEL2 useradd[3534]: new group: name=bashuser1, GID=503
对于登录日志,其中Linux本身提供的SSH、telnet日志,其中包含源IP、登录帐户等信息。但是HP-UX、Solaris、AIX提供的telnet日志是基于inetd的,日志信息中不包含登录帐户信息。如以下是Linux系统上telnet登录日志:
Feb 19 11:11:17 RHEL2 login: pam_unix(remote:session): session opened for user root by (uid=0)
其中日志信息包含了登录用户,登录IP,作为一个登录事件解析,变量是足够的。但是对于HP-UX、Solaris、AIX提供的telnet日志,只是一个session的建立日志,只有登录IP,没有登录用户,作为登录事件解析就缺少了关键的用户信息:
Feb 19 11:11:13 RHEL2 xinetd[2354]: START: telnet pid=3414 from=192.168.56.1
因此,本文提出一种方法,统一所有Unix系统(Linux、HP-UX、Solaris、AIX、SuSe)的登录(ssh、telnet、rlogin)日志、操作命令日志,可以作为系统日志的有效补充。以下为配置好后的登录日志内容:
<13>bashuser: class="HOST_LOGIN" type="2" time="2011-06-29 10:44:03" src_ip="192.168.14.83" dst_ip="192.168.99.243" primary_user="" secondary_user="bashuser" operation="" content="login successful" authen_status="Success" log_level="1" sessionid="12182"
日志格式说明:
class:HOST_LOGIN表示主机登录,HOST_COMMAND,表示主机操作命令;
在讲实际配置前,我们需要了解各个Unix\Linux以下方面的知识:
各Unix系统服务启停、各Unix系统syslog配置;
各Unix系统shell及shell启动文件;
Login Shells, Interactive Shells;
http://blog.chinaunix.net/uid-29495937-id-4114576.html
http://blog.chinaunix.net/uid-29495937-id-4114598.html
Shell Setup Files — Which, Where, and Why
In Unix, what startup and termination files do the various shells use?
各Unix系统下的Shell编程、变量及引用、函数用法等