Linux工作站安全檢查清單解析

來源:互聯網
上載者:User

Linux工作站安全檢查清單解析

目標讀者

本文檔目標讀者為使用 Linux 工作站進行訪問和管理項目基礎設施團隊中的系統管理員。

如果你們團隊的系統管理員是一名遠程辦公人員,你可以使用本文檔協助他們確保工作站達到最基本的安全要求,以降低他們受到攻擊的風險。

即使你們的系統管理員不是遠程辦公人員,但是他們也可能會在辦公環境下使用自己的膝上型電腦來完成很多的工作,亦或者他們可能會在下班時間或遇到突髮狀況時,利用家中的裝置來訪問工作環境。在這些情況下,你可以適當調整本套規範以適應你當前的環境。

局限

但請注意,這不是一份詳盡的“工作站加固”文檔,而是嘗試提出一組基本建議,以避免出現一些明顯的安全問題從而導致損失。當你讀到這份文檔時可能會覺得有些偏執,也可能會覺得太膚淺。但安全就像駕車行駛在高速公路上,你會認為任何速度比你慢的都是傻瓜,而比你快的都是瘋子。這份指南僅僅是一套基礎安全規範,既不詳盡,也不能代替經驗、警覺和常識。

文檔結構

文檔每一章節都分為兩個部分:

1.適用於你項目需求的清單

2.解釋為什麼要這麼做的原因

安全等級

每一個清單條目都會給出一個安全等級,我們希望這能協助你做出決定:

1.高(ESSENTIAL) 該條目應該要被高度重視。如果存在問題,它會導致工作站處在一個高風險中。2.中(NICE) 該條目有助於提升工作站整體的安全性,但可能會影響到你的工作習慣,需要你重新培養工作習慣。3.低(PARANOID) 該條目為保留項,我們覺得其將大大提升工作站的安全性,但也需要進行大量的調整。

請牢記,這些僅僅只是參考。如果你覺得這個安全等級沒有影響到你項目的安全,你可以自己調整它們為合適值。

選擇正確的硬體

我們不要求我們的管理員使用指定的供應商或特定的模式,所以本章將主要討論選擇工作系統時的注意事項。

清單

1.系統支援SecureBoot功能(高)2.系統沒有火線(firewire),雷電(thunderbolt)和ExpressCard 介面(中)3.系統擁有TPM安全晶片(中)

原因

??SecureBoot 功能

??儘管其還存在一些爭議,但SecureBoot功能還是能夠抵禦一些針對工作站的攻擊(如:Rootkits和“Evil Maid”等等)而不引入其他的麻煩。SecureBoot功能並不能阻止APT攻擊,但有總比沒有強吧。

另外,你也可以選擇額外部署Anti Evil Maid,其針對SecureBoot攻擊提供更加完善的防護措施,但這需要更多的投入和維護。

??火線(firewire),雷電(thunderbolt)和ExpressCard 介面

??Firewire是一種標準,允許任何串連的裝置直接存取系統記憶體(百度百科)。Thunderbolt 和 ExpressCard 也同樣存在類似的問題,雖然之後有限制 Thunderbolt 訪問記憶體的能力。如果你的系統上沒有這些介面那是最好的,不過即使有也沒關係,它們通常可以通過 UEFI 關閉或者核心中禁用。

??TPM 安全晶片

??TPM(Trusted Platform Module)安全晶片是主板上獨立於處理器的加密晶片,其可以提供系統額外的安全性(例如儲存全盤加密金鑰),但其基本不會用於工作站操作中。換句話說,TMP安全晶片也只是一個有則更好的東西,除非你有特殊的安全需求需要使用它來增強安全性。

安裝前的環境

下面是一組在為工作站安裝作業系統前的建議。

清單

1.使用 UEFI 引導模式(不使用傳統的 BIOS)(高)2.設定進入 UEFI 配置的密碼(高)3.啟用SecureBoot功能(高)4.開機時需要輸入 UEFI 密碼(中)

