我的 Linux 系統中有一個名為“.fetchmailrc”的文件,它用於配置 fetchmail 從中獲取郵件的電子郵件地址。因此,我必須以純文字輸入我的密碼和電子郵件地址。
.fetchmailrc 檔案如下所示:
set daemon 1
set logfile /home/user/.fetchmail.log
set no bouncemail
poll pop.gmail.com proto POP3 auth password no dns user "MY_EMAIL" password "MY_PASSWORD" is user keep ssl
mda "/usr/bin/procmail -d %T"
我相信一定有更好的方法來做到這一點,因為如果駭客訪問我的伺服器,他可以輕鬆讀取文件並獲取我的憑證。
我聽說 Linux 系統中有 PAM(可插拔身份驗證模組),但我不知道這是否與我想做的事情有關。
答案1
無論您如何儲存密碼,當執行不提示輸入密碼的程式時,程式都必須使用伺服器上可用的資訊解密儲存的密碼。存取您的伺服器的「駭客」可以使用伺服器上儲存的所有資訊。所以他也可以用程式解密的方式來解密密碼。
如果您用來加密和儲存密碼的方案涉及更多一點,「駭客」可能需要更長的時間。
所以沒有辦法做你想做的事:無論你如何儲存你的密碼,你都不能讓它「駭客安全」。駭客只需執行該程式所做的任何事情(或甚至可能只是執行該程序,並嗅探網路流量)。
PAM 模組與此無關。它們不是用於儲存密碼,而是提供為現有 Linux 服務配置身份驗證方法的方法。必須為其編寫一個希望使用 PAM 的程式。
答案2
使用核心金鑰保留服務
如果您擔心有人重複對您的系統進行 root 訪問,那麼此後您幾乎無能為力。 (但這是一場噩夢,請遵循最佳實踐並保留良好的備份)。
但是,如果一切仍然安全,那麼您可以比在純文字檔案中保留密碼更好(任何找到您正在運行或關閉的系統磁碟機的人都可以讀取它)。做這樣的事情:
- 加密您的主頁,以便文字檔案(在 $HOME 中)至少在您未登入時加密。
- 加密整個驅動器,與上方類似。
- 請勿將密碼儲存在檔案中,僅在需要時自行輸入
- 如果您必須儲存輸入的密碼,請在登入時輸入它們,然後輸入:
- 在變數中(在記憶體中,儘管它們可以在交換中著陸)
- 在裡面核心的密鑰保留服務(鑰匙圈在記憶體中,更安全)。看https://www.kernel.org/doc/Documentation/security/keys.txt並且
man keyctl
,man keyrings
, 也許安東尼·蒂森的一些實際例子和筆記