本指南收集了一系列技術,用於提高運行目前支援的 macOS 版本的 Apple 晶片 Mac 電腦的安全性和隱私性。使用配備 Intel CPU 的 Mac 會讓您面臨 Apple 無法修補的硬體等級的安全漏洞。 Apple 晶片 Mac 是最低推薦,但一般來說,更新的晶片總是更安全。
本指南面向希望採用企業標準安全性的高級用戶,但也適合有興趣提高 Mac 隱私和安全性的新手用戶。
如果您要保護組織的計算機,請使用適用於 macOS 的官方 NIST 指南。
系統的安全性取決於其管理員的能力。沒有任何一種單一的技術、軟體或技術能夠保證完美的電腦安全;現代作業系統和電腦非常複雜,需要進行大量漸進式變更才能有意義地改善安全性和隱私狀況。
本指南以「現況」提供,不提供任何形式的保證。如果您按照本指南破壞了任何東西或遇到任何麻煩,只有您自己負責。
若要提出改進建議,請發送拉取請求或提出問題。
一般安全最佳實務適用:
建立威脅模型
保持系統和軟體最新
softwareupdate
命令列公用程式 - 兩者都不需要註冊 Apple 帳戶。加密敏感數據
確保數據可用性
仔細點擊
安全和隱私的第一步也是最重要的一步是建立威脅模型。你需要了解你的對手才能防禦他們。每個人都有自己的需求,因此每個人的威脅模型都會不同。隨著情況的變化,威脅模型往往會隨著時間的推移而演變,因此請務必定期重新評估您的威脅模型。
這可能包括很多東西:您的手機、筆記型電腦、裝置上儲存的密碼、網路瀏覽歷史記錄等。您可以根據它們的重要性將它們分類:公開、敏感或秘密。
定義你要防禦的對象。首先定義他們攻擊您的資產的動機。例如,經濟利益是許多攻擊者的一大動機。
為了對抗你的對手,你需要了解他們能做什麼和不能做什麼。將對手從完全不複雜到非常先進進行排名。比如說,一個普通的小偷,他的手段並不高明;他們可能會被一些基本的東西阻止,例如在你的裝置上設定密碼和磁碟機加密。像國家行為者這樣的非常高級的對手可能需要在不使用時完全關閉您的設備,以清除 RAM 中的密鑰和長骰子軟體密碼。
現在是您決定應對每種威脅的最佳方法的時候了。您可以避免將密碼寫在紙上,這樣您的室友就找不到它們,或者您可以對電腦上的磁碟機進行加密,這樣小偷就無法從中獲取資料。平衡安全性和可用性很重要;每一種緩解措施都應該對抗對手的某些能力,否則你可能會為自己的生活帶來不便,但幾乎沒有任何好處。如果您想不出對手可能擁有的更多功能,並且您已經對所有這些功能實施了緩解措施,那麼您的工作就完成了。
以下是您應該為要保護的每項資產建立的表格類型的範例:
對手 | 動機 | 能力 | 減輕 |
---|---|---|---|
室友 | 查看私人聊天或瀏覽記錄 | 距離很近;可以看到螢幕或觀看輸入密碼 | 使用生物辨識技術、使用隱私螢幕、不使用手機時將其鎖定 |
賊 | 解鎖手機並竊取個人資訊並耗盡銀行帳戶,出售手機以換取金錢 | 透過瀏覽查看密碼,登入時不查看時竊取設備 | 始終將手機放在視線範圍內或在人身邊,不使用時保持鎖定狀態,使用生物識別技術避免在公共場合輸入密碼,使用“查找我的”或類似服務來跟踪/遠端禁用被盜設備 |
刑事 | 金融的 | 社會工程、容易取得的惡意軟體、密碼重複使用、利用漏洞 | 使用沙箱,啟用作業系統中的安全功能,保持作業系統和所有軟體更新並開啟自動更新 |
公司 | 用戶數據行銷 | 遙測和行為數據收集 | 阻止網路連線、重置唯一識別碼、避免添加支付數據 |
民族國家/APT | 有針對性的監視 | 互聯網基礎設施的被動監控,用於破解資料包加密/分析的先進計算機 | 使用開源 e2ee、對裝置使用強骰子軟體密碼、使用具有安全元件的硬體進行安全加密、在不使用裝置時關閉裝置、軟體 tripwire/honeypot/canary 令牌 |
在此閱讀有關威脅建模的更多資訊。
macOS 在採用 Apple 晶片的 Apple 硬體上運作最為安全。 Mac 越新越好。避免駭客攻擊和不支援最新 macOS 的 Mac,因為 Apple 不會修補非最新版本中的所有漏洞。
當您購買 Mac 時,您可能希望避免將其連結回您。根據您的威脅模型,您應該親自以現金支付,而不是在線訂購或使用信用卡/借記卡購買,這樣就不會將任何識別資訊連結到您的購買。
如果您想使用無線鍵盤、滑鼠、耳機或其他配件,最安全的選擇是 Apple 的,因為它們會由您的系統自動更新。它們還支援最新的藍牙功能,例如 BLE Privacy,它可以隨機化您的藍牙硬體位址以防止追蹤。對於第三方配件,這並不能保證。
安裝 macOS 有多種方法。從可用選項中選擇您喜歡的方法。
您應該安裝與您的 Mac 相容的最新版本的 macOS 。較新的版本具有舊版本所缺乏的安全性修補程式和其他改進。
作為 Apple 防盜系統的一部分,每次重新安裝 macOS 時,Apple 晶片 Mac 都需要透過 Apple 伺服器激活,以檢查被盜或激活鎖定 Mac 的資料庫。
您可以在此處詳細了解此過程的工作原理。
使用 macOS 不需要建立 Apple 帳戶。建立Apple帳戶需要一個電話號碼,並且預設情況下它會將大量資料同步到Apple的雲端儲存服務iCloud。如果您想要或為 iCloud 資料啟用端對端加密,您可以稍後停用同步。
您可以控制與您的 Apple 帳戶關聯的資料或將其完全刪除。
需要 Apple 帳戶才能存取 App Store 並使用大多數 Apple 服務,如 iCloud、Apple Music 等。
Mac App Store 是一個精選的軟體儲存庫,需要使用應用程式沙箱和強化運行時,並提供與您的系統整合的自動更新。
App Store 為 macOS 上的軟體提供了最大的安全保證,但它要求您使用 Apple 帳戶登錄,Apple 將能夠將您的 Apple 帳戶連結到您下載的應用程式。
您可以使用 UTM 在虛擬機器中輕鬆本地運行 macOS。它在他們的網站上是免費的,但如果您從 App Store 購買它,您將獲得自動更新。
按照他們的文檔,只需點擊幾下即可安裝 macOS VM。
另一個選擇是 VMware Fusion。您可以閱讀他們的文檔以了解如何安裝 macOS VM。
當 macOS 首次啟動時,您將看到設定助手。
建立第一個帳戶時,請在沒有提示的情況下使用強密碼。
如果您在帳戶設定過程中輸入您的真實姓名,請注意您的電腦名稱和本機主機名稱將包含該名稱(例如John Appleseed 的 MacBook ),因此將出現在本機網路和各種首選項檔案中。
兩者都應根據需要在“系統設定”>“關於”中進行驗證和更新,或在安裝後使用以下命令進行驗證和更新:
sudo scutil --set ComputerName MacBook
sudo scutil --set LocalHostName MacBook
第一個使用者帳戶始終是管理員帳戶。管理員帳戶是 admin 群組的成員,並且有權存取sudo
,這允許他們篡奪其他帳戶,特別是 root,並賦予他們對系統的有效控制權。管理員執行的任何程式都可能獲得相同的存取權限,從而構成安全風險。
sudo
等實用程式存在一些弱點,可以同時執行的程式利用。
Apple 認為最佳做法是使用單獨的標準帳戶進行日常工作,並使用管理員帳戶進行安裝和系統配置。
並未嚴格要求必須透過 macOS 登入畫面登入管理員帳號。當終端命令需要管理員權限時,系統會提示進行身份驗證,然後終端繼續使用這些權限。為此,Apple 提供了一些隱藏管理員帳戶及其主目錄的建議。這可能是個優雅的解決方案,可以避免出現可見的「幽靈」帳號。
/Applications
(本地目錄)中安裝應用程式。 Finder 和安裝程式將透過身份驗證對話方塊提示標準使用者。許多應用程式可以安裝在~/Applications
中(可以建立該目錄)。根據經驗:不需要管理員存取權限或不會抱怨未安裝在/Applications
中的應用程式應安裝在使用者目錄中,其餘應用程式應安裝在本機目錄中。 Mac App Store 應用程式仍安裝在/Applications
中,不需要額外的身份驗證。sudo
在標準使用者的 shell 中不可用,需要使用su
或login
進入管理員帳戶的 shell。這可能會使一些操作變得更加棘手,並且需要一些命令列介面的基本經驗。open
實用程式來執行。可以在系統偏好設定中建立和管理帳戶。在固定係統上,建立第二個管理員帳戶然後降級第一個帳戶通常會更容易。這避免了資料遷移。新安裝的系統也可以只新增一個標準帳戶。
降級帳戶可以透過系統偏好設定中的新管理員帳戶(另一個帳戶必須登出)或執行這些命令來完成(可能不需要同時執行這兩個命令,請參閱問題 179):
sudo dscl . -delete /Groups/admin GroupMembership <username>
sudo dscl . -delete /Groups/admin GroupMembers <GeneratedUID>
要找帳戶的GenerateUID :
dscl . -read /Users/<username> GeneratedUID
另請參閱這篇文章,以了解有關 macOS 如何確定群組成員資格的更多資訊。
您應該檢查韌體安全設定是否設定為完全安全,以防止篡改您的作業系統。這是預設值。
所有採用 Apple 晶片的 Mac 型號均預設加密。啟用 FileVault 後,您需要輸入密碼才能存取磁碟機上的資料。 EFF 有一份關於產生強密碼的指南。
您的 FileVault 密碼還充當韌體密碼,可防止不知道密碼的人從指定啟動磁碟以外的任何裝置啟動、存取恢復以及使用 DFU 模式恢復它。
FileVault 會要求您設定恢復金鑰,以防您忘記密碼。將此密鑰存放在安全的地方。您可以選擇使用您的 iCloud 帳戶來解鎖您的磁碟;但是,任何有權訪問您的 iCloud 帳戶的人都可以解鎖它。
macOS 提供鎖定模式,這是一種安全功能,可停用整個作業系統的多項功能,從而顯著減少攻擊者的攻擊面,同時保持作業系統可用。您可以詳細了解已停用的內容,並自行決定您是否可以接受。
鎖定模式開啟後,您可以在受信任網站上的 Safari 中針對每個網站停用它。
有多種類型的防火牆可用於 macOS。
內建的基本防火牆僅阻止傳入連線。此防火牆無法監視或阻止傳出連線。
可透過「系統設定」中「網路」的「防火牆」標籤進行控制,或使用下列命令。
啟用具有日誌記錄和隱身模式的防火牆:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setloggingmode on
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on
電腦駭客掃描網絡,以便嘗試識別要攻擊的電腦。您可以使用隱密模式來阻止電腦回應其中一些掃描。啟用隱身模式後,您的電腦不會回應 ICMP ping 請求,也不會回應來自關閉的 TCP 或 UDP 連接埠的連線嘗試。這使得攻擊者更難找到您的電腦。
為了防止內建軟體以及程式碼簽署、下載的軟體自動列入白名單:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsigned off
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setallowsignedapp off
由有效憑證授權單位簽署的應用程式會自動新增至允許的應用程式清單中,而不是提示使用者對其進行授權。 macOS 中包含的應用程式由 Apple 簽名,並且在啟用此設定時允許接收傳入連線。例如,由於 iTunes 已經經過 Apple 簽名,因此會自動允許它透過防火牆接收傳入連線。
如果您執行未在防火牆清單中列出的未簽名應用程序,則會出現一個對話框,其中包含允許或拒絕該應用程式的連接選項。如果您選擇“允許”,macOS 會簽署應用程式並自動將其新增至防火牆清單。如果您選擇“拒絕”,macOS 會將其新增至清單中,但會拒絕用於此應用程式的傳入連線。
與socketfilterfw
互動後,透過發送線路掛斷訊號來重新啟動進程:
sudo pkill -HUP socketfilterfw
Little Snitch、Radio Silence 和 LuLu 等程式在可用性和安全性之間實現了良好的平衡。
這些程式能夠監視和阻止傳入和傳出的網路連線。但是,它們可能需要使用封閉源系統擴展。
如果允許/阻止網路連線的選擇數量過多,請在允許連線的情況下使用靜默模式,然後定期檢查配置以了解應用程式及其正在執行的操作。
值得注意的是,這些防火牆可以被以root身份運行的程式或透過作業系統漏洞 (pdf) 繞過,但它們仍然值得擁有 - 只是不要指望絕對的保護。然而,如果安裝了 Little Snitch 或其他安全軟體,某些惡意軟體實際上會自行刪除且不會執行。
核心中存在高度可自訂、功能強大但也是最複雜的防火牆。可以用pfctl
和各種設定檔來控制。
pf 也可以透過 GUI 應用程式(例如 Murus)進行控制。
有很多關於 pf 防火牆主題的書籍和文章。這只是透過 IP 位址阻止流量的一個範例。
將以下內容新增至名為pf.rules
的檔案:
wifi = "en0"
ether = "en7"
set block-policy drop
set fingerprints "/etc/pf.os"
set ruleset-optimization basic
set skip on lo0
scrub in all no-df
table <blocklist> persist
block in log
block in log quick from no-route to any
block log on $wifi from { <blocklist> } to any
block log on $wifi from any to { <blocklist> }
antispoof quick for { $wifi $ether }
pass out proto tcp from { $wifi $ether } to any keep state
pass out proto udp from { $wifi $ether } to any keep state
pass out proto icmp from $wifi to any keep state
然後使用以下命令來操作防火牆:
sudo pfctl -e -f pf.rules
啟用防火牆並載入配置sudo pfctl -d
禁用防火牆sudo pfctl -t blocklist -T add 1.2.3.4
將 IP 位址加入到封鎖列表sudo pfctl -t blocklist -T show
查看阻止列表sudo ifconfig pflog0 create
用於日誌記錄的介面sudo tcpdump -ni pflog0
查看過濾後的封包除非您已經熟悉資料包過濾,否則不建議花費太多時間配置 pf。如果您的 Mac 位於私人家庭網路上的 NAT 之後,也可能沒有必要。
可以使用 pf 防火牆阻止對整個網路位址範圍的網路訪問,例如對整個組織的網路存取:
查詢 Merit RADb 以取得自治系統(例如 Facebook)正在使用的網路清單:
whois -h whois.radb.net '!gAS32934'
將傳回的網路清單複製並貼上到 blocklist 指令中:
sudo pfctl -t blocklist -T add 31.13.24.0/21 31.13.64.0/24 157.240.0.0/16
確認地址已新增:
$ sudo pfctl -t blocklist -T show
No ALTQ support in kernel
ALTQ related functions disabled
31.13.24.0/21
31.13.64.0/24
157.240.0.0/16
確認這些位址的網路流量被阻止(DNS 要求仍然有效):
$ dig a +short facebook.com
157.240.2.35
$ curl --connect-timeout 5 -I http://facebook.com/
* Trying 157.240.2.35...
* TCP_NODELAY set
* Connection timed out after 5002 milliseconds
* Closing connection 0
curl: (28) Connection timed out after 5002 milliseconds
$ sudo tcpdump -tqni pflog0 ' host 157.240.2.35 '
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.62771 > 157.240.2.35.80: tcp 0
IP 192.168.1.1.162771 > 157.240.2.35.80: tcp 0
傳出的 TCP SYN 封包被阻止,因此無法建立 TCP 連接,從而在 IP 層有效地阻止網站。
請參閱 drduh/config/scripts/pf-blocklist.sh 以獲取更多靈感。
macOS 上的服務由launchd管理。請參閱 launchd.info。
您可以在系統設定中管理和查看有關登入時運行的軟體的更多資訊。您也可以在系統設定中查看已安裝的系統、快速檢視、Finder 和其他擴充功能。
launchctl list
查看正在運行的用戶代理sudo launchctl list
查看正在運行的系統守護進程launchctl list com.apple.Maps.mapspushd
defaults read
檢查/System/Library/LaunchDaemons
和/System/Library/LaunchAgents
中的作業 plistman
和strings
來了解有關代理/守護進程的更多信息例如,要了解系統啟動守護程式或代理程式的作用,請從以下內容開始:
defaults read /System/Library/LaunchDaemons/com.apple.apsd.plist
查看Program
或ProgramArguments
部分以查看執行的是哪個二進位文件,在本例中apsd
。要查找更多信息,請查看man apsd
的手冊頁
注意系統服務受 SIP 保護,不要只是為了修補系統服務而停用 SIP,因為 SIP 是 macOS 安全性不可或缺的一部分。停用系統服務可能會導致損壞和不穩定的行為!
查看服務狀態:
find /var/db/com.apple.xpc.launchd/ -type f -print -exec defaults read {} ; 2>/dev/null
此儲存庫中包含啟動守護程式和代理程式的註解清單、執行的對應程式以及程式的雜湊和。
了解有關 launchd 的更多資訊以及在 Apple 網站上可以找到登入項目的資訊。
Apple 正在轉向對許多 Siri 功能進行裝置上處理,但當您使用 Siri 建議或 Spotlight 時,某些資訊仍會傳送給 Apple。您可以閱讀 Apple 的隱私權政策,確切了解發送的內容以及如何停用它。
如果您的程式無法透過 App Store 獲取,您可以考慮使用 Homebrew。
重要的! Homebrew 要求您授予終端“應用程式管理”(或“完全磁碟存取”)權限。這是一個壞主意,因為它會讓您再次容易受到這些攻擊:任何非沙盒應用程式都可以透過向(例如)~/.zshrc 添加惡意命令來使用終端的 TCC 權限執行程式碼。向您的終端授予「應用程式管理」或「完整磁碟存取權限」應被視為與完全停用 TCC 相同。
請記得定期在受信任且安全的網路上執行brew upgrade
來下載和安裝軟體更新。要在安裝前獲取有關軟體包的信息,請執行brew info <package>
並在線檢查其公式。您可能還想啟用其他安全性選項,例如HOMEBREW_NO_INSECURE_REDIRECT=1
根據 Homebrew 的匿名分析,Homebrew 收集匿名分析並將這些分析報告給自託管的 InfluxDB 實例。若要選擇退出 Homebrew 的分析,您可以在環境或 shell rc 檔案中設定export HOMEBREW_NO_ANALYTICS=1
,或使用brew analytics off
macOS 11 引入了「DNS 設定設定檔」來設定加密 DNS、過濾網域和使用 DNSSEC。
DNS 設定檔可以從 Quad9、AdGuard 和 NextDNS 等提供者建立或取得。
使用主機檔案封鎖已知的惡意軟體、廣告或其他不必要的網域。
以 root 身分編輯主機文件,例如使用sudo vi /etc/hosts
若要透過A
記錄阻止網域,請將以下任何一行附加到/etc/hosts
:
0 example.com
0.0.0.0 example.com
127.0.0.1 example.com
注意IPv6 使用AAAA
DNS 記錄類型,而不是A
記錄類型,因此您可能還想透過包含::1 example.com
條目來阻止這些連接,如此處所示。
在線有許多可用的網域列表,您可以貼上進去,只需確保每行以0
、 0.0.0.0
、 127.0.0.1
開頭,並且包含127.0.0.1 localhost
行。
以下是一些流行且有用的主機清單:
使用tee
附加主機清單:
curl https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | sudo tee -a /etc/hosts
如果您使用像 Little Snitch 這樣的防火牆,則可以使用 StevenBlack/hosts 從 leohidalgo/little-snitch---rule-groups 儲存庫匯入規則,這些規則每 12 小時從 StevenBlack/hosts 儲存庫更新一次。
若要加密 DNS 流量,請考慮使用 DNSCrypt/dnscrypt-proxy。與dnsmasq和DNSSEC結合使用,可顯著提高DNS流量的完整性。
從 Homebrew 安裝 DNSCrypt 並依照指示設定和啟動dnscrypt-proxy
:
brew install dnscrypt-proxy
如果與 Dnsmasq 結合使用,請透過執行找到檔案homebrew.mxcl.dnscrypt-proxy.plist
brew info dnscrypt-proxy
這將顯示類似/usr/local/etc/dnscrypt-proxy.toml
的位置
在文字編輯器中開啟它,找到以listen_addresses =
開頭的行並編輯該行以在 53 以外的連接埠(例如 5355)上使用 DNScrypt:
listen_addresses = ['127.0.0.1:5355', '[::1]:5355']
啟動 DNSCrypt:
sudo brew services restart dnscrypt-proxy
確認 DNSCrypt 正在運作:
$ sudo lsof +c 15 -Pni UDP:5355
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
dnscrypt-proxy 15244 nobody 7u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355
dnscrypt-proxy 15244 nobody 10u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355
dnscrypt-proxy 15244 nobody 12u IPv4 0x1337f85ff9f8beef 0t0 UDP 127.0.0.1:5355
dnscrypt-proxy 15244 nobody 14u IPv6 0x1337f85ff9f8beef 0t0 UDP [::1]:5355
預設情況下,dnscrypt-proxy 在本機 (127.0.0.1)、連接埠 53 上運行,平衡一組解析器之間的流量。如果您想要變更這些設置,則必須編輯設定檔:$HOMEBREW_PREFIX/etc/dnscrypt-proxy.toml
注意應用程式和程式可以使用自己提供的伺服器解析 DNS。如果使用 dnscrypt-proxy,則可以使用下列 pf 規則停用所有其他非 dnscrypt DNS 流量:
block drop quick on ! lo0 proto udp from any to any port = 53
block drop quick on ! lo0 proto tcp from any to any port = 53
另請參閱什麼是 DNS 洩漏和 ipv6-test.com
除其他功能外,dnsmasq 還能夠快取回應、防止不合格名稱的上游查詢以及阻止整個頂級網域。
與 DNSCrypt 結合使用以額外加密 DNS 流量。
如果您不想使用 DNSCrypt,您至少應該使用非 ISP 提供的 DNS。兩種流行的替代方案是 Google DNS 和 OpenDNS。
可選的DNSSEC 是一組 DNS 擴展,它向 DNS 用戶端(解析器)提供 DNS 資料的原始驗證、經過驗證的拒絕存在和資料完整性。來自 DNSSEC 保護區的所有答案都經過數位簽署。簽章記錄透過信任鏈進行身份驗證,從 DNS 根區域的一組經過驗證的公鑰開始。目前的根區域信任錨可以從 IANA 網站下載。 DNSSEC 上有很多資源,但最好的資源可能是 dnssec.net 網站。
安裝 Dnsmasq:
brew install dnsmasq --with-dnssec
下載並編輯 drduh/config/dnsmasq.conf 或預設設定檔。
有關按網域封鎖服務的附加範例,請參閱 drduh/config/domains。
安裝並啟動程式(需要 sudo 綁定特權連接埠 53):
sudo brew services start dnsmasq
若要將 dnsmasq 設定為本機 DNS 伺服器,請開啟系統偏好設定>網路並選擇活動接口,然後在DNS選項卡中選擇+並新增127.0.0.1
,或使用:
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
確認 Dnsmasq 已設定:
$ scutil --dns | head
DNS configuration
resolver #1
search domain[0] : whatever
nameserver[0] : 127.0.0.1
flags : Request A records, Request AAAA records
reach : 0x00030002 (Reachable,Local Address,Directly Reachable Address)
$ networksetup -getdnsservers " Wi-Fi "
127.0.0.1
注意某些 VPN 軟體會覆蓋連線時的 DNS 設定。請參閱第 24 期和 drduh/config/scripts/macos-dns.sh。
可選測試簽章區域的 DNSSEC 驗證 - 回應應具有NOERROR
狀態並包含ad
標誌:
$ dig +dnssec icann.org | head
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47039
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
對於簽章不正確的區域,測試 DNSSEC 驗證失敗 - 回應應具有SERVFAIL
狀態:
$ dig www.dnssec-failed.org | head
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 15190
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
macOS 附帶了 100 多個根授權證書,這些證書來自 Apple、Verisign、Thawte、Digicert 等公司以及來自中國、日本、荷蘭、美國等國家的政府機構!這些憑證授權單位 (CA) 能夠為任何網域頒發 TLS 憑證、代碼簽署憑證等。他們也對受信任的 CA 必須滿足嚴格的要求。
有關詳細信息,請參閱 CA/瀏覽器論壇的網站。
在「系統根」標籤下的「鑰匙串存取」中或使用security
命令列工具和/System/Library/Keychains/SystemRootCertificates.keychain
檔案檢查系統根憑證。
您可以透過「鑰匙圈存取」手動停用憑證授權機構,方法是將它們標記為「從不信任」並關閉視窗:
警告:當您使用這些 CA 簽署的憑證造訪網站時,這將導致您的瀏覽器發出警告,並可能導致其他軟體損壞。不要不信任 Apple 根證書,否則會導致 macOS 出現大量損壞!
中間人攻擊(系統信任的強製或受損的憑證授權單位頒發虛假/流氓 TLS 憑證)的風險非常低,但仍有可能。
考慮使用 Privoxy 作為本地代理來過濾 Web 流量。
使用 Homebrew 安裝並啟動 privoxy:
brew install privoxy
brew services start privoxy
或者,可以從其網站或 Sourceforge 取得 Privoxy 的簽名安裝包。簽名包比 Homebrew 版本更安全,並得到 Privoxy 專案的支援。
預設情況下,Privoxy 偵聽本機 TCP 連接埠 8118。
為活動網路介面127.0.0.1
和8118
設定係統HTTP代理:
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8118
設定係統HTTPS代理:
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8118
這也可以透過系統偏好設定 > 網路 > 進階 > 代理來完成
確認代理已設定:
$ scutil --proxy
<dictionary> {
ExceptionsList : <array> {
0 : *.local
1 : 169.254/16
}
FTPPassive : 1
HTTPEnable : 1
HTTPPort : 8118
HTTPProxy : 127.0.0.1
}
儘管當今大多數 Web 流量都是加密的,但 Privoxy 對於按網域模式進行過濾以及升級不安全的 HTTP 請求仍然很有用。
例如,以下規則會阻止除.net
和github.com
以及所有apple
網域之外的所有流量:
{ +block{all} }
.
{ -block }
.apple.
.github.com
.net
或只是封鎖 Facebook 網域,例如:
{ +block{facebook} }
.facebook*.
.fb.
.fbcdn*.
.fbinfra.
.fbsbx.
.fbsv.
.fburl.
.tfbnw.
.thefacebook.
fb*.akamaihd.net
也支援通配符。
有關其他 Privoxy 範例,請參閱 drduh/config/privoxy/config 和 drduh/config/privoxy/user.action。編輯user.action
過濾規則後無需重新啟動 Privoxy。
若要驗證流量是否已封鎖或重新導向,請在瀏覽器中使用 curl 或 http://pp 上提供的 Privoxy 介面:
ALL_PROXY=127.0.0.1:8118 curl example.com -IL | head
HTTP/1.1 403 Request blocked by Privoxy
Content-Length: 9001
Content-Type: text/html
Cache-Control: no-cache
Pragma: no-cache
ALL_PROXY=127.0.0.1:8118 curl github.com -IL | head
HTTP/1.1 302 Local Redirect from Privoxy
Location: https://github.com/
Content-Length: 0
HTTP/1.1 200 Connection established
HTTP/2 200
server: GitHub.com
注意macOS 代理設定不是通用的;應用程式和服務可能不遵循系統代理設定。確保您想要代理的應用程式配置正確,並驗證連線不會洩漏。此外, pf可以配置為透明代理程式某些連接埠上的流量。
Web 瀏覽器可能帶來最大的安全和隱私風險,因為它的基本工作是從網路下載和執行不受信任的程式碼。
現代瀏覽器的一個重要屬性是同源策略 (SOP),它可以防止一個頁面上的惡意腳本透過文件物件模型 (DOM) 存取另一個網頁上的敏感資料。如果 SOP 受到損害,整個瀏覽器的安全性就會受到損害。
許多瀏覽器漏洞利用都是基於社會工程作為獲得持久性的手段。始終注意打開不受信任的網站,下載新軟體時尤其要小心。
關於瀏覽器安全性的另一個重要考慮因素是擴充。這是一個影響 Firefox 和 Chrome 的問題。瀏覽器擴充功能的使用應僅限於由值得信賴的開發人員發布的至關重要的擴充功能。
Mozilla Firefox、Google Chrome、Safari 和 Tor 瀏覽器都是出於其獨特和個人目的而推薦的瀏覽器。
Mozilla Firefox 是一種受歡迎的開源瀏覽器。 Firefox 在 Quantum 和 Photon 專案下取代了其基礎架構和程式碼庫的主要部分。 Quantum 專案的一部分是用 Rust 取代 C++ 程式碼。 Rust 是一種系統程式語言,專注於安全性和執行緒安全性。預計 Rust 的採用將大大改善 Firefox 的整體安全狀況。
Firefox 提供了與 Chrome 類似的安全模型:它有一個錯誤賞金計劃,儘管它的利潤不那麼高。 Firefox 的發布週期為四週。
Firefox 支援使用者提供的設定檔。請參閱 drduh/config/firefox.user.js 和 arkenfox/user.js 以了解建議的首選項和強化措施。另請參閱 NoScript,這是一個允許選擇性腳本阻止的擴充功能。
Firefox 注重用戶隱私。它支援隱私瀏覽模式下的追蹤保護。可以為預設帳戶啟用追蹤保護,儘管這可能會破壞某些網站的瀏覽體驗。處於嚴格追蹤保護模式的 Firefox 會隨機化您的指紋,以挫敗基本的追蹤腳本。 Firefox 提供單獨的使用者設定檔。您可以使用多帳戶容器在設定檔內分隔您的瀏覽。
Firefox 僅透過 Web Extension Api 支援 Web Extensions,與 Chrome 非常相似。在 Firefox 中提交 Web 擴充功能是免費的。 Firefox 中的 Web 擴充功能大多時候都是開源的,儘管某些 Web 擴充功能是專有的。
Google Chrome 是基於開源 Chromium 項目,具有某些專有元件:
Chrome 提供多個裝置之間的帳戶同步。部分同步資料包括網站的憑證。資料使用帳戶密碼進行加密。
Chrome 擴充功能線上應用程式商店需要支付 5 美元的終身費用才能提交擴充功能。低成本允許開發許多高品質的開源 Web 擴展,這些擴展的目的不是透過使用來獲利。
Chrome在全球使用情況下佔最大份額,並且是大多數開發人員的首選目標平台。主要技術基於Chrome的開源元件,例如使用Chrome的V8引擎和電子框架的Node.js,該框架基於Chromium and Node.js。 Chrome的龐大用戶群使其成為威脅參與者和安全研究人員的最吸引人的目標。儘管持續攻擊,Chrome多年來一直保持著令人印象深刻的安全往績記錄。這不是一項小壯舉。
Chrome提供單獨的配置文件,強大的沙箱,頻繁的更新,並帶有令人印象深刻的憑證。此外,Google還提供了一個非常有利可圖的賞金計劃,用於報告漏洞,以及其自己的專案零團隊。這意味著,許多高度才華橫溢和有動力的人正在不斷審核和保護Chrome程式碼。
建立單獨的鍍鉻配置文件,以降低XSS風險並將cookie/Identition分隔化。在每個設定檔中,要么在Chrome設定中停用JavaScript,並允許啟動配置。您還應該停用使用JavaScript進一步減少攻擊表面的網站的V8優化器。前往設定- >隱私權和安全性- >安全性- >管理V8安全性- >不允許網站使用V8 Optimizer
在此閱讀有關禁用此問題的好處的更多資訊。
您可以用Ublock Origin Lite阻止追蹤器。
將預設搜尋引擎從Google更改,以減少其他追蹤。
停用DNS預取(另請參閱DNS預取及其隱私權意義(PDF))。請注意,Chrome可能會嘗試使用Google的8.8.8.8
和8.8.4.4
公用名稱伺服器來解決DNS。
閱讀鉻安全性和鉻隱私以獲取更多資訊。閱讀Google的隱私權政策,以了解如何收集和使用個人資訊。
Safari是MacOS上的預設瀏覽器。它也是最優化的瀏覽器,用於減少電池的使用。像Chrome一樣,Safari都具有開源和專有元件。 Safari基於開源Web Engine WebKit,該引擎在MacOS生態系統中無所不在。 WebKit由Apple應用程式(例如郵件,iTunes,iBooks和App Store)使用。 Chrome的Blink Engine是Webkit的叉子,兩具引擎都有許多相似之處。
Safari支援某些有益於使用者安全和隱私的獨特功能。內容阻斷劑可以在不使用JavaScript的情況下建立內容阻止規則。這種基於規則的方法大大改善了記憶體的使用,安全性和隱私。 Safari 11引入了智慧追蹤預防,該預防措施在用戶從追蹤器的網站上刪除了一段不相互作用的追蹤資料。野生動物園可以隨機將指紋隨機,以減少追蹤。出於安全和隱私原因,Safari不支援某些功能,例如WebUSB或電池API。野生動物園中的私人標籤具有隔離的cookie和緩存,當您關閉標籤時會被銷毀。 Safari還支援設定文件,相當於Firefox的多門容器,用於分離cookie和瀏覽。可以透過鎖定模式使Safari更加安全,該模式可以停用。閱讀有關Safari中預防預防的更多資訊。
Safari提供了一個僅邀請賞金計劃,用於向選定數量的安全研究人員報告錯誤。賞金計畫是在Apple在Blackhat 2016上的演講中宣布的。
除Web擴充API外,Safari中的Web擴充還有一個附加的選擇,可以在Safari的沙盒環境中使用本機程式碼。 Safari中的Web擴充也透過Apple的App Store分發。 App Store提交帶有Apple審核Web擴充程式碼的附加優勢。另一方面,App Store提交的成本很高。年度開發人員訂閱費用為100美元(與Chrome的5美元費用和Firefox的免費提交相反)。對於大多數開源開發人員而言,高成本高昂。結果,野生動物園幾乎沒有擴張。但是,安裝擴充功能時,應該牢記高成本。預計大多數Web副檔名將具有某種方式透過使用方式來支付開發人員成本。警惕未開啟原始碼的Web副檔名。
Safari將使用者首選項和密碼與iCloud鍵鏈同步。為了用純文字查看,使用者必須輸入目前裝置的帳戶密碼。這意味著用戶可以在設備上同步數據,並增加安全性。
野生動物園的發布週期比Chrome和Firefox慢(每年3-4個次要版本,1個主要發布)。穩定頻道採用較新的功能。 Safari中的安全性更新獨立於穩定發佈時間表處理,並透過App Store安裝。
另請參閱EL1T/UBLOCK-SAFARI,以停用超連結審核信標。
不建議使用許多鉻來源的瀏覽器。它們通常是封閉的來源,維護不佳,並提出可疑的主張以保護隱私。
在本指南中未評估其他雜項瀏覽器,例如勇敢者,因此既不建議也不勸阻使用。
Web瀏覽器以多種方式揭示訊息,例如透過導航器接口,其中可能包括瀏覽器版本,作業系統,網站權限和裝置電池等級等資訊。許多網站還使用帆布指紋識別在跨課程中唯一識別用戶。
有關安全意識瀏覽的更多信息,以及您的瀏覽器發送了哪些數據,請參見Howto:隱私和安全意識瀏覽,browserleaks.com,我是獨一無二的嗎? EFF涵蓋您的軌道資源。
為了阻礙第三方追蹤器,建議完全停用第三方Cookies 。預設情況下,Safari,Firefox和Chrome都將第三方Cookie阻止。第三方cookie是與使用者目前查看的文件相關的文件相關的cookie。在大多數情況下,第三方Cookie用於透過在網路上追蹤使用者的運動來建立瀏覽設定檔。停用第三方Cookie可阻止其他網域中的HTTP回應和腳本設定Cookie。此外,將cookie從請求刪除到不是文件原始網域的網域,因此cookie僅傳送至正在檢視的目前網站。
還要注意WebRTC,它可能會揭示您的本地或公眾(如果連接到VPN)IP位址。在Firefox和Chrome/Chromium中,可以透過諸如Ublock Origin之類的擴充功能來停用。鎖定模式在Safari中停用WEBRTC。
TOR是一個匿名網絡,可用於瀏覽網絡附加隱私。 TOR瀏覽器是Firefox的修改版本,其代理程式可以存取TOR網路。
從TOR Project下載Tor瀏覽器。
不要嘗試配置其他瀏覽器或應用程式以使用TOR,因為您可能會犯錯,這會損害匿名性。
同時下載dmg
和asc
簽署文件,然後驗證磁碟影像已由TOR開發人員簽署:
$ cd ~ /Downloads
$ file Tor *
TorBrowser-8.0.4-osx64_en-US.dmg: bzip2 compressed data, block size = 900k
TorBrowser-8.0.4-osx64_en-US.dmg.asc: PGP signature Signature (old)
$ gpg Tor * asc
[...]
gpg: Can't check signature: No public key
$ gpg --recv 0x4E2C6E8793298290
gpg: key 0x4E2C6E8793298290: public key "Tor Browser Developers (signing key) <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
$ gpg --verify Tor * asc
gpg: assuming signed data in 'TorBrowser-8.0.4-osx64_en-US.dmg'
gpg: Signature made Mon Dec 10 07:16:22 2018 PST
gpg: using RSA key 0xEB774491D9FF06E2
gpg: Good signature from "Tor Browser Developers (signing key) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: EF6E 286D DA85 EA2A 4BA7 DE68 4E2C 6E87 9329 8290
Subkey fingerprint: 1107 75B5 D101 FB36 BC6C 911B EB77 4491 D9FF 06E2
確保Good signature from "Tor Browser Developers (signing key) <[email protected]>"
出現在輸出中。關於未獲得認證的密鑰的警告是良性的,因為尚未被分配信任。
查看如何驗證TOR瀏覽器的簽章?了解更多。
要完成安裝TOR瀏覽器,請開啟磁碟映像並將其拖曳到應用程式資料夾中,或使用:
hdiutil mount TorBrowser-8.0.4-osx64_en-US.dmg
cp -r /Volumes/Tor Browser/Tor Browser.app/ ~/Applications/
使用spctl -a -v
和/或pkgutil --check-signature
指令:驗證TOR Project的Apple Developer ID MadPsayn6T的Apple Developer ID MADPSAYN6T驗證TOR應用程式的簽章:
$ spctl -a -vv ~ /Applications/Tor Browser.app
/Users/drduh/Applications/Tor Browser.app: accepted
source=Developer ID
origin=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
$ pkgutil --check-signature ~ /Applications/Tor Browser.app
Package "Tor Browser.app":
Status: signed by a certificate trusted by Mac OS X
Certificate Chain:
1. Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
SHA1 fingerprint: 95 80 54 F1 54 66 F3 9C C2 D8 27 7A 29 21 D9 61 11 93 B3 E8
-----------------------------------------------------------------------------
2. Developer ID Certification Authority
SHA1 fingerprint: 3B 16 6C 3B 7D C4 B7 51 C9 FE 2A FA B9 13 56 41 E3 88 E1 86
-----------------------------------------------------------------------------
3. Apple Root CA
SHA1 fingerprint: 61 1E 5B 66 2C 59 3A 08 FF 58 D1 4A E2 24 52 D1 98 DF 6C 60
您也可以使用codesign
命令檢查應用程式的程式碼簽名:
$ codesign -dvv ~ /Applications/Tor Browser.app
Executable=/Users/drduh/Applications/Tor Browser.app/Contents/MacOS/firefox
Identifier=org.torproject.torbrowser
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=229 flags=0x0(none) hashes=4+3 location=embedded
Library validation warning=OS X SDK version before 10.9 does not support Library Validation
Signature size=4247
Authority=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Signed Time=Dec 10, 2018 at 12:18:45 AM
Info.plist entries=24
TeamIdentifier=MADPSAYN6T
Sealed Resources version=2 rules=12 files=128
Internal requirements count=1 size=188
要查看簽名應用程式的完整憑證詳細信息,請用codesign
提取它們,然後用openssl
進行解碼:
$ codesign -d --extract-certificates ~ /Applications/Tor Browser.app
Executable=/Users/drduh/Applications/Tor Browser.app/Contents/MacOS/firefox
$ file codesign *
codesign0: data
codesign1: data
codesign2: data
$ openssl x509 -inform der -in codesign0 -subject -issuer -startdate -enddate -noout
subject= /UID=MADPSAYN6T/CN=Developer ID Application: The Tor Project, Inc (MADPSAYN6T)/OU=MADPSAYN6T/O=The Tor Project, Inc/C=US
issuer= /CN=Developer ID Certification Authority/OU=Apple Certification Authority/O=Apple Inc./C=US
notBefore=Apr 12 22:40:13 2016 GMT
notAfter=Apr 13 22:40:13 2021 GMT
$ openssl x509 -inform der -in codesign0 -fingerprint -noout
SHA1 Fingerprint=95:80:54:F1:54:66:F3:9C:C2:D8:27:7A:29:21:D9:61:11:93:B3:E8
$ openssl x509 -inform der -in codesign0 -fingerprint -sha256 -noout
SHA256 Fingerprint=B5:0D:47:F0:3E:CB:42:B6:68:1C:6F:38:06:2B:C2:9F:41:FA:D6:54:F1:29:D3:E4:DD:9C:C7:49:35:FF:F5:D9
TOR流量已加密到出口節點(即無法透過被動網路竊聽器讀取),但是可以識別使用TOR的使用 - 例如,TLS握手“ HostNames”將以專門顯示:
$ sudo tcpdump -An " tcp " | grep " www "
listening on pktap, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
.............". ...www.odezz26nvv7jeqz1xghzs.com.........
.............#.!...www.bxbko3qi7vacgwyk4ggulh.com.........
.6....m.....>...:.........|../* Z....W....X=..6...C../....................................0...0..0.......'....F./0.. *.H........0%1#0!..U....www.b6zazzahl3h3faf4x2.com0...160402000000Z..170317000000Z0'1%0#..U....www.tm3ddrghe22wgqna5u8g.net0..0..
有關更多信息,請參見TOR協議規範和TOR/TLSHASTORY。
您可能希望使用可插入的運輸方式額外混淆TOR交通。
這可以透過設定自己的TOR繼電器或找到現有的私人或公共橋樑作為混淆條目節點來完成。
若要獲得額外的安全性,請在虛擬盒或VMware虛擬化GNU/Linux或OpenBSD實例中使用TOR。
最後,請記住TOR網路提供匿名性,這不一定是隱私的代名詞。 TOR網路無法保證能夠防止能夠進行流量分析和相關性的全球觀察者。另請參閱在Internet Panopticon(PDF)中尋求匿名性,以及由現實的對手(PDF)在TOR上的流量相關性。
另請參閱無形的互聯網項目(I2P)及其TOR比較。
選擇VPN服務或自行設定時,請務必研究使用的協議,金鑰交換演算法,身份驗證機制和使用的加密類型。某些協定(例如PPTP)應避免使用Linux VM上的OpenVPN或基於Linux的Wireguard或透過一組跨平台工具。
當VPN中斷或斷開連線時,某些客戶可能會透過下一個可用介面傳送流量。有關如何僅在VPN上允許流量的範例,請參閱SCY/8122924。
有一個更新的指南,可以在虛擬機器(HWDSL2/setup-ipsec-vpn)或Docker容器(HWDSL2/Docker-ipsecec-vpn-Server)上設定IPSEC VPN。
可能值得考慮VPN提供者的地理位置。請參閱第114期的進一步討論。
另請參閱此技術概述的MACOS內建VPN L2TP/IPSEC和IKEV2用戶端。
PGP是簽署和加密資料(尤其是電子郵件)端到端的標準,因此只有寄件者和收件者才能存取它。
GPG或GNU隱私保護衛隊是符合PGP標準的GPL許可的開源程式。
GPG用於驗證您下載和安裝軟體的簽名,以及對稱或不對稱的加密檔案和文字。
從Homebrew和brew install gnupg
安裝。
如果您喜歡圖形應用程序,請下載並安裝GPG套件。
下載drduh/config/gpg.conf使用建議的設定:
curl -o ~/.gnupg/gpg.conf https://raw.githubusercontent.com/drduh/config/master/gpg.conf
請參閱drduh/Yubikey guide,以牢固產生和儲存GPG金鑰。
閱讀線上指南,並練習加密和解密給您自己和您的朋友的電子郵件。讓他們對這些東西感興趣吧!
XMPP是由IETF開發的開放標準,允許跨平台聯合訊息傳遞。客戶有很多選擇。考慮使用一個基於瀏覽器的客戶端來利用瀏覽器的沙箱。
根據提供者的不同,您可能不需要除使用者名稱和密碼以設定您的帳戶。
XMPP不是E2EE,預設情況下,您需要使用Omemo加密,因此請確保您的客戶端支援它。
Signal是一個高級E2EE Messenger,其雙重鍵盤協定由無數其他Messenger(包括WhatsApp,Google Messages和Facebook Messenger)使用。
訊號需要一個電話號碼以註冊,您需要先在手機上安裝它,然後才能在桌面上使用它。
iMessage是蘋果的第一個聚會使者。它需要一個Apple帳戶才能使用它。
確保啟用聯絡金鑰驗證並與您發送給的任何人進行驗證,以確保您向合適的人發送訊息。
您可以將iMessage與電話號碼或電子郵件一起使用,因此請選擇您可以看到的聯絡人的iMessage。
注意:預設情況下,啟用了iCloud備份,該備份將在沒有E2EE的Apple伺服器上儲存您的訊息加密鍵的副本。停用iCloud備份或啟用進階資料保護以防止這種情況。也要記得告訴您的訊息夥伴也這樣做!
野外有大量的MAC惡意軟體。 Mac不能免於病毒和惡意軟體!
一些惡意軟體捆綁了合法軟體,例如Java Bundling Ask工具欄,以及一些具有非法軟體的軟體,例如Mac.backdoor.i蟲與盜版程式捆綁在一起。
請參閱Mac OS X(PDF)上的惡意軟體持久性方法,以及OS X優勝美地的惡意軟體持久性,以了解花園變化的惡意軟體的功能。
在MALWAREBYTES部落格訂閱最新MAC安全新聞的更新。
也可以查看MACOS的駭客團隊惡意軟體:MacOS的根安裝,Mac代理的支援驅動程式和Mac的RCS代理,這是具有躲藏功能的高級惡意軟體的一個很好的例子(例如, ps
, ls
)。有關更多
僅從App Store或Apple公證的程式執行程式將有助於減輕惡意軟體。 Apple對惡意軟體的公證應用程式進行了自動掃描。 App Store應用程式經歷了審查過程以捕獲惡意軟體。
否則,請從直接從開發人員的網站或GitHub中取得可信賴來源的程式。請務必確保您的瀏覽器/終端在下載任何程式時都使用HTTP。
您還應該避免計劃要求大量權限和第三方封閉的來源計劃。開源程式碼允許任何人審核並檢查程式碼是否有安全/隱私問題。
透過執行以下命令執行以下命令,請檢查程式是否使用App Sandbox:
codesign -dvvv --entitlements - <path to your app>
如果啟用了App Sandbox,您將看到
[Key] com.apple.security.app-sandbox
[Value]
[Bool] true
另外,您可以透過開啟活動監視器並新增「沙盒」列在應用程式執行時檢查。
所有應用程式商店應用程式都需要使用應用程式沙箱。
注意:像Google Chrome這樣的瀏覽器使用自己的沙箱,因此他們不使用App Sandbox。
在使用以下命令運行之前,請檢查程式是否使用硬化運行時:
codesign --display --verbose /path/to/bundle.app
如果啟用了硬化的運行時,您將看到flags=0x10000(runtime)
。 「運行時」意味著啟用了硬化的運行時。可能還有其他標誌,但是運行時標誌是我們在這裡尋找的。
您可以在活動監視器中啟用稱為「限制」的列,該列是防止程式透過MacOS的動態連結器注入程式碼的標誌。理想情況下,這應該說“是”。
需要公證的應用程式使用硬化運行時。
若要掃描具有多個AV產品的應用程式並檢查其行為,請在運行之前將其上傳到Virustotal。
MacOS附帶一個名為XProtect的內建AV程式。 Xprotect會在背景自動執行,並更新其用於偵測惡意軟體的簽名,而無需您做任何事情。如果它偵測到已經運行的惡意軟體,它將像其他任何AV程式一樣可將其刪除和減輕。
諸如BlockBlock或MacLaunch.SH之類的應用程式可能有助於防止持續的惡意軟體。
本地安裝的防毒計畫通常是一把雙刃劍:它們可能會捕獲「花園品種」惡意軟體,但由於其特權操作模式,它們可能會增加成熟對手的攻擊表面。他們通常還會致電回家發送樣品以捕獲最新的惡意軟體。這可能是隱私問題。
請參閱Sophail:針對Antivirus(PDF)的應用攻擊,對ESET脆弱性的分析和剝削,流行的安全軟體遭到了無情的NSA和GCHQ攻擊,以及以色列如何抓住俄羅斯駭客為我們提供秘密的俄羅斯駭客。
Gatekeeper試圖防止非通知應用程式運作。
如果您嘗試運行一個不陳述的應用程序,看門人會給您警告。如果您進入隱私和安全性,請輕鬆繞過這一點,請向下捲動到底部,然後按一下應用程式上的開啟。然後,網守將允許您運行它。
Gatekeeper並不涵蓋所有二進位文件,只有應用程序,因此在運行其他文件類型時要小心。
若要驗證SIP已啟用,請使用命令csrutil status
,該狀態應傳回: System Integrity Protection status: enabled.
否則,透過恢復模式啟用SIP。
MacOS將元資料(APFS擴充屬性)附加到下載的文件,可以使用mdls
和xattr
指令查看:
$ ls -l@ ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
-rw-r--r--@ 1 drduh staff 63M Jan 1 12:00 TorBrowser-8.0.4-osx64_en-US.dmg
com.apple.metadata:kMDItemWhereFroms 46B
com.apple.quarantine 57B
$ mdls ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
kMDItemContentCreationDate = 2019-01-01 00:00:00 +0000
kMDItemContentCreationDate_Ranking = 2019-01-01 00:00:00 +0000
kMDItemContentModificationDate = 2019-01-01 00:00:00 +0000
kMDItemContentType = "com.apple.disk-image-udif"
kMDItemContentTypeTree = (
"public.archive",
"public.item",
"public.data",
"public.disk-image",
"com.apple.disk-image",
"com.apple.disk-image-udif"
)
kMDItemDateAdded = 2019-01-01 00:00:00 +0000
kMDItemDateAdded_Ranking = 2019-01-01 00:00:00 +0000
kMDItemDisplayName = "TorBrowser-8.0.4-osx64_en-US.dmg"
kMDItemFSContentChangeDate = 2019-01-01 00:00:00 +0000
kMDItemFSCreationDate = 2019-01-01 00:00:00 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "TorBrowser-8.0.4-osx64_en-US.dmg"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 5000
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 65840402
kMDItemFSTypeCode = ""
kMDItemInterestingDate_Ranking = 2019-01-01 00:00:00 +0000
kMDItemKind = "Disk Image"
kMDItemWhereFroms = (
"https://dist.torproject.org/torbrowser/8.0.4/TorBrowser-8.0.4-osx64_en-US.dmg",
"https://www.torproject.org/projects/torbrowser.html.en"
)
$ xattr -l ~ /Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
com.apple.metadata:kMDItemWhereFroms:
00000000 62 70 6C 69 73 74 30 30 A2 01 02 5F 10 4D 68 74 |bplist00..._.Mht|
00000010 74 70 73 3A 2F 2F 64 69 73 74 2E 74 6F 72 70 72 |tps://dist.torpr|
00000020 6F 6A 65 63 74 2E 6F 72 67 2F 74 6F 72 62 72 6F |oject.org/torbro|
[...]
com.apple.quarantine: 0081;58519ffa;Google Chrome.app;1F032CAB-F5A1-4D92-84EB-CBECA971B7BC
元資料屬性也可以使用-d
標誌刪除:
xattr -d com.apple.metadata:kMDItemWhereFroms ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
xattr -d com.apple.quarantine ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
xattr -l ~/Downloads/TorBrowser-8.0.4-osx64_en-US.dmg
在目錄~/Library/Preferences/
/Library/Preferences
找到其他元~/Library/Containers/<APP>/Data/Library/Preferences
和工件以下。
~/Library/Preferences/com.apple.sidebarlists.plist
包含所附卷的歷史清單。要清除它,請使用命令/usr/libexec/PlistBuddy -c "delete :systemitems:VolumesList" ~/Library/Preferences/com.apple.sidebarlists.plist
/Library/Preferences/com.apple.Bluetooth.plist
包含藍牙元數據,包括裝置歷史記錄。如果不使用藍牙,則可以清除元資料:
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist DeviceCache
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist IDSPairedDevices
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist PANDevices
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist PANInterfaces
sudo defaults delete /Library/Preferences/com.apple.Bluetooth.plist SCOAudioDevices
/var/spool/cups
包含杯子印表機工作快取。要清除它,請使用命令:
sudo rm -rfv /var/spool/cups/c0*
sudo rm -rfv /var/spool/cups/tmp/*
sudo rm -rfv /var/spool/cups/cache/job.cache*
若要清除已連線的iOS裝置列表,請使用:
sudo defaults delete /Users/$USER/Library/Preferences/com.apple.iPod.plist "conn:128:Last Connect"
sudo defaults delete /Users/$USER/Library/Preferences/com.apple.iPod.plist Devices
sudo defaults delete /Library/Preferences/com.apple.iPod.plist "conn:128:Last Connect"
sudo defaults delete /Library/Preferences/com.apple.iPod.plist Devices
sudo rm -rfv /var/db/lockdown/*
可以使用qlmanage -r cache
命令清除快速瀏覽縮圖數據,但是在Quicklook Directories中寫入檔案resetreason
,並指出手動清除了快速look Cache。使用qlmanage -r disablecache
停用縮圖緩存
也可以使用getconf DARWIN_USER_CACHE_DIR
和sudo getconf DARWIN_USER_CACHE_DIR
取得目錄名稱來清除它,然後將其刪除:
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/exclusive
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-shm
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-wal
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/resetreason
rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.data
同樣,對於root用戶:
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.fraghandler
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/exclusive
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-shm
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/index.sqlite-wal
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/resetreason
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.data
sudo rm -rfv $(getconf DARWIN_USER_CACHE_DIR)/com.apple.QuickLook.thumbnailcache/thumbnails.fraghandler
另請參閱“ Quicklook”快取可能會洩漏加密資料。
清除Finder偏好:
defaults delete ~/Library/Preferences/com.apple.finder.plist FXDesktopVolumePositions
defaults delete ~/Library/Preferences/com.apple.finder.plist FXRecentFolders
defaults delete ~/Library/Preferences/com.apple.finder.plist RecentMoveAndCopyDestinations
defaults delete ~/Library/Preferences/com.apple.finder.plist RecentSearches
defaults delete ~/Library/Preferences/com.apple.finder.plist SGTRecentFileSearches
可以在以下目錄中找到其他診斷檔案 - 但應在刪除任何問題之前謹慎,因為它可能會破壞日誌記錄或引起其他問題:
/var/db/CoreDuet/
/var/db/diagnostics/
/var/db/systemstats/
/var/db/uuidtext/
/var/log/DiagnosticMessages/
MacOS在NVRAM中儲存了首選Wi-Fi資料(包括憑證)。若要清除它,請使用以下命令:
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:current-network
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-networks
sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-count
MACOS可能會收集有關您輸入的內容的敏感信息,即使用戶字典和建議已關閉。若要刪除它們,並防止它們再次創建,請使用以下命令:
rm -rfv "~/Library/LanguageModeling/*" "~/Library/Spelling/*" "~/Library/Suggestions/*"
chmod -R 000 ~/Library/LanguageModeling ~/Library/Spelling ~/Library/Suggestions
chflags -R uchg ~/Library/LanguageModeling ~/Library/Spelling ~/Library/Suggestions
Quicklook應用程式支援元資料可以透過以下命令清除並鎖定:
rm -rfv "~/Library/Application Support/Quick Look/*"
chmod -R 000 "~/Library/Application Support/Quick Look"
chflags -R uchg "~/Library/Application Support/Quick Look"
文件修訂元資料儲存在/.DocumentRevisions-V100
中,可以透過以下命令清除並鎖定 - 應謹慎行事,因為這可能會破壞某些核心Apple應用程式:
sudo rm -rfv /.DocumentRevisions-V100/*
sudo chmod -R 000 /.DocumentRevisions-V100
sudo chflags -R uchg /.DocumentRevisions-V100
已儲存的應用程式狀態元資料可以用以下命令清除並鎖定:
rm -rfv ~/Library/Saved Application State/*
rm -rfv ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
chmod -R 000 ~/Library/Saved Application State/
chmod -R 000 ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
chflags -R uchg ~/Library/Saved Application State/
chflags -R uchg ~/Library/Containers/<APPNAME>/Data/Library/Saved Application State
可以用以下指令清除AutoSave元資料並鎖定:
rm -rfv "~/Library/Containers/<APP>/Data/Library/Autosave Information"
rm -rfv "~/Library/Autosave Information"
chmod -R 000 "~/Library/Containers/<APP>/Data/Library/Autosave Information"
chmod -R 000 "~/Library/Autosave Information"
chflags -R uchg "~/Library/Containers/<APP>/Data/Library/Autosave Information"
chflags -R uchg "~/Library/Autosave Information"
即使禁用了Siri發射代理,也可以使用以下命令清除並鎖定Siri Analytics資料庫,即使Siri啟動代理也可以被清除並鎖定:
rm -rfv ~/Library/Assistant/SiriAnalytics.db
chmod -R 000 ~/Library/Assistant/SiriAnalytics.db
chflags -R uchg ~/Library/Assistant/SiriAnalytics.db
~/Library/Preferences/com.apple.iTunes.plist
包含iTunes元資料。最近的iTunes搜尋資料可以透過以下命令清除:
defaults delete ~/Library/Preferences/com.apple.iTunes.plist recentSearches
如果您不使用Apple帳戶連結服務,則可以使用下列命令清除下列金鑰:
defaults delete ~/Library/Preferences/com.apple.iTunes.plist StoreUserInfo
defaults delete ~/Library/Preferences/com.apple.iTunes.plist WirelessBuddyID
所有在Quicktime播放器中播放的媒體都可以在以下方式找到:
~/Library/Containers/com.apple.QuickTimePlayerX/Data/Library/Preferences/com.apple.QuickTimePlayerX.plist
以下文件中可能存在其他元資料:
~/Library/Containers/com.apple.appstore/Data/Library/Preferences/com.apple.commerce.knownclients.plist
~/Library/Preferences/com.apple.commerce.plist
~/Library/Preferences/com.apple.QuickTimePlayerX.plist
使用urandom
和tr
產生強密碼:
tr -dc '[:graph:]' < /dev/urandom | fold -w 20 | head -1
密鑰鏈存取中的密碼助理也可以產生安全的憑證。
考慮使用Diceware來記住密碼。
GNUPG也可用於管理密碼和其他加密檔案(請參閱Drduh/Pusse和Drduh/pwd.sh)。
確保所有合格的線上帳戶都具有多因素身份驗證。多因素身份驗證的最強形式是WebAuthn,其次是基於應用程式的身份驗證器,基於SMS的程式碼最弱。
Yubikey是一個負擔得起的硬體令牌,並提供WebAuthn支援。它也可用於儲存加密金鑰進行GNUPG加密和SSH身份驗證 - 請參閱Drduh/Yubikey -guide。
在將檔案備份到外部媒體或線上服務之前,請在本機加密檔案。
如果您的威脅模型允許,則應遵循CISA概述的3-2-1備份模型。保留3份副本:原始和兩個備份。在2種不同的媒體類型上保留備份,例如本機磁碟機和雲端儲存。存放1個副本異地。
Time Machine是用於處理MACOS上備份的內建工具。取得外部磁碟機或網路磁碟機以備份並加密備份。
GNUPG可以與靜態密碼或公鑰一起使用(並使用儲存在Yubikey上的私鑰)。
使用密碼加壓和加密目錄:
tar zcvf - ~/Downloads | gpg -c > ~/Desktop/backup-$(date +%F-%H%M).tar.gz.gpg
解密並解壓縮目錄:
gpg -o ~/Desktop/decrypted-backup.tar.gz -d ~/Desktop/backup-*.tar.gz.gpg
tar zxvf ~/Desktop/decrypted-backup.tar.gz
也可以使用磁碟實用程式或hdiutil
建立加密量:
hdiutil create ~/Desktop/encrypted.dmg -encryption -size 50M -volname "secretStuff"
hdiutil mount ~/Desktop/encrypted.dmg
cp -v ~/Documents/passwords.txt /Volumes/secretStuff
hdiutil eject /Volumes/secretStuff
提供備份的其他應用程式和服務包括:
MacOS記得它已連接的存取點。像所有無線設備一樣,Mac將每次尋找網路時(例如從睡眠中醒來時)廣播它記得的所有存取點名稱(例如Myhomenetwork )。
這是一種隱私風險,因此在不再需要的時候從系統偏好>網路> 「進階」中刪除網路。
還可以看到人群中的訊號:透過智慧型手機探針(PDF)揭示社會關係。
可以在/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
中找到已儲存的Wi-Fi資訊(SSID,最後連線等)
您可以為每個網路具有不同的隨機MAC位址,以隨著時間的推移而旋轉。隨著時間的推移,這將有助於防止您在網路和同一網路上進行追蹤。
MacOS將Wi-Fi SSID和密碼儲存在NVRAM中,以便恢復模式存取Internet。請確保從Apple帳戶中清除NVRAM或對您的Mac進行驗證,該帳戶將清除NVRAM,然後再通過Mac。重置SMC將清除一些NVRAM,但不是全部。
最後,無線網路上的WEP保護不安全,您只能在可能的情況下連接到WPA3受保護的網路。
對於傳出的SSH連接,請使用硬體或受密碼保護的金鑰,設定遠端主機並考慮將其放置以增加隱私。有關建議的客戶端選項,請參閱drduh/config/ssh_config。
您也可以使用SSH建立一個加密的隧道來傳送流量,類似VPN。
例如,使用在遠端主機連接埠8118上運行的Propoxy:
ssh -C -L 5555:127.0.0.1:8118 [email protected]
sudo networksetup -setwebproxy "Wi-Fi" 127.0.0.1 5555
sudo networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 5555
或將SSH連接用作襪子代理:
ssh -NCD 3000 [email protected]
預設情況下,MACOS沒有啟用SSHD或遠端登入名稱。
啟用SHD並允許傳入的SSH連線:
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
或使用系統首選項>共享選單。
如果啟用SSHD,請確保停用密碼驗證並考慮進一步硬化您的設定。有關建議的選項,請參閱Drduh/config/sshd_config。
確認SSHD是否正在運作:
sudo lsof -Pni TCP:22
隨時保持MAC的身體安全,不要在公開場合無人看管。
具有無監督物理存取的熟練攻擊者可以安裝硬體鍵盤記錄器,以記錄所有擊鍵。使用內建鍵盤或藍牙鍵盤的MAC使此攻擊的許多現成版本旨在插入USB鍵盤和電腦之間。
為了防止在使用過程中進行物理盜竊,您可以使用諸如Buskill或SwiftGuard(更新的Usbkill,具有圖形使用者介面)之類的抗飛質工具。所有回應USB事件,如果您的裝置與您實體分開或連接未經授權的設備,則可以立即關閉電腦。
考慮購買隱私螢幕/過濾器,以便在公共場所使用。
可以將指甲油和防篡改密封件應用於組件以檢測篡改。
MACO具有強大的OpenBSM(基本安全模組)審核功能。您可以使用它來監視過程執行,網路活動等。
要尾巴審核日誌,請使用praudit
實用程式:
$ sudo praudit -l /dev/auditpipe
header,201,11,execve(2),0,Thu Sep 1 12:00:00 2015, + 195 msec,exec arg,/Applications/.evilapp/rootkit,path,/Applications/.evilapp/rootkit,path,/Applications/.evilapp/rootkit,attribute,100755,root,wheel,16777220,986535,0,subject,drduh,root,wheel,root,wheel,412,100005,50511731,0.0.0.0,return,success,0,trailer,201,
header,88,11,connect(2),0,Thu Sep 1 12:00:00 2015, + 238 msec,argument,1,0x5,fd,socket-inet,2,443,173.194.74.104,subject,drduh,root,wheel,root,wheel,326,100005,50331650,0.0.0.0,return,failure : Operation now in progress,4354967105,trailer,88
header,111,11,OpenSSH login,0,Thu Sep 1 12:00:00 2015, + 16 msec,subject_ex,drduh,drduh,staff,drduh,staff,404,404,49271,::1,text,successful login drduh,return,success,0,trailer,111,
請參閱/etc/security
中的audit
, praudit
, audit_control
和其他文件的手冊頁
注意,儘管man audit
表示-s
標誌將同步審計配置,但似乎有必要重新啟動以進行更改以生效。
有關更多信息,請參見iLostmynotes.blogspot.com和derflounder.wordpress.com上的文章。
注意系統完整性保護會幹擾DTRACE,因此不可能在最近的MacOS版本中使用它而不會停用SIP。
iosnoop
監視磁碟I/Oopensnoop
監控文件打開execsnoop
監視過程執行errinfo
顯示器失敗的系統調用dtruss
監視所有系統調用有關更多信息,請參見man -k dtrace
。
ps -ef
列出了有關所有運行過程的資訊。
您也可以使用活動監視器查看過程。
launchctl list
和sudo launchctl list
清單已加載,運行的使用者以及系統啟動守護程序和代理。
列出開啟網路檔案:
sudo lsof -Pni
列出了各種與網路相關資料結構的內容:
sudo netstat -atln
Wireshark可以從帶有tshark
的命令列使用。
監視DNS查詢和答案:
tshark -Y "dns.flags.response == 1" -Tfields
-e frame.time_delta
-e dns.qry.name
-e dns.a
-Eseparator=,
監視HTTP請求和回應:
tshark -Y "http.request or http.response" -Tfields
-e ip.dst
-e http.request.full_uri
-e http.request.method
-e http.response.code
-e http.response.phrase
-Eseparator=/s
監視X509(SSL/TLS)憑證:
tshark -Y "ssl.handshake.certificate" -Tfields
-e ip.src
-e x509sat.uTF8String
-e x509sat.printableString
-e x509sat.universalString
-e x509sat.IA5String
-e x509sat.teletexString
-Eseparator=/s -Equote=d
Google/Santa是為Google公司Macintosh機隊開發的安全軟體,並開源。
聖誕老人是MacOS的二進位和檔案存取授權系統。它由一個系統擴展程序組成,該系統擴展程序監視執行,這是一個守護程序,該守護程序根據本地數據庫的內容做出執行決策,GUI代理,在塊決策中通知用戶,以及用於管理系統和系統和系統和管理系統的命令列實用程式將資料庫與伺服器同步。
聖誕老人使用核心授權API來監視和禁止/禁止在內核中執行二進位。二進位檔案可以被唯一的雜湊或簽章開發人員憑證列入白色或黑色。 SANTA可用於僅允許可信賴的程式碼執行,也可以透過在Mac上執行黑名單的惡意軟體,類似Windows的Bit9軟體。
注意,聖誕老人目前沒有用於管理規則的圖形使用者介面。以下說明僅適用於進階使用者!
要安裝聖誕老人,請訪問發布頁面並下載最新的磁碟映像,安裝它並安裝包含的軟體包:
hdiutil mount ~/Downloads/santa-0.9.20.dmg
sudo installer -pkg /Volumes/santa-0.9.20/santa-0.9.20.pkg -tgt /
預設情況下,聖誕老人以「監視器」模式安裝(意味著什麼都沒有被阻止,只有記錄),並帶有兩個規則:一個用於Apple二進位文件,另一種用於聖誕老人軟體本身。
驗證聖誕老人正在運行,其內核模組已加載:
$ santactl status
>>> Daemon Info
Mode | Monitor
File Logging | No
Watchdog CPU Events | 0 (Peak: 0.00%)
Watchdog RAM Events | 0 (Peak: 0.00MB)
>>> Kernel Info
Kernel cache count | 0
>>> Database Info
Binary Rules | 0
Certificate Rules | 2
Events Pending Upload | 0
$ ps -ef | grep " [s]anta "
0 786 1 0 10:01AM ?? 0:00.39 /Library/Extensions/santa-driver.kext/Contents/MacOS/santad --syslog
$ kextstat | grep santa
119 0 0xffffff7f822ff000 0x6000 0x6000 com.google.santa-driver (0.9.14) 693D8E4D-3161-30E0-B83D-66A273CAE026 <5 4 3 1>
建立一個黑名單規則以防止iTunes執行:
$ sudo santactl rule --blacklist --path /Applications/iTunes.app/
Added rule for SHA-256: e1365b51d2cb2c8562e7f1de36bfb3d5248de586f40b23a2ed641af2072225b3.
嘗試啟動iTunes-將被阻止。
$ open /Applications/iTunes.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/iTunes.app.
刪除規則:
$ sudo santactl rule --remove --path /Applications/iTunes.app/
Removed rule for SHA-256: e1365b51d2cb2c8562e7f1de36bfb3d5248de586f40b23a2ed641af2072225b3.
打開iTunes:
$ open /Applications/iTunes.app/
[iTunes will open successfully]
建立一個新的範例C程式:
$ cat << EOF > foo.c
> # include <stdio.h>
> main () { printf( " Hello Worldn”); }
> EOF
用GCC編譯程式(需要安裝XCode或命令列工具):
$ gcc -o foo foo.c
$ file foo
foo: Mach-O 64-bit executable x86_64
$ codesign -d foo
foo: code object is not signed at all
運行它:
$ ./foo
Hello World
將聖誕老人切入「鎖定」模式,該模式僅允許授權的二進位檔案運行:
$ sudo defaults write /var/db/santa/config.plist ClientMode -int 2
嘗試執行未簽署的二進位檔案:
$ ./foo
bash: ./foo: Operation not permitted
Santa
The following application has been blocked from executing
because its trustworthiness cannot be determined.
Path: /Users/demouser/foo
Identifier: 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
Parent: bash (701)
要授權二進制,請確定其SHA-256總和:
$ santactl fileinfo /Users/demouser/foo
Path : /Users/demouser/foo
SHA-256 : 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
SHA-1 : 4506f3a8c0a5abe4cacb98e6267549a4d8734d82
Type : Executable (x86-64)
Code-signed : No
Rule : Blacklisted (Unknown)
新增一個規則:
$ sudo santactl rule --whitelist --sha256 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed
Added rule for SHA-256: 4e11da26feb48231d6e90b10c169b0f8ae1080f36c168ffe53b1616f7505baed.
運行它:
$ ./foo
Hello World
它被允許和工作!
開發人員證書也可以允許申請。例如,下載並運行Google Chrome-將在「鎖定」模式下被聖誕老人阻止:
$ curl -sO https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg
$ hdiutil mount googlechrome.dmg
$ cp -r /Volumes/Google Chrome/Google Chrome.app /Applications/
$ open /Applications/Google Chrome.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Google Chrome.app.
透過開發人員證書(簽名鏈中的第一項)授權該申請:
$ santactl fileinfo /Applications/Google Chrome.app/
Path : /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
SHA-256 : 0eb08224d427fb1d87d2276d911bbb6c4326ec9f74448a4d9a3cfce0c3413810
SHA-1 : 9213cbc7dfaaf7580f3936a915faa56d40479f6a
Bundle Name : Google Chrome
Bundle Version : 2883.87
Bundle Version Str : 55.0.2883.87
Type : Executable (x86-64)
Code-signed : Yes
Rule : Blacklisted (Unknown)
Signing Chain:
1. SHA-256 : 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
SHA-1 : 85cee8254216185620ddc8851c7a9fc4dfe120ef
Common Name : Developer ID Application: Google Inc.
Organization : Google Inc.
Organizational Unit : EQHXZ8M8AV
Valid From : 2012/04/26 07:10:10 -0700
Valid Until : 2017/04/27 07:10:10 -0700
2. SHA-256 : 7afc9d01a62f03a2de9637936d4afe68090d2de18d03f29c88cfb0b1ba63587f
SHA-1 : 3b166c3b7dc4b751c9fe2afab9135641e388e186
Common Name : Developer ID Certification Authority
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2012/02/01 14:12:15 -0800
Valid Until : 2027/02/01 14:12:15 -0800
3. SHA-256 : b0b1730ecbc7ff4505142c49f1295e6eda6bcaed7e2c68c5be91b5a11001f024
SHA-1 : 611e5b662c593a08ff58d14ae22452d198df6c60
Common Name : Apple Root CA
Organization : Apple Inc.
Organizational Unit : Apple Certification Authority
Valid From : 2006/04/25 14:40:36 -0700
Valid Until : 2035/02/09 13:40:36 -0800
在這種情況下, 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
是Google的Apple Developer證書的SHA -256(團隊M EQ
$ sudo santactl rule --whitelist --certificate --sha256 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153
Added rule for SHA-256: 15b8ce88e10f04c88a5542234fbdfc1487e9c2f64058a05027c7c34fc4201153.
Google Chrome現在應該啟動,只要程式碼簽署憑證不更改或過期,該應用程式的隨後更新將繼續工作。
停用“鎖定”模式:
sudo defaults delete /var/db/santa/config.plist ClientMode
請參閱/var/log/santa.log
監視允許並拒絕執行決策。
Zentral提供了聖誕老人的日誌和設定伺服器,Zentral是一個開源事件監視解決方案和Osquery和Santa的TLS伺服器。
Zentral將在監視和鎖定操作模式下支援聖誕老人。客戶需要註冊與Sync Santa規則的TLS連接,所有端點的聖誕老人事件均已匯總並在Zentral登入。聖誕老人事件可以觸發Zentral框架內的動作和通知。
請注意, Python,Bash和其他口譯員已獲得授權(因為它們是由Apple的開發人員證書簽署的),因此Santa將無法阻止此類腳本執行。因此,一個潛在的非二進位程式禁用聖誕老人是一個弱點(不是脆弱性,因為它是設計的)。
禁用診斷和使用數據。
如果您想播放音樂或觀看視頻,請使用MacOS中的內建媒體播放器QuickTime Player。它使用應用程式沙箱,硬化的運行時,並從簽名的系統量中獲得益處,作為基本系統的一部分。
如果您想使用洪流,請使用免費和開源的傳輸(注意:像所有軟體一樣,甚至開源項目,惡意軟體仍然可能會進入)。您可能還想使用一個區塊清單來避免凝視已知的壞主機 - 請參閱《傳輸》和Johntyree/3331662的最佳區塊清單。
管理預設檔案處理程序。
使用控制台應用程式或syslog -w
或/usr/bin/log stream
命令進行監視系統日誌。
螢幕保護程式啟動後,將螢幕設定為鎖定:
defaults write com.apple.screensaver askForPassword -int 1
defaults write com.apple.screensaver askForPasswordDelay -int 0
在Finder中公開隱藏的檔案和庫資料夾:
defaults write com.apple.finder AppleShowAllFiles -bool true
chflags nohidden ~/Library
顯示所有檔案名稱擴充功能(因此「 evil.jpg.app」不能輕易偽裝)。
defaults write NSGlobalDomain AppleShowAllExtensions -bool true
不要預設將文檔儲存到iCloud:
defaults write NSGlobalDomain NSDocumentSaveNewDocumentsToCloud -bool false
在終端機中啟用安全鍵盤條目(除非您使用Yubikey或諸如TextExpander之類的應用程式)。
停用崩潰記者(應用程式崩潰後出現的對話框並提示向Apple報告該問題):
defaults write com.apple.CrashReporter DialogType none
停用Bonjour多播廣告:
警告:這將導致空中播放和氣印問題!
sudo defaults write /Library/Preferences/com.apple.mDNSResponder.plist NoMulticastAdvertisements -bool YES
如果不需要,請停用交接和藍牙功能。
檢查您的應用程式是否在活動監視器中打了沙箱。
MacOS在/etc/sudoers
中附帶了這一行:
Defaults env_keep += "HOME MAIL"
當您提升特權時,這會阻止Sudo更改家庭變數。這意味著當您執行“ sudo zsh”時,它將以root zsh dotfiles的root執行。建議您發表這一行,以避免使用惡意軟體或本地攻擊者升級特權的潛在簡單方法。
如果您想要保留具有非root使用者主目錄的根使用者的便利性,則可以將匯出線附加到/var/root/.zshrc,例如:
export HOME=/Users/blah
設定一個自訂透明:
sudo launchctl config user umask 077
重新啟動,在Finder中建立檔案並驗證其權限(MACOS預設值允許「群組/其他」讀取存取):
$ ls -ld umask *
drwx------ 2 kevin staff 64 Dec 4 12:27 umask_testing_dir
-rw-------@ 1 kevin staff 2026566 Dec 4 12:28 umask_testing_file