原因

UEFI 和 SecureBoot

UEFI 儘管也存在一些缺點,但其提供一些 BIOS 所沒有的安全功能,例如:SecureBoot。目前大多數現代系統預設都是使用 UEFI 模式。

確保進入 UEFI 配置模式所需的是一個高強度的密碼。注意,由於許多廠商悄悄限制了可使用密碼的長度,所以你可能需要選擇使用短的密碼(password)或者長的密碼短語(passphrases)。

根據你所選擇的 Linux 發行版,你可能需要或不需要匯入額外的安全密鑰,來啟動該發行版。現在很多的發行版已經與微軟進行合作,使用大多數廠商所公認的密鑰來對他們的核心進行簽名,從而為使用者減少麻煩。

作為一個額外的措施,讓那些想進入引導區嘗試做壞事的人在進入前必須輸入密碼。這個密碼應該不同於 UEFI 的管理密碼,以防止出現肩窺。如果你需要經常關閉和啟動系統,你可以無視這條,因為你已經需要輸入進入系統的密碼了,無需在輸入一些額外的其他密碼。

發行版的選擇

你可能會選擇一個廣泛使用的發行版,例如:Fedora,Ubuntu,Arch,Debian或者基於它們的其他發行版。無論你選擇哪一個發行版,選擇前你都應該考慮下面的事項:

清單

1.具有強大的 MAC/RBAC 功能(SELinux/AppArmor/GrSecurity)(高)2.發布資訊安全諮詢(高)3.及時推送安全補丁(高)4.提供軟體包加密驗證(高)5.完全支援 UEFI 和 SecureBoot功能(高)6.提供強大的本地全盤加密支援(高)

原因

SELinux, AppArmor 和 GrSecurity/PaX

強制存取控制(MAC)和角色型存取控制(RBAC)是老式 POSIX 系統中一種對基本使用者\使用者組安全機制的擴充。當前不少數的發行版都已經內建了MAC/RBAC 功能(Fedora,Ubuntu)或者將 MAC/RBAC 作為安裝後可選的附加項提供給使用者(Gentoo,Arch,Debian)。很顯然,我們強烈建議你選擇一個已內建 MAC/RBAC 功能的發行版,不過如果你對使用其他的發行版有強烈的意願,那麼也請在安裝好系統後在安裝 MAC/RBAC 功能。

應該堅決避免使用不提供 MAC/RBAC 功能的發行版,在今日像傳統 POSIX 基於使用者和使用者組的安全措施已被證明不在是可靠的了。如果你想建立一個 MAC/RBAC 工作站,AppArmor 和 GrSecurity/PaX 通常被認為要比 SELinux 更加簡單。此外,在工作站中,很少甚至沒有對監聽程式的守護進程,GrSecurity/PaX 在應對來自使用者運行程式的高風險上的安全措施也要強於 SELinux。

發布資訊安全諮詢

大多數廣泛使用的發行版都有向使用者發布資訊安全諮詢的機制,但是如果你喜歡鑽研,你可以檢查開發人員是否有基於文檔提示使用者關於安全性漏洞和補丁的機制。如果一個發行版缺乏相應資訊安全諮詢機制是一個非常危險的訊號,說明這個發行版還不夠成熟不具有擔當主伺服器的能力。

及時推送安全補丁

大多數廣泛使用的發行版都具備及時推送安全補丁的能力,但是還是應該經常檢查更新以確保及時安裝推送的安全補丁。應當避免使用“衍生版”和“社區重建版”,因為他們需要等待原生版發布相應的安全補丁才能進行推送,這就會延誤補丁到達使用者的速度。

現在已經很難在看到一個不使用加密簽名的軟體包,不更新中繼資料,或者包含兩者的發行版。這就是說,常見的發行版早已經都知道推出這些基本的安全措施(Arch,說你呢),所以這是一件值得檢查的事情。

