在实际生产环境中并没有绝对安全的服务器,所以在平时在服务器上应用相应的安全策略就十分的重要,一般有防火墙的和相应的限制访问,还有一个就是备份数据,当然还有的时候也有可能是人为的一些忽略会造成的错误,所以在Unix系统中有一个很有用的工具Script,它可以用于记录stdout到屏幕上的一切的数据,Script的参数选项如下:
-a:追加到输出文件,默认是写在typescript文件中
-f:输出到指定文件,实时更新
-c: 运行命令而不是交互的shell环境
-q:安静模式,不显示Script started…这些信息
-t:指定时间文件和日志文件,格式:-t time.log action.log,用于回放操作。
要注意的是使用Script要使用exit或者是用[Ctrl] D来EOF
在我们需要做操作记录的服务器上可以利用bash_profile的特性:bash_profile是用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。这样添加Script命令参数内容到需要记录的用户家目录中的bash_profile文件末行中,如下:
[root@localhost ~]# vim ~/.bash_profile
…略…
/usr/bin/script -qaf /data/backup/script_log/$USER-$UIDO-$(date +%Y%m%d%H%M).log
#这里把日志记录在/data/backup/script_log下,这里要给这个目录733的权限,这点很重要,不然普通用户无法写入日志,但是日志需要保密也不能给普通用户查看的权限
#同理,其他普通用户也进相应的家目录中修改bash_profile文件
这样就可以对用于记录当前用户的操作记录,但是如果实际场景中是一台跳板机或者是一台多用户公用的服务器那么还可以利用skel文件夹的特性修改里面的bash_profile文件,这样以实现创建一个新用户就会自动添加Script参数,如下:
[root@localhost ~]# echo '/usr/bin/script -qaf /data/backup/script_log/$USER-$UIDO-$(date +%Y%m%d%H%M).log' >>/etc/skel/.bash_profile
当然如果有用Script做记录那么在平时也要做好相应的备份以及定期清理Script日志文件,这里推荐用cron来实现定时,可以在crontab中添加每7天
00 00 */7 * * /bin/find /data/backup/script_log -type f -ctime +7 -name '*.log' -exec rm -vf {} \;
总之Script日志文件是用于平时的审计工作的很好用的工具,合理利用可以很好的控制一些公用服务器上发生的事件,但是要注意的是日志文件的安全性。