完善Linux/UNIX审计 将每个shell命令记入日志
原文地址:http://os.51cto.com/art/201106/266928.htm
将用户执行的每个shell命令记入日志比最初想象的要来得困难。shell的历史功能原本旨在帮助用户使用以前用过的命令。我们都知道这种使用场合:你刚输入了一个长长的字段,可是拼错了一个字符。shell的历史让你可以改正这一个字符,而不必输入其余的所有字符。
然而, shell历史很难满足审计的目的。换言之,它不是为了确保系统安全而设计的。
对于bash shell来说,问题显得尤其困难,因为该shell的目的是,不管用什么办法,尽可能为用户简化生活——所以,它拥有所有的“花哨功能”(bells and whistles)。必须顾及所有这些多种功能,并且防止对历史文件进行更改。
Korn shell比较简单,使得保护shell的历史比较容易。
如果想要严加保管这些shell的历史,需要执行一系列的步骤。
首先,锁定shell的历史文件本身。更改它的属性,末尾只添加chattr +a .sh_history或chattr +a .bash_history。这样一来,就不可能删除或更改文件中的数据,连用户都无法改变属性——只有root用户才能改变。
其次,确保历史变量设置合理、无法更改。这些历史变量包括最重要的HISTFILE、HISTCOMMAND和HISTIGNORE。要做到这一点,使用shell的typeset命令,带-r选项,这使得指定的变量拥有只读属性。良好的操作规范是使所有历史环境变量都变为只读,比如:
export HISTCONTROL= export HISTFILE=$HOME/.bash_history export HISTFILESIZE=2000 export HISTIGNORE= export HISTSIZE=1000 export HISTTIMEFORMAT="%a %b %Y %T %z " typeset -r HISTCONTROL typeset -r HISTFILE typeset -r HISTFILESIZE typeset -r HISTIGNORE typeset -r HISTSIZE typeset -r HISTTIMEFORMAT
HISTTIMEFORMAT是bash shell的扩展,将在历史文件中提供时间戳。
对于bash shell来说,你需要更改历史的一些标准选项:
shopt -s cmdhist #设置cmdhist将把多行命令放入到单单一个历史行 shopt -s histappend #设置histappend将确保被添加到历史文件,而不是像通常的做法那样覆盖历史文件。
另外对于bash shell来说,还要设置PROMPT_COMMAND:
PROMPT_COMMAND="history -a" typeset -r PROMPT_COMMAND
这是由于bash shell实际上把历史写入到内存中,历史文件仅在shell会话结束时加以更新。这个命令会把上一个命令附加到磁盘上的历史文件。
最后,创建一个SIGDEBUG陷阱,将命令发送到系统日志(syslog)。VMware的ESXi借助自己版本的ash shell已经具有这样的功能。简而言之,应创建一个把当前命令记入日志(从历史文件获取)的函数,然后用logger命令,把它发送到系统日志。这一步在bash shell和Korn Shell中都适用。
这些步骤有些冗长,不过在新版的bash和ksh中有一些新的功能特性,让这一切变得极其容易。GNU Bash在4.1版中添加了记入到系统日志中的功能,只需要编译shell的时候开启该功能即可激活。
自推出ksh93以来,Korn Shell就一直具有审计功能。类似bash 4.1,用户审计是一项编译时功能。想看看你所用的ksh93版本是否安装了审计功能,可以执行下列命令中的某一条:
echo ${.sh.version} echo $KSH_VERSION
在Ubuntu 10.10中,我得到了来自ksh93的这个输出:
# echo ${.sh.version} Version JM 93t+ 2009-05-01
如果审计功能开启,特征字符串(JM)还会有字母A(开启审计功能),可能还有字母L(开启针对用户的审计功能)。IBM DeveloperWorks和Musings of an OS Plumber都刊有介绍Korn Shell审计的出色文章。
Bash shell含有审计功能的可能性也比较小。Ubuntu 10.10上的bash是4.1.5(1)版本。
对于仍在使用C shell(以及尤其是tsch)的用户,tcsh有一个变种名为“tcsh-bofh”,它支持记入到系统日志中。遗憾的是,tcsh-bofh并没有得到长期的维护。早在2010年1月,tcsh-bofh的FreeBSD端口就从FreeBSD端口树(port tree)去除了。
上述信息也可以在shell之外获取。比如有两个命令:lastcomm(来自Ubuntu Main软件仓库中的acct程序包)和auditctl(来自Ubuntu Universe软件仓库中的auditd程序包)。另外, Linux Journal在2002年刊发过一篇关于Linux进程统计的好文章。另外还有rootsh和snoopylogger这两个程序包,只是两者都不在Ubuntu软件仓库中。Rootsh好比是typescript的执行版本,而snoopylogger是你可以添加到用户环境的系统库。(这些方法有许多来自在serverfault.com上所提的一个问题,请参阅这个帖子。)
完善Linux/UNIX审计 将每个shell命令记入日志相关推荐
- Linux/Unix下的任务管理器-top命令
Linux/Unix下的任务管理器-top命令 Posted on 2012-07-11 09:14 fengyv 阅读(15453) 评论(1) 编辑 收藏 Windows下的任务管理器虽然不好用( ...
- Linux 基础操作、常用shell命令、vi常用命令、man帮助手册
Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...
- Linux学习系列五:Shell命令脚本的基本语法
这个系列的Linux教程主要参考刘遄老师的<Linux就该这么学>.用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间 ...
- 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题
iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...
- 【Linux学习笔记】 -- 基本Shell命令
常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS) Linux的四个部分: 1 Linux内核:控制所有硬软件,必要时分配硬件根据需要执行软件 系 ...
- 在Jenkins远程链接Linux系统,然后执行shell命令-亲测可用【转】
版权声明:本文为博主原创文章,未经博主允许不得转载.部分为转载其他人的,如要使用,也请提前通知一声 https://blog.csdn.net/a136332462/article/details/7 ...
- 卷毛崽|Linux自学|Vim 编辑器与 Shell 命令脚本
Vim编辑器与 Shell 命令脚本 1.Vim 文本编辑器: (1) vim常见命令 (2) vim 更改主机名(RHCSA考题) (3)vim 配置网卡ip(RHCSA考题) (4) vim配置y ...
- linux 下 任务管理器,Linux/Unix下的任务管理器-top命令
Windows下的任务管理器虽然不好用(个人更喜欢Process Explorer些),但也算方便,可以方便的查看进程,CPU,内存...也可以很容易的结束进程 没有图形化界面下的Linux,也有命令 ...
- linux popen 函数,Linux下使用popen()执行shell命令
函数原型: #include "stdio.h" FILE popen( const char command, const char* mode ) 参数说明: command: ...
最新文章
- 改变自己,让自己变得更好
- 定位城市_北方城市如何利用GPS定位器减轻铲雪工作压力?
- 虛擬機xp中安裝幸福之家3.23
- 玩转Redis集群(下)
- “use strict” 严格模式使用(前端基础系列)
- Dell Latitude D630 无法wubi安装Kubuntu
- VB删除带子文件夹和文件的文件夹
- Windows如何添加Loopback
- python生成器表达式_python 生成器和生成器表达式
- 认真分析mmap:what? why? how?
- python prettytable格式设置_Python prettytable模
- 如何利用FL Studio进行听湿录干的声音录制
- 深度学习(十八)基于R-CNN的物体检测-CVPR 2014
- 多商户商城系统功能拆解01讲-产品架构
- 推荐四款可视化工具,解决 99% 的可视化大屏项目!
- python录音pyaudio_Python开发之路(1)-用pyaudio录制和广播,使用,Pyaudio,进行,录音,播音...
- 空间战场态势感知系统
- 拼多多电商外部工具(浏览器插件)
- window10添加局域网计算机,Windows10系统创建局域网图文教程
- shiro 登陆成功后subject依然为空