最近幫自己的工作經驗進行些總結分享
System Administration or Site Reliability Engineering 的職能可貴於資訊安全的把持與掌握
密碼之於資訊生活息息相關,所以
1. 定期更換密碼 (Password Rotation)
2. 不要使用簡易密碼 (Do not Use Weak Password)
3. 密碼分類 (EX: Server Farm or Public Services)
4. 增加密碼複雜度
以下分享一些自己常用的密碼規則與原則
1. 定期更換密碼
據我目前所知,目前沒有任何密碼可以能成功防禦任何攻擊
換句話說,根據科技與演算法的演進,任何密碼都有機率被擊破,都是時間長短的問題
所以定期更換密碼讓攻擊重洗牌是一個有益無害的好方法
2. 不要使用簡易密碼
這邊說的是懶人密碼,或是已知字典檔的清單與規則
順手將密碼加個大寫或者符號,都能有效延長密碼被擊破的時間
3. 密碼分類 (EX: Server Farm or Public Services)
Server Farm:
以 Ubuntu 設計,你沒辦法使用 Root 登入機器,但可以透過 (#sudo -i) 拿到 Root 的權限
我覺得這很重要,任何 Server Farm 的服務都不應該以 Root 權限進行,應使用各自的 User:Group 執行
EX: www, www-data, mysql, etc.
記得 User:Group nologin 也很重要,服務專用的 User:Group 專心在機器上執行運作就好,跟 Root 一樣不應該被拿來登入維運
Public Services:
(EX: Google Mail, iTunes, Forum, etc.)
外部服務大家經常密碼會這樣用,慣用的帳號,慣用的密碼,甚至在瀏覽器上記錄密碼。
Ref: Have I been pwned?
很方便沒錯,但當密碼被紀錄的同時,密碼遭外洩的機會也就隨之增加。
所以我的建議是,盡量使用 OTP (One Time Password)
當慣用密碼外洩時,至少還有 OTP (One Time Password) 的密碼強度再多一層的防護
當然,這邊的慣用密碼也是不應該出現的訊息
第四點會提到如何改善避免使用相同的慣用密碼
4. 增加密碼複雜度
Server Farm:
OTP (One Time Password) + ACL (Access Control List)
最主要的權限,密碼最好連自己都不知道,需要使用的時候密碼重設就好
我的作法會建議 使用 timestamp 作為 seed 進行處理
root@work:~# time +%s | openssl sha256 (stdin)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
雖然當下的 timestamp 範圍還是有可能被蒐集,並交給 openssl 處理,所以這段密碼是可逆的
我們可以針對字串直接加工,排在一起比較看得出差異
Before: (stdin)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 After: (stdin)= e3B0c44298fc1c149afbf4c8996fb9242&ae41e4649b934ca495991b7852b855
如果這段密碼沒有被記錄起來,我的習慣是,15 分鐘內我會完全沒有印象
這也是我對主要權限定義的 OTP
ACL (Access Control List) 顧名思義就是設定那些授權存取來源
常見是從 IP 管理,有蠻多節點可以介入 (EX: Network, Load Balance, Firewall, Server, etc.)
怎麼使用則見仁見智了
Public Services:
中文好用的地方在於母語與英語的鍵盤對應,產生的亂數組合就已經夠複雜了
EX: “三重本城伍” <=> “n0 tj/61p3t/6j3”
這邊已經加入符號了,數字也可以做些文章,例如最後一個字的音節加 Shift 按鍵
EX: “三重本城伍” <=> “n0 tj/61p3t/6j#”
當密碼強度出來後,養成好習慣不要一套密碼讓所有的系統使用,所以我會用作為 prefix or suffix
EX: “三重本城伍” @ Eyny <=> “n0 tj/61p3t/6j#eyny” or “eynyn0 tj/61p3t/6j#”
當每個網站的密碼都不同,相同的慣用密碼就不容易在網際網路的服務間流通共用,還能保有一定的密碼使用習慣
—-
祝大家密碼都不要被偷,系統資安強度沒漏洞