文件访问监视器

文件访问监视器

如果非根恶意软件试图破解用户的密码,它必须访问哪些密码文件甚至内存部分?如何监控并判断密码文件是否被恶意软件访问?

答案1

大多数发行版将用户登录密码存储在 中/etc/shadow,该文件由所有者拥有root并设置0600为权限,即只能root读取或写入该文件。

话虽这么说,一些发行版提供“密钥环”供用户/程序使用。密钥环本质上是一个秘密存储数据库或文件,例如KDE提供了KWallet,Chromium等程序使用KWallet来存储密码等。

这些密钥环通常按用户进行管理,并以 0600 权限存储,因此只有拥有密钥环的用户才能真正读取它。因此,如果您担心非 root 恶意软件,只要它不以您的用户身份运行,那么在这方面您就相当安全。

不幸的是,我无法为您提供要监视的文件的详尽列表,因为每个发行版都使用自己的秘密管理解决方案(例如 GNOME3 使用 Seahorse 而不是 KWallet)。但我通常会监视以下方面的变化:

~/.ssh/authorized keys # List of keys accepted during SSH logins
~/.profile             # File sourced by your login shell
~/.bash_profile        # File sourced by your login shell
~/.bashrc              # File sourced by your login shell

关于监控,也许最简单的设置方法是通过auditctl.

例如,这将监视对 bob 的 KWallet 数据库文件的所有访问:(临时规则,重新启动时清除,除非添加到/etc/audit/audit.rules

sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa

并用于审查访问:

sudo less /var/log/audit/audit.log

这里一些文档可以帮助您创建自己的规则

答案2

如果非 root 软件尝试更改用户,您可以使用以下lastb命令进行检查:

$ sudo lastb -a | more
user     pts/2        Mon Aug 10 08:17 - 08:17  (00:00)
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     46.148.201.206
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     161.35.32.43
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     13.68.137.194
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     115.196.179.138

user在这种情况下,我使用失败的密码登录su。您可以在日志中看到这一点。您还可以看到随机 IP 不断尝试通过 ssh 猜测我的 root 密码。

如果您想设置 inotify 或 systemd 路径来监视文件访问,则要监视的文件是/var/log/btmp.lastb使用该文件。

如果您想检查是否成功登录,请使用last.这监控/var/log/wtmp

$ last -a
usera    pts/5        Fri Jul 31 03:00 - 03:17  (00:16)     54.36.10.77
usera    pts/5        Thu Jul 30 21:36 - 21:37  (00:01)     54.36.10.77
usera    pts/5        Wed Jul 29 08:54 - 08:54  (00:00)     127.0.0.1
userb    tty7         Tue Jul 21 11:29   still logged in    :0
userb    tty7         Tue Jul 21 10:59 - 11:29  (00:30)     :0
userb    tty7         Tue Jul 21 07:27 - 10:58  (03:31)     :0
reboot   system boot  Tue Jul 21 09:27   still running      5.7.0-1-amd64
...

答案3

在 Linux 上,您可以使用 inotify 框架和相关的命令行工具来观察另一个进程进行的某些文件访问。

以下是供参考的手册页

如果你想要更复杂的行为,这个框架可以绑定大多数脚本语言(python、lua 等......)

相关内容