完全支援 UEFI 和 SecureBoot功能

查看發行版是否支援 UEFI 和 SecureBoot功能。找出看是否需要額外輸入一個密鑰或者是否需要啟動一個使用大多數廠商認可的密鑰簽名的核心(例如同微軟合作的發行版)。一些發行版不支援 UEFI/SecureBoot 但是卻會提供其他安全措施以不防止啟動環境被篡改或破壞(Qubes-OS 使用Anti Evil Maid,前面有提過)。如果一個發行版既不支援 SecureBoot 也沒有其他預防 Boot 層級攻擊的措施,那還是看看別的發行版吧。

全盤加密

全盤加密是對資料進行安全防護的一個要求,現在大部分的發行版都支援全盤加密。作為替代品,安裝在帶有自加密功能的硬碟上的系統也是可以使用的(一般通過使用 TPM 安全晶片實現),其提供更高層次的安全和更快的運行速度,但是也要求更高的成本。

發行版安裝指南

所有發行版的安裝都是不一樣的,這裡給出的只是一般的準則:

清單

1.使用一個複雜的密碼進行全盤加密(LUKS)(高)2.確保對 swap 交換分區也進行加密(高)3.確保編輯啟動程式也要求輸入密碼(可以跟LUKS使用相同的密碼)(高)4.設定一個複雜的 root 密碼(可以跟LUKS使用相同的密碼)(高)5.使用普通使用者作為Administrator 群組中的一部分(高)6.要求使用者密碼必須為複雜密碼且不能同於 root 密碼(高)

原因

全盤加密

除非你使用具有自加密功能的硬碟,不然你很有必要設定全盤加密,這樣將可以極大的保護提升使用者資料和系統檔案的完整性。簡單的自動掛載 cryptfs 檔案是不夠的(老版 Ubuntu,說你呢),因為這樣沒有提供對系統二進位檔案和交換分區的保護,而這其中可能會包含大量的敏感性資料。推薦的加密措施是加密 LVM 裝置,這樣在啟動過程中只需要一個密碼。

/boot 分區通常會保持未加密狀態,因為引導程式需要在載入解密程式前先啟動系統核心。部分發行版也會支援對 /boot 分區進行加密(如 Arch),但這可能會增加系統更新的複雜度。是否對 /boot 分區進行加密不是我們選取發行版的關鍵,因為通常核心鏡像不會泄露隱私資料,而且 SecureBoot 也會檢查加密簽名以防止篡改資料。

選擇一個好密碼

現代作業系統基本對密碼長度沒有限制,所以唯一限制你密碼長度的是你的偏執和固執。如果你經常啟動系統,你可能會需要輸入兩個不同的密碼:一個用於解鎖 LUKS,另一個則用於登入,這時使用一個很長的密碼可能就不那麼方便了。選取的密碼長度大概 2-3 個單詞而且易於輸入就行,不過單詞最好選擇那些豐富或複合單詞。

下面是一些好密碼的執行個體(對的,你可以使用空格):

nature abhors roombas12 in-flight Jebediahsperdon, tengo flatulence

下面是一些弱口令的樣本,可能是你在公開的工作中常用的詞或者是你生活中常用的詞:

Mary had a little lambyou’re a wizard, Harryto infinity and beyond

如果你想要使用非單詞的密碼,那麼請確保密碼至少達到 10-12 個字元長度。

除非你有對物理安全的擔憂,不然你可以寫下你的密碼,然後儲存在一個遠離你辦公桌安全的地方。

Root,使用者密碼和Administrator 群組

