2014年(7)
分类: 系统运维
2014-02-20 12:56:48
在SOC、审计、4A等项目中,经常需要解析 Unix系统的登录日志,以此进行分析用户登录行为,特别是在4A项目中,需要判定绕过堡垒主机的登录行为及操作。对于Unix系统来说,默认的 syslog配置并不会记录用户的操作过程,只有一个结果的日志。比如以下在Linux系统上添加用户:
点击(此处)折叠或打开
Feb 19 11:21:39 RHEL2 useradd[3534]: new group: name=bashuser1, GID=503
Feb 19 11:21:39 RHEL2 useradd[3534]: new user: name=bashuser1, UID=502, GID=503, home=/home/bashuser1, shell=/bin/bash
对于登录日志,其中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)
Feb 19 11:11:17 RHEL2 login: ROOT LOGIN ON pts/4 FROM 192.168.56.1
其中日志信息包含了登录用户,登录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"
<13>bashuser: class="HOST_COMMAND" type="3" time="2011-06-29 10:44:03" src_ip="192.168.14.83" dst_ip="192.168.100.90" primary_user="" secondary_user="bashuser" operation="uname -a" content="command" authen_status="" log_level="1" sessionid="12182"
日志格式说明:
class:HOST_LOGIN,表示主机登录;HOST_COMMAND,表示主机操作命令;
time:用户登录主机时间;
src_ip:登录源IP地址;
dst_ip:主机地址;
primary_user:主账号,这个变量是引用堡垒主机的概念加的,在这里会永远为空值;
secondary_user:从账号,也就是主机上的账号,也是引用堡垒主机的概念加的;
operation:针对HOST_COMMAND类,是实际的操作命令内容;
content:表示结果,如登录成功或者命令;
session_id:这里引用的变量是$$变量值;
可以根据实际需要增加删除修改变量内容。
以下先讲如何配置登录日志,大概需要了解以下方面的知识,其中部分内容我已经在空间上陆续发过: