【投稿】Unix系统用户登录、操作命令日志配置方法(一)

感谢three_body投稿

 

Unix系统用户登录、操作命令日志配置方法-引言一文中,已经格式化了登录日志,如下:

<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″
为了达到用户在每次登录的时候产生我们需要的登录日志,我们需要:
  1. 在每次用户登录时产生日志;
  2. 日志中需要包含登录时间、源IP地址、目的IP地址、登录用户、sessionid这些关键信息的值;

第1条,可以利用unix系统提供的logger命令产生日志,如下为Linux系统下的logger说明:

    

我们可以在系统上进行测试,在命令行输入以下内容:

点击(此处)折叠或打开

  1. [root@RHEL2 ~]# logger -p user.notice “this is a logger test”

监控日志,可以看到日志被记录在了/var/log/messages下面(默认配置了/etc/syslog.conf)

所以,我们只需要把logger命令放在用户每次登录时必须加载的配置文件里,就可以记录日志了。Linux系统下shell为bash的用户,每 次登录时(login shell)的启动文件有/etc/profile、~/.bash_profile 、~/.bashrc、/etc/bashrc,考虑到要记录每个用户的登录日志以及配置的便捷,可以加到/etc/profile或者/etc /bashrc文件中。我们以加到/etc/bashrc文件为例。

 

现在我们需要做的是将logger -p user.notice “this is a logger test”中引号的内容替换为我们需要的信息,包括登录时间、源IP地址、目的IP地址、登录用户、sessionid这些关键信息。为了方便引用,我们定义变量:

登录时间:up_nowtime=`(date -d now +”%Y-%m-%d%T”)`
源IP地址:up_client_ip=`(who am i|cut -d\( -f2|cut-d\) -f1)`
目的IP:直接写主机IP,可以不用命令获取;
登录用户:命令whoami的值;
sessionid:变量$$的值;

到此,我们的logger命令如下,我们定义的事件级别是user.notice。

点击(此处)折叠或打开

  1. logger -p user.notice — class=\”HOST_LOGIN\” type=\”2\” time=\”$up_nowtime\” src_ip=\”$up_client_ip\” dst_ip=\”192.168.56.102\” primary_user=\”\” secondary_user=\”$(whoami)\” operation=\”\” content=\”login successful\” authen_status=\”Success\” log_level=\”1\” session_id=\”$$\”

将完整内容加到/etc/bashrc文件末尾:

点击(此处)折叠或打开

  1. # Add content in /etc/bashrc
  2. # Log bash user login and command history
  3. up_client_ip=`(who am i|cut -d\( -f2|cut -d\) -f1)`
  4. up_nowtime=`(date -d now +”%Y-%m-%d %T”)`
  5. logger -p user.notice — class=\”HOST_LOGIN\” type=\”2\” time=\”$up_nowtime\” src_ip=\”$up_client_ip\” dst_ip=\”192.168.56.102\” primary_user=\”\” secondary_user=\”$(whoami)\” operation=\”\” content=\”login successful\” authen_status=\”Success\” log_level=\”1\” session_id=\”$$\”

现在通过ssh、telnet、rlogin登录测试,监控日志文件,可以看到已经成功的将日志记录在了/var/log/messages文件中。

后续,只需要配置/etc/syslog.conf,将user.notice级别日志发送到日志服务器。

以上,就是配置登录日志记录的基本思路,但是在实际环境中,需要考虑很多因素,如下:

  1. 不同shell的用户,启动的配置文件不一样,那么需要配置的文件也不一样,如何选择;
  2. 通过本地登录的情况,会不会记录日志、格式有没有变化、是否需要排除;
  3. 获取源IP地址的命令,获取到的IP地址是否为IP格式(有可能是主机名、0.0.0.0或者为空等);
  4. 用户之间进行su、su -切换时的情况,是否需要记录日志以及是否能正确记录日志;
  5. crontab定时任务里配置了自动登录情况时的问题;

同时,以上三点都需要在不同的操作系统、不同shell情况下加以变化。

 

我已经总结了HP-UX、Linux、Solaris、AIX、SuSe Linux系统上不同shell(sh、bash、ksh、csh、tcsh)用户的登录以及不同shell用户之间进行su、su -切换时的配置,以下是在各种情况下是否能够按照配置记录登录日志的测试结果,供大家研究:

每个shell有两个用户1和2(如 bash1\bash2),shell一栏区分不同shell用户的情况,操作一栏均为用户1执行的操作,以bash为例分别为:bash1用户登录、 bash1用户执行bash命令、bash1用户su bahs2、bash1用户su – bash2。标黄部分是说需要登录日志但是不能记录日志的情况。





从以上表可以看出,SuSe Linux系统是完全符合的。

发表评论

电子邮件地址不会被公开。 必填项已用*标注