我知道这已经过时了,但我认为可能是他在寻找的脚本命令?
> script my_output_file
Script started, file is my_output_file
http://www-users.cs.umn.edu/~gini/1901-07s/files/script.html
看起来在http://administratosphere.wordpress.com/2011/05/20/logging-every-shell-command/有一篇很好的关于shell审计的文章。
这篇文章考虑了用户历史文件的可靠性(并提供改进信息),还讨论了内置于shell中的显式审计功能。也许你使用的环境没有启用审计功能编译的shell,但如果您有构建源代码和配置的可用性(至少对于任何Linux发行版),应该不难在保持默认发行版的情况下启用审计功能。
这种方法仍然会留下通过某个命令或从某个程序中调用的操作系统功能执行的命令。因此,例如,如果您在计算机上有perl或任何其他编程语言解释器可用,尽管您可能可以审计perl的执行,但无法知道用户告诉perl解释器要做什么。另一方面,即使进行了shell审计,我不确定是否可以看到从编辑器(如vi)内部作为过滤器执行perl的执行。
因此,尽管shell审计将为您提供一层审计,但除非您的环境真的针对与shell不同的其他执行路径进行了加强,否则收益并不是很大。
您应该考虑需要审计的用户实际上是否需要shell访问权限,如果没有,请为他们提供一个更有限但具备审计功能的小型文本菜单系统?
获取bash源代码。在exec调用周围添加记录器。编译它。在登录后将其作为第一个命令运行。
其他所有内容都需要root权限。
对于偶尔录制,我通常运行
ssh localhost | tee -a recorded-session.log
这个方法效果很好。
有启用审计、tty录制、黑客和免费工具可供使用,但是根据您试图控制的环境规模,您最好同时使用审计和专注于解决您想要解决的挑战的产品。一些非常受欢迎的产品,被一些金融服务客户使用,包括[Observe-IT, Centrify 和 PowerBroker]
希望这有所帮助
最简单的解决方法是,如果您是root用户并且有权限更改系统文件,则可以通过重定向控制台本身来实现:
如果您使用例如/bin/sh
作为默认控制台,请将其移动到/bin/hs
并在/bin/sh
下创建一个类似于此的文件:
#!/bin/hs
ORIGSHELL=/bin/hs
LOGFILE=/var/log/whatyoulike
OPTIONS="$@"
USER=`whoami`
WEBUSER=web
WILD=NO
WARN=NO
if [ "$USER" = "$WEBUSER" ]
then
#Ok then - are we doing something wild?
for ARG in $@
do
case "$ARG" in
*\/lynx)
WILD=YES
;;
*\/wget)
WILD=YES
WARN=YES
;;
*\/curl)
WILD=YES
WARN=YES
;;
*\/links)
WILD=YES
WARN=YES
;;
*\/fetch)
WILD=YES
WARN=YES
;;
esac
done
#Are we wild?
if [ "$WILD" = "YES" ]
then
HOST=`hostname`
IPADDR=`resolveip -s $HOST`
NETSTAT=`/usr/bin/nighthawk -ape --numeric-hosts --numeric-ports --tcp | grep 'ESTABLISHED web'`
# Log it.
echo "`date` [$USER] $IPADDR "$@"" >> $LOGFILE
echo "$NETSTAT" >> $LOGFILE
fi
#Are we REALLY wild?
if [ "$WARN" = "YES" ]
then
# Mail it!
mail -s 'HACKATTACK' youremail@domain.com < $LOGFILE &
fi
fi
# Now, do it.
exec $OPERATION "$@"
#we never come here...
exit 0
这只是一个例子,展示如何透明地跟踪所有内容。您可以自由检查输入。
上面的脚本用于查找当前 shell 的发起者,以便您可以对其做出反应。
当然,上述情况检查并不是我们真正使用的检查方式 ;) - 但是它是一个很好的样本。
希望能有所帮助, Jimmy
获取 /home/victim/.bash_history
或 /home/victim/.config/fish/fish_history
这些将让您查看用户输入的所有 bash 和 fish shell 命令及其参数。