我們建議 root 密碼和 LUKS 使用相同的密碼(除非你於他人共用一台筆記本,允許他解鎖硬碟但卻不能使用root登入你的系統)。如果你是這台筆記本唯一的使用者,那麼 root 密碼和 LUKS 使用不同的密碼從安全形度來說沒有更多優勢的。通常來說,你可以在 UEFI 管理,硬碟加密和 root 賬戶上使用相同的密碼,因為攻擊者只需要擷取到上述任何一個密碼都可以完全控制你的機器,所以在單使用者的工作站上使用不同的密碼在安全方面並沒有什麼特別的好處。

你應該使用另一個同樣具有複雜密碼的賬戶來完成日常的工作。這個使用者應當屬於Administrator 群組中(例如wheel或其他類似的,這取決於你使用的發行版),可以使用 sudo 命令來提升許可權。

換句話說,如果你是工作站唯一的使用者,你應當擁有兩個獨特的且複雜的密碼需要記住:

管理員層級應用於:

1.UEFI 管理2.引導程式(GRUB)3.硬碟加密(LUKS)4.管理工作站(root 使用者)

使用者層級應用於:

1.使用者賬戶和 sudo2.密碼管理器的主密碼

很明顯,以上這些應當使用不同的密碼。

安裝完後的加固

安裝完系統後的安全強化取決於你所使用的發行版,所以無法在這種通用文檔中具體來說。不過,下面這些步驟你應該要知道:

清單

1.全域禁用火線和雷電模組(高)2.檢測防火牆確保過濾所有傳入連接埠(高)3.確保 root 郵件轉寄到一個你經常查看的賬戶上(高)4.設定系統自動更新任務或者更新提醒(高)5.確認預設情況下 sshd 服務被禁用(中)6.設定空閑時自動鎖屏(中)7.設定 logwatch 監控日誌(中)8.安裝並使用 rkhunter 查殺後門(中)9.安裝入侵偵測系統(IDS)(中)

原因

黑名單模組

將火線和雷電模組列入黑名單,將下面兩行加入檔案 /etc/modprobe.d/blacklist-dma.conf:

blacklist firewire-coreblacklist thunderbolt

重啟後這些模組就會被禁用。即使你沒有這些模組也可以這麼做。

Root 郵件

通常,Root 郵件都僅僅只是儲存在系統中而從未有人去讀取過。確保修改 /etc/aliases 檔案轉寄 Root 郵件到一個你真的會查看的郵箱中,否則你可能會錯過一些重要的系統通知和報告:

# Person who should get root's mailroot:          [email protected]

在編輯完後執行命令 newaliases 以測試確能轉寄成功,因為一些郵件廠商會拒絕接收來自不存在或不可路由網域名的郵件。

防火牆,sshd和監聽守護進程

防火牆的預設配置取決於你使用的發行版,但大部分都會允許來自 sshd 連接埠的傳入。除非你有什麼無可反駁的理由,不然你應該過濾並禁用 sshd 進程。

systemctl disable sshd.servicesystemctl stop sshd.service

如果你需要使用它隨時都可以啟用。通常來說,你的系統不應當監聽任何連接埠,除了回應 ping。這將會協助降低來自 0day的攻擊威脅。

自動更新或通知

建議開啟自動更新,除非你有更好的理由不這麼做,例如你害怕自動更新會導致系統的崩潰(這並非杞人憂天,以前的確發生過)。但是至少你也應該開啟自動通知當前可用的更新。大部分的發行版預設都會開啟這些服務,所以你什麼都不用做。具體的你可以查看發行版的相關文檔。

你應當儘可能的關注所有明顯的勘誤(errata),即使有些沒有特別的標明是“安全更新”或者有相應的 CVE 編號。所有的 bug 都可能成為潛在的安全問題或者導致其他新的問題,未知的 bug 通常只比已知的要安全一些。

監視日誌

你應當對你系統上發生的事情產生濃厚的興趣。所以,你應當安裝 logwatch 並配置它在每天晚上發送關於你系統上發生所有事情的報告。這並不能阻止一些有針對性的攻擊者,但這是一個不錯的安全習慣。

