我想监控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
它记录了对特定文件所做的所有修改
一切都很好,直到我遇到以下
情况1 :我已使用以下命令删除了我正在使用服务器审核进行监控的文件
rm -rf /root/file-name
记录如下
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"
记录如下
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)
答案1
因为这就是命令的执行方式——没有任何控制 tty。
您没有将任何-t
选项传递给ssh
,并且ssh
在使用参数调用时默认不分配伪终端,就像您的情况一样。 ( ssh cl14470 "echo ..."
)。
这是联机帮助页中描述的默认行为ssh(1)
:
当服务器接受用户的身份时,服务器要么在非交互式会话中执行给定的命令或者,如果未指定命令,则登录计算机并为用户提供普通 shell 作为交互式会话。所有与远程命令或 shell 的通信都将自动加密。
如果请求交互式会话默认情况下,当客户端有伪终端 (pty) 时,ssh 只会请求用于交互式会话的伪终端 (pty)。标志 -T 和 -t 可用于覆盖此行为。
所以ssh
只会在上分配一个伪终端偏僻的默认机器如果A)它在没有“命令”参数的情况下运行和 b)ssh 客户端的标准输入当地的机器是一个tty。
该-t
选项强制ssh
分配一个伪终端,该-T
选项强制它不是分配一项,不考虑其他因素。