linux自带perl加密,关于加密:如何在Perl脚本中加密或隐藏密码?
我正在研究Perl腳本,它使用Expect通過telnet登錄到遠程機器(不要問,必須使用telnet)。我還根據需要執行P4登錄操作,并使用Expect-to管道輸入正確的密碼。目前,我只是從明文環境變量(即export PASSWORD=password)中讀取密碼,我知道這是不明智的安全措施。
對于需要多個系統的大量密碼的腳本,存儲密碼的最佳方法是什么?以某種方式在文本文件中加密?或者別的什么?
請記住,我不能輕易地更改現有系統,例如,我不能真正安裝ssh或類似的東西。
您試圖防御哪些類型的威脅?在你工作的盒子上,你信任(或不信任)其他用戶多少?
我只是開始這個腳本的工作,為了測試的目的,我把它作為純文本。所以有共享的用戶,很多用戶共享這個盒子。所以主要是我希望其他用戶至少不能隨意地讀取所有密碼。
也許你最好的方法是把密碼放在一個單獨的文件中,并鎖定該文件的安全性,這樣只有你有讀取權限。不幸的是,如果您在腳本中存儲加密的密碼,您還必須存儲解密方法,這樣攻擊者就可以運行解密并恢復您的密碼。
+1它是唯一合乎邏輯的解決方案,除非您想采用"通過模糊的安全"路徑。
@lacqui-您可以在xs中編寫(en de)加密代碼并編譯它,并通過perl與之接口,(為了安全起見)不使用標準的模塊分發來分發xs源代碼。但即使這樣也不完美。
前面有一個非常相似的問題,看我的答案。
簡而言之,人類必須擺脫信任鏈。其他的一切都令人困惑。
如果使用telnet,為什么要擔心腳本中的密碼?一個假定的攻擊者會發現,從網絡上捕獲數據比從遠程機器上捕獲更容易,也更容易,而且在任何情況下您都無法對其做任何處理。
這聽起來像是一個試圖把柵欄放在窗戶里,讓門搖擺不定的例子。
這是一個很好的觀點,我意識到使用telnet是一個壞主意,當然不是我的主意,但并沒有在這些方面考慮。你真的是認真的嗎?我不在乎?我想我必須關心,因為代碼審查等,但有趣的想法,盡管如此。
將原因記錄在代碼中,推動流程中的更改,并將其記錄在代碼中。加密密碼,然后通過telnet從腳本發送明文,就像用代碼寫下你的密碼,然后在一個滿是你不認識的人的房間里大喊大叫。
雖然我同意telnet,但僅僅因為前門的鎖壞了并不意味著你就把所有窗戶的鎖都拆了。當你最后把前門鎖修好時會發生什么?
當然有一個平衡。在我看來,這就像是一個有著系統性壞習慣的商店,試圖在問題上撒上一點小精靈的灰塵,并稱之為"完成"。這就是為什么我提倡記錄這些問題,并明確它們之間的相互關系。只有這樣你才能修好它們。
為了評估范圍,在分段交換網絡中讀取嗅探密碼的問題。這并不簡單,所以我認為加密腳本中使用的密碼仍然有幫助。我對你的回答投了贊成票,這當然讓我想起來了。刪除所有的telnet可能是非常昂貴的工作(數百萬)。
不過,我應該補充一點,移動到ssh是在這里發生的,并非所有機器都是一夜之間發生的。
我加入了關于telnet是這里最大的問題的討論。但我認為,當系統不能100%安全時,這種"為什么麻煩"的態度在信息安全領域太普遍了。噩夢般不安全的遺留系統無處不在,它們必須一個問題一個問題地處理。關于窗戶/門的比喻,讓門敞開并不是不在窗戶上加橫條的原因。你應該兩者兼而有之,但是即使組織或預算的限制使"關門"成為不可能,也沒有任何好的理由不關心系統的安全。
另外,對于telnet,如果在某些系統上安裝ssh是不可能的,請不要放棄。您至少可以看看明文telnet數據包在網絡中的位置。如果你有幸擁有現代交換機和管理它們的人,如果你有幸在一個或兩個系統上都有一個額外的以太網卡,那么就把它們放進自己的VLAN中。如果您幸運地擁有一個防火墻或路由器ACL可用,那么就加入第3層和第4層規則限制telnet的來源和去向。
當你使用MacOSX的時候,我發現了從你的鑰匙鏈中獲取用戶名和密碼的好方法。
更新:截至2013年7月22日,鏈接似乎已斷開。下面的bash代碼片段顯示了我如何使用該技術(下載iTunes銷售數據):
domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)
這里的鏈接斷了…
@迪恩看到更新的答案。
既然您已經在使用expect,那么您應該考慮在包含密碼的加密文件上重定向gpg-d。在系統環境變量中存儲密碼顯然是錯誤的。用于解密GPG文件的密碼將在開始時輸入,然后從文件中加載所有密碼并運行您的資料。然后就完成了,所以密碼只在應用程序運行時以明文形式存在。
編輯就像旁注一樣,在腳本中輸入任何密碼都是不好的;請記住,腳本只是一個純文本文件,這使得查看密碼變得非常容易。同樣地,即使您編譯的應用程序也可以使用"字符串"進行反轉,該字符串可以查找代碼中包含的字符串(通常是密碼)。
所以我假設您的意思是"GNU隱私保護",它看起來并不存在于我們的盒子中,就您所知,GPG在hpux和solaris上編譯沒有問題嗎?
我不確定gpg是否有solaris和hpux,但是如果它們是基于*nix的框,那么我確定有一個源。
我喜歡前面提到的將密碼放在單獨文件中的解決方案。此外,您還可以散列實際密碼,就像/etc/passwd中所做的那樣。盡管根據應用程序的方式,您可能會對所有的哈希鍵使用相同的哈希鍵。顯然,這種方法的缺點是,必須有人輸入hashkey才能運行腳本,而這在批處理環境中是行不通的。
從這個stackoverflow問題開始學習散列技術
總結
以上是生活随笔為你收集整理的linux自带perl加密,关于加密:如何在Perl脚本中加密或隐藏密码?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实用 JavaScript 调试技巧
- 下一篇: linux shell执行perl脚本,