請注意,有些發行版系統不再自動安裝 logwatch 所需的 syslog 服務(因為systemd 會存在它們自己的日誌中),所以你需要安裝並啟用 rsyslog,然後確保在使用 logwatch前你的/var/log 不是空的。

Rkhunter 和 IDS

安裝 Rkhunter 和 一個IDS(如:aide或tripwire)並沒有什麼太大的左右,除非你真的瞭解它們的工作原理並進行正確的配置(例如:分離資料庫在外部介質上,從可信的環境中運作檢測,在執行系統更新和修改配置後更新雜湊資料庫,等等)。如果你不願意執行這些步驟並調整對你工作站的工作方式,那麼這些工具只會增加麻煩而起不到任何的安全作用。

我們建議你安裝 rkhunter 並每晚運行一次。它易學易用,雖然不能幫你阻止一個經驗豐富的攻擊者,但是卻能讓你發現自己的錯誤。

備份個人工作站

工作站的備份往往會被忽視或者很隨意進行備份,這都是很不安全的。

清單

1.對工作站備份進行加密並儲存在外部儲存上(高)

2.使用零知識備份工具進行異地或雲備份(中)

原因

全加密外部儲存上的備份

使用一個外部移動硬碟可以很方便的拷貝出所有的備份,而無需擔心頻寬和上行速度(目前,大部分的供應商仍然提供明顯不對稱的上行/下載速度)。無需多言,這個硬碟本身也是需要加密的(再說一次,使用 LUKS),或者你應該使用備份工具建立加密的備份,例如:duplicity或者其 GUI 版本 deja-dup。我建議使用後一種方式,並使用一個不錯的隨機密碼存放在一個安全離線的地方。你過你帶上筆記本外出旅遊,那麼把硬碟放在家裡,這樣萬一丟失筆記本還可以恢複部分資料。

除了你的 home 目錄外,你還應當備份 /etc 和可用於取證的 /var/log 目錄。

最重要的是,避免將 home 目錄拷貝到一個沒有加密的存放裝置上,即使這是在兩個系統間最快的拷貝方式,一旦完成你肯定會忘記刪除它,這樣你就會暴露潛在的個人隱私和其他敏感的安全資料給監聽者。特別是當你把這個存放裝置跟筆記本放在同一個包內。

選擇零知識備份工具進行異地備份

進行異地備份也是相當重要的,你既可以通過要求老闆提供異地儲存的空間,也可以尋找雲供應商提供相應的服務。你可以單獨設定一個 duplicity/deja-dup 僅僅只備份重要的檔案,這樣可以避免由於備份大量不需要備份資料而在異地備份中產生的巨大流量(網路緩衝,音樂或者下載資料等等)。

或者,你可以使用零知識備份工具,例如:SpiderOak,它提供一個優秀的 Linux GUI 工具和很多實用的功能,包括可以在多系統和平台間進行資料同步。

最佳實務

下面是一系列我認為你應該採用的最佳實務的列表。並不是很詳細,但卻試圖提供實用的建議,來協助在安全和易用之間找到一個平衡。

瀏覽器

毫無疑問,網頁瀏覽器是你系統上最為容易受到攻擊的軟體。它是一個專門下載和執行不可信代碼甚至是惡意代碼的工具。它們也試圖通過使用多種機制例如沙箱和代碼過濾來保護你免受這些危害,但是之前它們已經被擊敗過很多次了。你應當知道任何時候使用瀏覽器都是最不安全的時刻。

下面幾種方法可以減少來自瀏覽器的安全威脅,但是真正有效方法還是改變你對工作站的使用方法。

1:使用兩種不同的瀏覽器(高)

這是最容易做到的,但安全效果也很小。並不是所有的瀏覽器都可以抵禦攻擊者不受限制的瀏覽你的系統,有時他們限制只能讀取本地瀏覽器的儲存,從其他標籤中竊取活動的會話,捕獲瀏覽器的輸入。同時使用兩個瀏覽器,一個用於在訪問工作和高安全網站,另一個則用於其他方面,這樣可以防止攻擊者竊取到所有的 Cookies。但是同時使用兩個瀏覽器會消耗大量的記憶體。

