文件存取監視器

文件存取監視器

如果非根惡意軟體試圖破解使用者的密碼,它必須存取哪些密碼檔案甚至記憶體部分?如何監控並判斷密碼檔案是否被惡意軟體存取?

答案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 等......)

相關內容