cha*_*dur 2 linux ssh tty audit
我想监视对 Linux 服务器中的文件所做的所有修改
在一些研究中,我发现我使用以下命令安装和配置了审计工具
yum install audit # installation
/etc/init.d/auditd start # started service
auditctl -w /root/file-name -p war -k password-file # configured rule to audit file
ausearch -f /root/file-name # Command to search modifications
Run Code Online (Sandbox Code Playgroud)
它记录了对特定文件所做的所有修改
一切都很好,直到我遇到以下
案例 1:我使用以下命令从服务器中删除了我正在使用审计监控的文件
rm -rf /root/file-name
Run Code Online (Sandbox Code Playgroud)
记录如下
type=SYSCALL msg=audit(1540222267.321:1057): arch=c000003e syscall=2 success=yes exit=3 a0=7ffe22abf91a a1=941 a2=1b6 a3=7ffe22abed70 items=2 ppid=21053 pid=42458 auid=14628 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=5 comm="touch" exe="/bin/rm" key="password-file"
案例 2:我使用以下命令从远程服务器删除了文件
ssh cl14470 "echo 'rm -rf /root/chaithu'|sudo su - root"
Run Code Online (Sandbox Code Playgroud)
记录如下
type=SYSCALL msg=audit(1540222588.196:1118): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=ce70c0 a2=0 a3=7fff52a6af40 items=2 ppid=42520 pid=42533 auid=14628 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=9 comm="rm" exe="/bin/rm" key="password-file"
现在让我困惑的一点是为什么当我远程执行命令时 tty 被记录为 none
我已经在网上搜索过有关此问题的信息,但不幸的是我找不到任何可以消除我困惑的东西
有人能解释一下为什么在情况 2 中它被记录为 tty=(none)
因为这就是命令的执行方式——没有任何控制 tty。
您尚未将任何-t
选项传递给ssh
,并且ssh
在使用参数调用时默认不分配伪终端,就像您的情况一样。( ssh cl14470 "echo ..."
).
这是ssh(1)
联机帮助页中描述的默认行为:
当服务器接受用户的身份后,服务器要么在非交互式会话中执行给定的命令,要么在未指定命令的情况下登录机器并为用户提供正常的 shell 作为交互式会话。与远程命令或 shell 的所有通信都将自动加密。
如果请求交互式会话,默认情况下 ssh 只会在客户端有一个交互式会话时请求一个伪终端 (pty)。标志 -T 和 -t 可用于覆盖此行为。
所以默认情况下ssh
只会在远程机器上分配一个伪终端,如果a)它在没有“命令”参数的情况下运行并且 b)本地机器上的 ssh 客户端的 stdin是一个 tty。
该-t
选项强制ssh
分配一个伪 tty,该-T
选项强制它不分配一个,而不管其他因素。