Firefox用於訪問工作和高安全網站

使用Firefox登入工作相關的網站,應當格外注意像 Cookies ,會話,登入資訊和按鍵記錄等等資料千萬不能落入攻擊者的手裡。你不應當使用這個瀏覽器訪問其他任何網站,除了少數幾個例外。

你也應該安裝以下Firefox瀏覽器的外掛程式:

NoScript (高)

NoScript 阻止載入除白名單外所有主動式內容。如果作為預設瀏覽器這會非常的麻煩(但是提供了很好的安全性),所以我們建議只在訪問工作和高安全網站的瀏覽器上使用它。

Privacy Badger (高)

用來攔截廣告商和其他第三方跟蹤商的擴充,保護使用者在瀏覽網頁時免受密碼跟蹤(廣告網站和跟蹤的擴充經常成為受攻擊的目標,因為通過它們可以快速的感染全球成千上萬的系統)。

HTTPS Everywhere (高)

這個外掛程式會確保通過安全連線訪問大部分的網站,即使你輸入的是 http 連結(可以避免很多的攻擊,例如SSL-strip)。

Certificate Patrol (中)

這個工具會在你訪問的網站最近更換 TLS 認證時發出警告,特別是當原認證沒有接近到期時間或者新認證來自不同的認證機構。這個警報有助於你防範中間人攻擊,但是也會出現很多的誤判。

你不應該使用Firefox作為你預設的瀏覽器開啟串連,因為 NoScript 會阻止載入或執行大多數的活動。

Chrome/Chromium 用於其他

Chromium 的開發人員在增加更好的安全性方面走在Firefox的前面(至少 Linux 上是這樣),例如:seccomp 沙箱,核心中使用者命名空間等等,這就為你訪問的網站和你的系統之間增加了一個隔離層。Chromium 是上遊的開源項目,而 Chrome 是Google構建的專有的二進位包(插入一個偏執的提醒,不要使用它來做任何你不想讓Google知道的事)。

另外推薦你在 Chrome 上安裝 Privacy Badger 和 HTTPS Everywhere 外掛程式,然後使用一個區別於Firefox的主題,以此來表明這是你“不受信任”的瀏覽器。

使用兩個不同的瀏覽器,一個在專用虛擬機器中 (中)

這個跟上面推薦的做法很相似,除了你需要將運行一切其他事情的瀏覽器放入一個專用的虛擬機器中,然後通過一個快速的協議來共用剪下板和轉寄聲音事件(例如:Spice 或 RDP)。這將會在不受信任的瀏覽器和你的工作環境之間增加一個隔離層,使得攻擊者在攻破瀏覽器後必須在設法在攻破 VM 隔離層才能危害到你的系統。

這是一個不錯的可行方案,但是卻需要大量的記憶體和快速的處理器來處理增加的負載,同時也需要管理員去改變他們的工作習慣。

使用虛擬化技術隔離工作和遊戲環境 (低)

參見Qubes-OS project,其致力於通過將應用劃分到完全隔離的虛擬機器中,以此來提供高安全的工作環境。

密碼管理工具

清單

1.使用一個密碼管理工具(高)2.在不相關的網站上使用不同的密碼(高)3.使用一款支援群組共用的密碼管理工具(中)4.給非網站的賬戶使用一個單獨的密碼管理工具(中)

原因

使用好的、唯一的密碼應當成為團隊內每一個成員都遵守的重要規則。竊取憑證是每時每刻都在發生的事情,無論是通過攻破電腦,竊取網站資料庫,網站遠程利用或其他各種方法。憑證絕對不能跨站重複使用,特別是在關鍵應用上。

