非 root 的郵件日誌的 Grep 訪問

非 root 的郵件日誌的 Grep 訪問

我想授予特定(常規)使用者grep存取我的郵件日誌的權限 ( /var/log/maillog*)。

我不准備更改日誌權限,因為它們應該保留root為 -only,所以我認為首選解決方案是通過sudoers.

另外:我想授予盡可能少的其他權限,理想情況下用戶只能存取郵件日誌(和輪換檔案)。

例如:

username ALL= NOPASSWD: /bin/grep 

基本上允許該用戶grep存取系統上的任何文件,這是我想避免的。

這裡最好的解決方案是什麼?
僅供參考:它本身不需要grep:使用者只需要對郵件日誌的讀取存取權限,並且可能僅用於grep存取它們。

答案1

您可以對檔案使用 acl 來授予使用者讀取權限

setfacl -m user:grepuser:r /var/log/maillog*

這是允許用戶使用他們想要的任何工具的優點。

這對於郵件日誌來說也是安全的 logrotate*

答案2

除非您知道用戶將搜尋哪些特定字串以及他們將檢查使用的特定文件,否則sudo這不是一個好的解決方案。如果您建立這樣的規則:

blizz ALL=root NOPASSWD: /bin/grep * /var/log/maillog*

用戶將能夠運行如下命令:

grep root /etc/shadow /var/log/maillog
grep = /root/my.cnf /var/log/maillog

他們將能夠讀取系統上的任何檔案。您可以在此處找到有關此問題的更多資訊:

http://blog.csnc.ch/2012/10/dangerous-sudoers-entries-part-4-wildcards/

如果您知道使用者將檢​​查哪些字串和文件,您可以為每個場景定義單獨的規則。例如:

Cmnd_Alias  MAILLOGA = /bin/grep 'Connection refused' /var/log/maillog
Cmnd_Alias  MAILLOGB = /bin/grep 'Connection refused' /var/log/maillog.1
Cmnd_Alias  MAILLOGC = /bin/grep 'imap-login' /var/log/maillog
Cmnd_Alias  MAILLOGD = /bin/grep 'imap-login' /var/log/maillog.1
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

但是,這可能很麻煩,並且可能導致 sudo 配置過大。

或者,grep您可以透過命令授予他們對文件的存取權限more,然後他們可以互動式地搜尋文件:

Cmnd_Alias  MAILLOG = /bin/more /var/log/mailllog
Cmnd_Alias  MAILLOG1 = /bin/more /var/log/mailllog.1
Cmnd_Alias  MAILLOG2 = /bin/more /var/log/mailllog.2
Cmnd_Alias  MAILLOG3 = /bin/more /var/log/mailllog.3
blizz ALL=root NOPASSWD: MAILLOGA, MAILLOGB, MAILLOGC, MAILLOGD

但是,這不允許使用者保留其搜尋記錄(例如.bash_history)或建立自己的搜尋腳本或別名。另外,如果您進行了日誌輪換,他們將無法解析壓縮日誌。

筆記:不要授予 sudo 對該less命令的存取權限。使用者可以突破該進程,例如運行!/bin/bashinless會給他們系統的 root 存取權。

另一種選擇是為他們制定cat文件規則,以便他們可以grep按照自己的意願透過管道傳輸文件。例如:

sudo cat /var/log/maillog | grep "anything can go here"

最後,最簡單也可能是最好的解決方案是透過更改日誌檔案的權限來授予他們對日誌的讀取存取權。你可以這樣做:

groupadd logcheck
chgrp logcheck /var/log/maillog*
chmod g+r /var/log/maillog*
useradd -G logcheck blizz

然後他們可以使用任何他們想要分析文件的工具(例如grep,,,,,zgrep等)。lessmoreview

答案3

這應該按預期工作蘇多爾斯文件:

%users  ALL= /bin/cat /var/log/mail.log
%users  ALL= /bin/cat /var/log/mail.err

(來自 Ubuntu 的日誌路徑,如有必要請更改)

使用通用的、僅輸出的工具,例如簡單又安全。您不必像以下那樣允許和限制特定選項grep直接在 sudoers 中。它還將允許使用任何過濾日誌grep 或不工具,即。awk,sed

不知道如何須藤在CentOS中配置,但如果提示輸入密碼呼叫用戶(不屬於目標用戶),我會避免使用無密碼WD。如果任何敵對方在不知道使用者密碼的情況下存取使用者帳戶,這可能是安全優勢。

相關內容