在 Linux 中通过 ssh 审核文件修改

在 Linux 中通过 ssh 审核文件修改

我想监控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选项强制它不是分配一项,不考虑其他因素。

相关内容