瀏覽器內的密碼管理工具

每個瀏覽器內都有一個相當安全的儲存密碼的機制,而且可以通過加密的資料轉送跟雲端儲存保持資料的同步。然而,這一機制有些嚴重的缺陷:

1.不能跨瀏覽器工作

2.不提供任何群組共用憑證的方法

當然也有一些免費或廉價的具有良好支援性的密碼管理工具可以跨瀏覽器、跨平台使用,而且支援群組共用功能(這通常屬於付費服務)。具體方案可以很容易的通過搜素引擎找到。

獨立的密碼管理工具

任何瀏覽器內的密碼管理工具都有一個很大的缺點,即作為瀏覽器的一部分它們很容易遭受入侵者的攻擊。如果這寧你很不舒服,那麼你應該選擇同時使用兩個不同的密碼管理工具,一個為整合到瀏覽器內的,另一個則作為獨立的應用程式。其中,後者主要用於儲存高風險憑證,例如: root 密碼,資料庫密碼和其他 shell 賬戶憑證等等。

這樣的工具在團隊內與其他成員共用超級使用者憑證會非常有用(伺服器 root 密碼,ILO 密碼資料庫管理員密碼,引導程式密碼等等)。

下面幾款工具可以協助到你:

1.KeePassX,在第二版中改進了群組共用功能2.Pass,使用文本和 PGP 檔案,並整合了 git3.Django-Pstore,使用 GPG 在管理員之間共用憑證4.Hiera-Eyaml,如果你已經在你的裝置上使用 Puppet,通過儲存加密 Hiera 資料可以很方便的跟蹤你伺服器/服務的憑證

加固 SSH 和 PGP 私密金鑰安全

個人加密金鑰包括 SSH 和 PGP 私密金鑰是你工作站上最重要的東西,同時也是攻擊者最感興趣的東西,因為這使他們可以進一步攻擊你的裝置或者在其他管理員面前冒充你。你應該採取額外的措施來確保這些密鑰的安全不被他人所竊取。

清單

1.使用強口令保護私密金鑰(高)2.使用移動存放裝置儲存 PGP 主要金鑰(中)3.將用於認證、簽名和加密的金鑰儲存區到智慧卡裝置上(中)4.配置 SSH 使用 PGP 認證密鑰作為私密金鑰(中)

原因

最好保護私密金鑰不被竊取的方法就是使用智慧卡儲存加密使用的私密金鑰並且堅決不在工作站上留有備份。下面是幾家提供支援 OpenPGP 裝置的廠商:

1.Kernel Concepts:如果你需要一個,這裡可以採購到支援 OpenPGP 的智慧卡和 USB 讀卡機。

2.Yubikey NEO:它們不僅提供 OpenPGP 智慧卡還提供很多不錯的功能(U2F,PIV,HOTP等等)。

確保 PGP 主要金鑰沒有儲存在主工作站上並且只是使用子密鑰同樣非常重要。主要金鑰只有在簽名其他密鑰和建立子密鑰時才被使用,而這些操作並不會經常出現。你可以參考Debian的子密鑰指南,來學習如何將主要金鑰移動到移動存放裝置上以及如何建立子密鑰。

然後,你應當配置 gnupg 代理作為 ssh 代理,並使用基於智慧卡的 PGP 認證密鑰作為你 ssh 的私密金鑰。這裡我們發布過一個詳細指南介紹如何使用智慧卡讀卡機或Yubikey NEO 來完成這些。

如果你不願意做這些,那麼至少給你的 PGP 私密金鑰和 ssh 私密金鑰配置一個強大的密碼,這樣可以增加攻擊者竊取並使用它們的難度。

休眠或關機,不要掛起

當系統掛起時,記憶體中的內容依舊儲存在儲存晶片上面並且可以被攻擊者讀取到,通過使用一種稱為冷啟動攻擊(Cold boot attack)的攻擊手段。如果你需要離開系統一段時間,比如離開一天時間,你最好關機或者休眠而不是掛起它。

