2014年(7)
分类: 网络与安全
2014-02-20 13:05:42
在Unix系统用户登录、操作命令日志配置方法-引言一文中,已经格式化了登录日志,如下:
- 在每次用户登录时产生日志;
- 日志中需要包含登录时间、源IP地址、目的IP地址、登录用户、sessionid这些关键信息的值;
第1条,可以利用unix系统提供的logger命令产生日志,如下为Linux系统下的logger说明:
我们可以在系统上进行测试,在命令行输入以下内容:
点击(此处)折叠或打开
所以,我们只需要把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")`到此,我们的logger命令如下,我们定义的事件级别是user.notice。
源IP地址:up_client_ip=`(who am i|cut -d\( -f2|cut-d\) -f1)`
目的IP:直接写主机IP,可以不用命令获取;
登录用户:命令whoami的值;
sessionid:变量$$的值;
点击(此处)折叠或打开
点击(此处)折叠或打开
后续,只需要配置/etc/syslog.conf,将user.notice级别日志发送到日志服务器。
以上,就是配置登录日志记录的基本思路,但是在实际环境中,需要考虑很多因素,如下:
- 不同shell的用户,启动的配置文件不一样,那么需要配置的文件也不一样,如何选择;
- 通过本地登录的情况,会不会记录日志、格式有没有变化、是否需要排除;
- 获取源IP地址的命令,获取到的IP地址是否为IP格式(有可能是主机名、0.0.0.0或者为空等);
- 用户之间进行su、su -切换时的情况,是否需要记录日志以及是否能正确记录日志;
- 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系统是完全符合的。
three_body2014-03-11 18:13:36
CU博客助理:专家点评:比较巧妙的利用几个变量及logger的使用方法来确定用户登录的一些信息,仅在安全方面的初步判断有一定的效果。主要有一处不太方便的地方是 “目的IP:直接写主机IP,可以不用命令获取;” 这个地方。因为如果是批量部署的话还是写个变量极为方便。否则一个个的改,在服务器很多的情况下还是很费时费力的。
另外有一种记录及回放自从登录后所有命令的工作,可以介绍下。(感谢您参与“原创博文评选”获奖结果即将公布)
感谢回复。
目的IP同样是可以通过命令来获取的,为什么没有写主要是需要考虑多IP的情况下。在实施过程中出现问题最多的点在源IP的获取以及登录方式不同、系统有没有做过加过带来的影响。实际成熟的配置方法远比这为复杂,但是基本思路已经清楚了。
操作命令的记录也已经有完整的内容,后面我会再写出来。