Answers:
作为根,您可以用一个简单的包装脚本替换它们的外壳,该脚本记录了他们的命令,然后将它们传递给真实的外壳。这仅在他们登录之前有效。
更换外壳非常容易,要修补外壳本身更好,但是您必须修补所有外壳。我们最喜欢的饼干使用此功能,作为奖励,他不会因禁用bash_history而烦恼自己。
ssh host /bin/sh -i
Snoopy是exec函数的包装器,并记录已执行的任何 外部二进制文件(不是shell内置文件)
@大卫施密特的建议嗤之以鼻使用一种更好的方法,它轻拍伪终端。
ttysnoop使用相同的方法,但未维护。(我可能在使其记录ssh连接时遇到问题,无法记住)
您可以尝试修补ssh来记录会话,但是该修补程序很旧。
ssh host /bin/sh -i
应该做什么?
Sysdig是系统级探索的强大工具-这就是您想要的;)
sysdig -i spy_users
spy_users显示交互式用户活动
列出用户以交互方式(例如从bash)启动的每个命令以及用户访问的每个目录
我编写了一种方法,可以在不使用修补程序或特殊可执行工具的情况下,将所有“ bash”命令/内建命令记录到文本文件或“ syslog”服务器中。
部署非常容易,因为它是一个简单的shellscript,需要在“ bash”初始化时调用一次。
在此处查看方法:http : //blog.pointsoftware.ch/index.php/howto-bash-audit-command-logger
function spy() {
ptsnum=`ps awfux | grep pt[s]\/"$1" | awk '/bas[h]/{print $2}'` ;
/usr/bin/strace -s 1000 -t -f -p $ptsnum 2>&1 3>&1 \
| grep -Poi 'write\(...\"[[:print:]]{1,2}\"[.][.][.][,]..\)' ;
}
[436] klikevil@epiphany ~ $ w<br>
09:36:43 up 12:06, 6 users, load average: 0.46, 0.29, 0.20<br>
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT<br>
klikevil pts/0 75.125.126.8 23:05 2:19m 10:33 0.18s cmd <br>
klikevil pts/1 75.125.126.8 00:18 6:50m 0.06s 0.04s sshd: klikevil [priv]<br>
klikevil tty7 :0 09:02 17:07m 2:02 0.32s x-session-manager<br>
klikevil pts/2 :0.0 09:03 3:30 0.08s 0.08s bash<br>
klikevil pts/3 :0.0 09:03 0.00s 0.76s 0.00s w<br>
klikevil pts/4 :0.0 09:06 3:13 0.46s 0.00s /bin/sh /usr/bin/thunder<br>
[437] klikevil@epiphany ~ $ spy 2<br>
write(2, "e"..., 1)<br>
write(2, "c"..., 1)<br>
write(2, "h"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "s"..., 1)<br>
write(2, "u"..., 1)<br>
write(2, "p"..., 1)<br>
write(2, " "..., 1)<br>
write(2, "d"..., 1)<br>
write(2, "o"..., 1)<br>
write(2, "g"..., 1)<br>
write(2, "\n"..., 1)<br>
^C<br>
如果您不介意通过一系列换行符进行排序,则似乎效果很好。
ttyrpld
看起来不错。在这个问题上推荐。serverfault.com/questions/40011/…–