工作站使用 SELinux

如果你正在使用捆綁有 SELinux 的發行版(如 Fedora),下面這些建議可以協助你最大限度的提高安全性。

清單

1.確保你的工作站上強制啟用了 SELinux(高)2.經常檢查,永遠不要盲目的執行 audit2allow -M(高)3.永遠不要執行 setenforce 0(中)4.將你的賬戶切換至 SELinux 使用者 staff_u(中)

原因

SELinux 是一種為擴充核心 POSIX 許可權設計的強制存取控制(MAC)。它非常成熟、強大,而且自推出後已經走過了很長的路。不過,現在還有不少的系統管理員依舊重複著過時的口頭禪“關閉它就行了”。

也就是說,SELinux 對工作站安全的貢獻微乎其微,因為大部分你啟動並執行應用程式在運行時都不會受到限制。但它能提供網路更高的安全性,因為它能有效阻止攻擊者通過利用存在漏洞的服務進行提權操作,從而以 root 許可權繼續訪問。

這裡我們的建議是強制開啟使用 SELinux。

永遠不要執行 setenforce 0

使用 setenforce 0 命令可以臨時使 SELinux 進入許可模式,儘管這操作很誘人但你永遠不應該使用它。這樣做實際上是關閉了整個系統的 SELinux,而你的目的也僅僅只是為了定位一個應用程式或者進程的錯誤。

替代 setenforce 0 的命令你可以使用 semanage permissive -a [somedomain_t],這樣只會將需要的進程假如到許可模式中。首先,通過執行命令 ausearch 來定位是哪個進程導致了錯誤:

ausearch -ts recent -m avc

然後找到 scontext=(源於 SELinux 的內容)的行,像這樣:

scontext=staff_u:staff_r:gpg_pinentry_t:s0-s0:c0.c1023

這就告訴你被拒絕的部分為 gpg_pinentry_t,所以你想要解決這個問題的方法就是將它加入許可模式:

semange permissive -a gpg_pinentry_t

這將允許你使用程式並收集餘下的 AVCs 資料,然後你可以配合 audit2allow 自己配置本地策略。一旦完成後你發現沒有新的 AVC 的拒絕資訊,你就可以執行下列命令將其移除許可:

semanage permissive -d gpg_pinentry_t

以 SELinux 角色 staff_r 使用工作站

SELinux 原生支援配置角色(roles),使用者賬戶基於角色被禁止或賦予相應的許可權。作為管理員你應當使用 staff_r 角色,這將限制你訪問很多的配置及安全相關的敏感檔案,除非你使用sudo 命令。

預設情況下,賬戶會被標記為 unconfined_r,並且執行的大部分應用都不會受到限制,也不會(或很少)受到來自 SELinux 的約束。將使用者切換至 staff_r 角色可以執行以下命令:

usermod -Z staff_u [username]

這時你應當登出並重新登入以啟用新角色,然後如果你執行 id -Z 命令你會看到:

staff_u:staff_r:staff_t:s0-s0:c0.c1023

當執行 sudo 時,你需要記得增加一個額外的標識告訴 SELinux 你要切換至 “sysadmin” 角色,命令如下:

sudo -i -r sysadm_r

這時你在執行 id -Z 命令你會看到:

staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023

警告:在執行角色切換前你應當使用 ausearch 和 audit2allow 命令,因為你的部分應用可能會在你切換到 staff_r 角色後停止工作。在本文檔寫作時,下列流行軟體如果不調整策略會在切換至 staff_r 時停止工作:

Chrome/ChromiumSkypeVirtualBox

切換回 unconfined_r 只需執行如下命令:

usermod -Z unconfined_u [username]

然後登出並重新登入即可。

擴充閱讀

IT 安全就是一個無底洞,如果你想繼續深入挖掘或者瞭解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.