快速瀏覽內部
將其視為從頭開始構建和保護現代軟件系統和網絡的實用實踐指南。
本指南的不同之處在於我們的方法。 我將通過每天生活和呼吸這些東西的四個人的眼睛來審視整個技術堆棧,從物理網絡電纜到應用程序代碼:
- 構建基礎的 網絡工程師。
- 必須保護網絡安全的網絡安全衛士。
- 試圖破壞它的 進攻性黑客。
- 編寫在其上運行的代碼的軟件工程師。
您將全面了解基本的安全主題,而無需枯燥的學術廢話。 我將介紹以下內容:
- 設計一個從一開始就難以攻擊的網絡。
- 分層防禦,使一次失敗不再是一場災難(縱深防禦)。
- 通過遵循網絡殺傷鏈,像攻擊者一樣思考。
- 從第一天開始編寫安全代碼(安全 SDLC)。
第一部分:基石 - 安全網絡的基礎
第 1 章:通過安全視角重新審視網絡模型
安全架構之旅始於所有數據通信的起點:網絡。 對 OSI 或 TCP/IP 模型的膚淺理解是不夠的[1]。 安全專業人員必須了解每一層,不僅要了解其功能,還要了解其攻擊面。
1.1 第 1 層 - 物理層:有形威脅
- 網絡工程師的觀點: 這一層是電纜、光纖、交換機和集線器的世界。 主要關注的是物理連接、信號完整性和硬件配置。 它是一切事物建立的基礎。
- 黑客的觀點: 如果可訪問,物理層是最終的攻擊媒介。 攻擊通常是明目張膽但非常有效:
- 竊聽: 直接連接到網線以攔截未加密的流量[2]。
- 硬件植入: 將惡意設備(例如,Raspberry Pi)放置在防火牆後面、安全網絡內,以建立持久的 C2(命令和控制)通道。
- 端口訪問: 只需將筆記本電腦插入會議室或大廳中不安全的活動網絡插孔即可。
- 防御者的觀點: 物理安全就是網絡安全。 防禦措施包括程序性和物理性:上鎖的服務器機房、禁用未使用的牆壁端口、嚴格的訪問控制策略以及硬件上的防篡改密封。 從技術角度來看,IEEE 802.1X 網絡訪問控制 (NAC) 可以實施為要求任何物理連接到網絡的設備進行身份驗證[3]。
1.2 第 2 層 - 數據鏈路層:本地網絡戰場
- 網絡工程師的觀點: 這是 MAC 地址、交換機和局域網 (LAN) 的領域。 主要協議是以太網和ARP(地址解析協議),它將 IP 地址(第 3 層)映射到 MAC 地址(第 2 層)[4]。 該層負責將幀發送到“同一”本地網段上的正確設備。
- 黑客的觀點: 第 2 層是一個豐富的攻擊環境,因為它是採用隱式信任模型設計的。
- ARP 欺騙/中毒: 攻擊者將偽造的 ARP 消息發送到 LAN 上。 他們可以告訴網絡網關攻擊者的MAC地址屬於受害者的IP,並告訴受害者攻擊者的MAC地址屬於網關的IP。 這將攻擊者置於對話的中間(中間人,MitM),允許他們攔截或修改受害者的所有流量[5]。
- MAC 洪氾: 針對網絡交換機的攻擊。 攻擊者發送大量具有不同源 MAC 地址的以太網幀,填滿交換機的 CAM(內容可尋址內存)表。 當表已滿時,交換機無法再智能地將幀轉發到特定端口,並進入“故障開放”模式,在該模式下,交換機充當集線器,將所有幀廣播到所有端口。 這使得攻擊者能夠嗅探交換網絡上的所有流量[6]。
- VLAN 跳躍: 一種攻擊,連接到一個 VLAN 的攻擊者可以訪問他們不應該訪問的另一個 VLAN 上的流量。 這通常是通過利用錯誤配置的中繼端口來完成的[7]。
- 防御者的觀點: 交換機提供了許多安全功能來對抗這些攻擊:
- 端口安全: 限制單個交換機端口上可以使用的 MAC 地址數量,並且可以配置為僅允許特定的 MAC 地址[8]。
- DHCP 偵聽: 防止惡意 DHCP 服務器被引入網絡。
- 動態 ARP 檢測 (DAI): 驗證網絡中的 ARP 數據包,通過將 ARP 請求/響應與 DHCP 監聽綁定表進行比較來防止 ARP 欺騙。
1.3 第 3 層 - 網絡層:路由棋盤
- 網絡工程師的觀點: 這是IP 地址和路由層。 它是關於在不同網絡之間移動數據包。 路由器在這一層運行,根據目標 IP 地址做出決策,將數據包轉發到最終目的地。 這裡存在諸如ICMP(用於 ping 和跟踪路由)和 IGMP 之類的協議[9]。
- 黑客的觀點: 第 3 層攻擊的重點是破壞路由和欺騙身份。
- IP 欺騙: 攻擊者使用偽造的源 IP 地址創建 IP 數據包。 這是拒絕服務 (DoS) 攻擊中使用的主要技術。 在 Smurf 攻擊中,攻擊者向網絡的廣播地址發送大量 ICMP 回顯請求 (ping),將源 IP 欺騙為受害者的 IP。 然後網絡上的所有主機都會回复受害者,使其不堪重負[10]。
- 路由劫持(BGP 劫持): 一種複雜的攻擊,攻擊者通過破壞互聯網路由表,特別是由 邊界網關協議 (BGP) 維護的路由表,非法控制 IP 地址組。 這可用於重定向流量,使其成為間諜活動或大規模 MitM 攻擊的強大工具[11]。
- 防御者的觀點: 這一層的防禦是關於過濾和驗證的。
- 入口/出口過濾: 防火牆應配置為丟棄來自互聯網的具有內部網絡內源 IP 地址的傳入數據包(入口過濾)。 它們還應該配置為丟棄來自內部網絡的沒有源 IP 的傳出數據包(出口過濾)。 這有助於防止 IP 欺騙,如 BCP 38 / RFC 2827 中所述[12]。
- 訪問控制列表 (ACL): 路由器和防火牆使用 ACL 根據源/目標 IP、端口和協議來允許或拒絕流量。 這是網絡訪問控制的基本構建塊。
1.4 第 4 層 - 傳輸層:連接契約
- 網絡工程師的觀點: 該層提供主機到主機的通信服務。 兩個最重要的協議是 TCP(傳輸控制協議) 和 UDP(用戶數據報協議)[13]。
- TCP: 面向連接、可靠且有序的傳送。 它通過**三向握手(SYN、SYN-ACK、ACK)**建立連接,並確保所有數據正確到達。 用於 HTTP、FTP、SMTP。
- UDP: 無連接、不可靠、無序。 這是一種“即發即忘”協議,速度更快,但不提供交付保證。 用於 DNS、VoIP、在線遊戲。
- 黑客的觀點: 這一層的攻擊通常集中在資源耗盡和偵察上。
- TCP SYN Flood: 經典的 DoS 攻擊。 攻擊者向受害服務器發送大量 TCP SYN 數據包,欺騙源 IP 地址。 服務器用 SYN-ACK 進行響應,並為新連接分配資源,等待最終的 ACK,但該 ACK 永遠不會到達(因為源 IP 是假的)。 這會留下大量半開連接,耗盡服務器的連接表並阻止合法用戶連接[14]。
- 端口掃描: 攻擊者使用 nmap 等工具向目標主機上的一系列端口發送探測,以發現哪些服務正在運行。 “開放”端口表示偵聽服務可能成為潛在的利用目標[15]。
- 防御者的觀點: 防禦側重於狀態管理和掃描檢測。
- 狀態防火牆: 這些防火牆跟踪 TCP 連接的狀態。 它們僅在看到相應的 SYN 數據包時才允許 SYN-ACK 數據包通過,並且僅在看到 SYN-ACK 時才允許 ACK。 這使得它們比無狀態數據包過濾器更加安全。
- SYN Cookie: 一種緩解 SYN 洪水的技術。 服務器不是在收到 SYN 時分配資源,而是將有關連接的信息編碼到 SYN-ACK 數據包的序列號中並將其發回。 它僅在客戶端發送包含“cookie”的最終 ACK 時分配資源,證明它是合法來源[16]。
- 入侵檢測系統 (IDS): IDS 可配置為檢測端口掃描活動並發出警報,從而為防御者提供潛在攻擊的早期預警。
第 2 章:設計可防禦的網絡架構
扁平網絡(每個設備都可以與其他設備通信)是黑客的天堂。 一旦他們破壞了單個低價值主機(如打印機或工作站),他們就可以輕鬆橫向移動到高價值目標,如域控制器或數據庫。 可防禦的架構是分段架構[17]。
2.1 分割原則:構建內牆
- 網絡工程師的觀點: 分段是將網絡分割成更小的、孤立的子網的做法。 這是通過以下方式實現的:
- 子網劃分: 將大的 IP 地址塊分成更小的塊。 流量在子網之間移動需要路由器。
- VLAN(虛擬 LAN): 一種在同一物理交換基礎設施上創建邏輯上獨立的網絡的方法。 可以將交換機配置為 VLAN 10 中的端口只能與 VLAN 10 中的其他端口通信,即使它們位於不同的物理交換機上[18]。
- 分層架構: 一種經典的設計模式,根據應用程序功能分離網絡,通常為面向互聯網的服務創建 DMZ(非軍事區)[19]。
- Web 層 (DMZ): 最外層,可通過 Internet 訪問。 包含 Web 服務器和反向代理。
- 應用程序層: 中間層,只能從 Web 層訪問。 包含應用程序服務器和業務邏輯。
- 數據層: 最裡面、最受保護的層,只能從應用程序層訪問。 包含數據庫。
- 防御者的觀點: 細分是縱深防禦的基石。 它直接支持網絡級別的最小權限原則。 Web 服務器不需要直接與域控制器通信,因此防火牆規則應阻止該通信路徑。 如果 Web 服務器遭到破壞,攻擊者橫向移動的能力就會受到嚴重限制。 目標是讓攻擊者的每一步——從 DMZ 到應用程序層,從應用程序層到數據層——成為一個困難且受到嚴格監控的瓶頸。
2.2 微分段和零信任
- 網絡工程師的觀點: 微分段是分段的更細粒度的演變。 您可以圍繞各個工作負載或應用程序創建安全邊界,而不是按大區域 (VLAN) 進行分段。 在虛擬化或云環境中,這通常通過**軟件定義網絡(SDN)**和虛擬防火牆來實現。
- 網絡安全專業人士的觀點: 微分段是 零信任 網絡架構的最終體現。 零信任的核心原則是“永不信任,始終驗證”。 它假設攻擊者已經在網絡內部[20]。 因此,兩個虛擬機之間的通信(即使它們位於同一子網中)也不是隱式信任的。 它必須得到安全策略的明確允許。 這使得攻擊者的橫向移動變得極其困難。
- 軟件工程師的觀點: 這對開發人員有影響。 應用程序的設計必須假設網絡連接無法得到保證。 它們需要能夠適應連接故障,並配置正確的服務發現機制。 Kubernetes 網絡策略 是開發人員在代碼 (YAML) 中定義微分段規則的一個主要示例,指定允許哪些 pod 與哪些其他 pod 進行通信[21]。
第 3 章:核心網絡安全控制詳細信息
3.1 防火牆:網絡看門人
- 無狀態與有狀態: 正如第 1 章中所討論的,有狀態防火牆非常優越,因為它可以理解連接的上下文。
- 下一代防火牆 (NGFW): NGFW 是一種“深度數據包檢查”防火牆,超越了簡單的端口/協議檢查。 它包括以下功能:
- 應用程序感知: 它可以根據應用程序識別和控制流量(例如,阻止 Facebook 但允許 Salesforce),而不僅僅是端口號(因為許多應用程序在端口 443 上運行)[22]。
- 集成入侵防禦 (IPS): 它可以主動阻止與已知攻擊特徵匹配的流量。
- 威脅情報源: 它可以與基於雲的威脅情報服務集成,以阻止來自已知惡意 IP 地址或域的流量。
- Web 應用程序防火牆 (WAF): WAF 是在第 7 層(應用程序層)運行的專用防火牆。 它旨在保護 Web 應用程序免受常見的基於 Web 的攻擊,例如 OWASP Top 10 中列出的攻擊[23]。
- 開發人員的觀點: WAF 是至關重要的防禦層,但它不能替代安全編碼。 這是一個安全網。 WAF 可能會阻止基本的 SQL 注入攻擊,例如
OR 1=1,但熟練的攻擊者通常可以找到使用編碼、混淆或更複雜的查詢來繞過 WAF 規則的方法。 主要防禦必須在代碼本身中(使用參數化查詢)。 - 黑客的觀點: WAF 規避是一項完善的規則。 攻擊者使用工具來探測 WAF、識別供應商和規則集,並製作語法有效但不會觸發 WAF 簽名的有效負載[24]。
3.2 IDS/IPS:網絡瞭望塔
- 入侵檢測系統 (IDS): 一種被動監控設備。 它分析網絡流量的副本,並在檢測到可疑活動時發送警報。 它不會阻塞交通。
- 入侵防禦系統 (IPS): 一種主動的串聯設備。 它分析流量,並可以在與惡意簽名匹配的數據包到達目標之前主動阻止或丟棄它們。
- 檢測方法:
- 基於簽名: 像防病毒軟件一樣工作。 它有一個已知攻擊模式(“簽名”)的數據庫。 這對於對抗已知威脅非常有效,但無法檢測新的“零日”攻擊。
- 基於異常: 系統首先構建“正常”網絡流量的基線。 然後,它會對任何明顯偏離此基線的活動發出警報。 這可以檢測新的攻擊,但誤報率通常很高[25]。
- 黑客的觀點: 規避技術包括對數據包進行分段、使用加密(IDS/IPS 無法檢查加密流量,除非執行 SSL/TLS 解密,這在計算上是昂貴的)以及修改攻擊負載以避免匹配已知簽名。
第二部分:防御者的堡壘 - 整體防禦策略
第 4 章:縱深防禦的哲學
縱深防禦是現代網絡安全的核心理念。 人們認識到任何單一的安全控制都可能而且將會失敗。 目標是創建分層、冗餘的防禦,提供多種機會來檢測、減慢和阻止攻擊者[26]。
4.1 城堡的各層
中世紀城堡提供了一個完美的比喻:
- 護城河(周邊安全): 這是第一道防線。 它對應於邊界路由器和外圍防火牆。 它的工作是阻止那些不成熟的、機會主義的攻擊者。
- 外牆(網絡安全): 更堅固的屏障。 這對應於內部分段、IDS/IPS 和強訪問控制列表。 它旨在遏制突破邊界的威脅。
- 牆上的弓箭手(監視和檢測): 這些是哨兵。 這對應於安全運營中心(SOC)、SIEM系統和日誌分析。 他們正在積極尋找襲擊跡象。
- 內堡(主機和端點安全): 戒備森嚴的據點。 這對應於服務器和工作站本身的安全控制:端點檢測和響應 (EDR)、基於主機的防火牆、防病毒和文件完整性監控。
- 皇冠上的寶石(應用程序和數據安全): 終極獎品,受到最強大控制的保護。 這對應於安全的應用程序代碼、強大的身份驗證和授權以及靜態和傳輸中的數據加密。
- 守衛(人員、流程和政策): 人的因素。 這包括安全意識培訓、事件響應計劃和強大的操作安全程序。
- 黑客的觀點: 攻擊者將這些層視為需要克服的一系列障礙。 他們的目標是找到每一層中最薄弱的環節。 如果員工點擊網絡釣魚鏈接(繞過外圍和網絡層),那麼強大的防火牆就毫無用處。 如果安全應用程序運行在可能在主機層受到損害的未打補丁的服務器上,那麼它就毫無用處。
第 5 章:威脅建模 - 像攻擊者一樣思考
威脅建模是一個結構化過程,用於在構建系統之前識別系統中的潛在威脅和漏洞。 這是一種主動而非被動的安全實踐[27]。
5.1 STRIDE 方法
STRIDE 由 Microsoft 開發,是威脅分類的助記符[28]:
- Spoofing:非法冒充其他用戶或組件的身份。
- 防禦: 強身份驗證 (MFA)、數字簽名。
- T篡改:未經授權修改數據,無論是傳輸中的還是靜態的。
- 防禦: 散列、訪問控制、數據加密。
- Repudiation:用戶否認自己執行了某項操作。
- 防禦: 安全審計日誌、數字簽名。
- I信息披露:將敏感信息暴露給未經授權的個人。
- 防禦: 加密、訪問控制。
- D拒絕服務:阻止合法用戶訪問系統。
- 防禦: 速率限制、負載平衡、彈性架構。
- **特權提升:用戶或組件獲得他們無權獲得的權限。
- 防禦: 最小權限原則,強大的授權檢查。
5.2 實用的威脅建模練習
- 軟件工程師的觀點: 想像一個用於更新用戶配置文件的簡單 API 端點:
PUT /api/users/{id}。 開發團隊將與安全專業人員一起執行威脅模型。
- 分解應用程序: 繪製數據流圖。 用戶的瀏覽器將 HTTPS 請求發送到 API 網關,API 網關將其轉發到用戶服務,然後更新 PostgreSQL 數據庫。
- 使用 STRIDE 識別威脅:
- (欺騙): 一個用戶是否可以通過更改
{id}在網址中? (這是一個典型的授權缺陷)。 - (篡改): 處於 MitM 位置的攻擊者是否可以修改傳輸中的配置文件數據? (防禦:HTTPS/TLS 可以防止這種情況發生)。
- (信息洩露): API 響應是否洩露敏感數據,例如用戶的密碼哈希或其他 PII?
- (拒絕服務): 攻擊者能否用大量請求淹沒此端點以淹沒服務或數據庫? (防禦:速率限制)。
- (權限提升): 更新邏輯中是否存在允許攻擊者獲得管理員權限的漏洞(例如 SQL 注入)?
此過程將安全性從抽象概念轉變為工程任務和測試用例的具體列表。
第 6 章:安全運營中心 (SOC) - 可見性和響應
如果深度防禦是策略,那麼 SOC 就是執行該策略的指揮中心。
6.1 SOC 的核心:SIEM
- 安全信息和事件管理 (SIEM): SIEM 是 SOC 的中樞神經系統。 它的工作是:
- 聚合日誌: 從數百或數千個來源(防火牆、服務器、應用程序、雲服務等)收集日誌數據。
- 標準化數據: 將這些不同的日誌格式解析為通用模式。
- 關聯事件: 這是關鍵功能。 SIEM 使用關聯規則將來自不同來源的看似無害的單個事件連接到有意義的安全事件。
- 警報: 當觸發關聯規則時,SIEM 會生成高保真警報供安全分析師進行調查[29]。
- 開發人員的觀點: 您的應用程序日誌是 SIEM 的關鍵數據源。 良好的日誌記錄是一項安全功能。 日誌應該是結構化的(例如 JSON),包含相關上下文(用戶 ID、源 IP、請求 ID),並記錄成功和失敗的安全相關事件(例如登錄、密碼更改、授權失敗)。
6.2 事件響應生命週期
當警報被確認為真實事件時,SOC 會遵循結構化事件響應 (IR) 計劃,該計劃通常基於 NIST 等框架[30]:
- 準備: 在事件發生之前*完成的工作(擁有計劃、工具和經過培訓的人員)。
- 識別: 確定事件是否為安全事件。
- 遏制: 當務之急是止血。 這可能涉及將受感染的主機與網絡隔離或禁用受感染的用戶帳戶。
- 根除: 消除環境中的威脅(例如,刪除惡意軟件、修補漏洞)。
- 恢復: 將系統恢復到正常運行狀態。
- 經驗教訓: 事後分析以確定事件的根本原因並確定改進措施以防止其再次發生。
第三部分:攻擊者的策略 - 進攻方法
要想建立強大的防守,就必須了解進攻。 這部分剖析了攻擊者的心態和方法,為其他地方討論的防禦措施提供了背景。
第 7 章:網絡殺傷鏈 - 攻擊藍圖
網絡殺傷鏈由洛克希德·馬丁公司開發,對典型網絡攻擊的各個階段進行建模。 防御者可以將他們的控制映射到每個階段,目標是儘早打破鏈條[31]。
- 偵察: 攻擊者收集有關目標的信息。
- 被動偵察: 使用公開信息(OSINT - 開源情報)。
- 主動偵察: 直接探測目標的基礎設施。 這包括端口掃描 (nmap)、DNS 枚舉以及使用 Shodan 等工具查找面向互聯網的設備。
- 武器化: 攻擊者創建惡意有效負載以傳遞給目標。
- 傳輸: 如何將武器化有效載荷傳輸到目標。 常見的媒介包括魚叉式網絡釣魚電子郵件或偷渡式下載。
- 利用: 武器化有效負載被觸發,利用目標系統中的漏洞。
- **安裝:攻擊者在受害者的計算機上安裝惡意軟件或遠程訪問木馬(RAT)**以建立立足點。
- 命令與控制 (C2): 安裝的惡意軟件“呼叫”到攻擊者控制的 C2 服務器。 這將創建一個持久通道。
- 目標行動: 攻擊者實現其最終目標,例如數據洩露或部署勒索軟件。
第 8 章:深入探討常見的利用向量
8.1 超越基礎的 Web 應用程序漏洞
8.2 人的因素:社會工程
- 黑客的觀點: 人類往往是最薄弱的環節。 社會工程是操縱人們採取行動或洩露機密信息的藝術。
- 網絡釣魚: 發送看似來自合法來源的欺詐性電子郵件,以誘騙受害者洩露敏感信息或部署惡意軟件。 魚叉式網絡釣魚是一種針對特定個人或組織的高度針對性的網絡釣魚形式[34]。
- 藉口: 編造一個場景(藉口)以獲得受害者的信任。
- 防御者的觀點: 針對社會工程的防禦是多層次的:
- 技術控制: 掃描惡意鏈接和附件的電子郵件網關。
- 用戶培訓: 最關鍵的防禦。 定期進行安全意識培訓。
- 流程: 敏感操作需要多人批准。
第 9 章:後開發 - 靠土地為生
一旦攻擊者有了初步立足點,他們的工作才剛剛開始。 下一階段是擴大他們的訪問範圍並在不被發現的情況下實現他們的目標,這一過程在 MITRE ATT&CK 等框架中進行了詳細介紹[35]。
- 橫向移動: 從受感染的主機移動到同一網絡內的其他主機的過程。
- 黑客的觀點: 在 Windows Active Directory 環境中,這是一個定義明確的過程。 攻擊者將從第一台機器的內存中轉儲憑證(使用 Mimikatz 等工具)[36]),尋找域管理員帳戶。 他們可能會使用諸如傳遞哈希之類的技術,他們可以使用用戶的密碼哈希向其他計算機進行身份驗證,而無需明文密碼。
- 持久性: 在網絡中建立長期存在。 攻擊者將創建機制來確保即使初始漏洞已修補或受感染的計算機重新啟動,他們也可以重新獲得訪問權限。
- 靠地生活 (LotL): 逃避檢測的關鍵技術。 攻擊者不會使用自己定制的惡意軟件,而是使用受害者係統上已有的合法工具。 例如,使用 PowerShell 進行腳本編寫或 PsExec 進行遠程命令執行[37]。
- 防御者的觀點: 檢測 LotL 攻擊非常困難。 這就是端點檢測和響應 (EDR) 解決方案至關重要的地方。 EDR 使用行為分析來標記可疑活動,例如 Word 文檔生成 PowerShell 進程,然後與可疑 IP 地址建立網絡連接。
第四部分:建造者的責任 - 設計安全
安全不能是事後才想到的。 構建安全系統的最有效方法是將安全性集成到軟件開發生命週期的每個階段。
第 10 章:安全軟件開發生命週期 (SSLDLC)
SSDLC,通常稱為**“左移”**,旨在將安全實踐移至開發時間線的較早位置(向左)[38]。
- 需求階段: 安全需求應與功能需求一起定義。
- 設計階段: 這是威脅建模(第 5 章)發生的地方。
- 實施(編碼)階段:
- 開發人員的觀點: 這涉及遵循安全編碼最佳實踐以避免常見漏洞。
- 靜態應用程序安全測試 (SAST): SAST 工具分析應用程序的源代碼而不執行它,尋找潛在的安全缺陷[39]。
- 測試階段:
- 動態應用程序安全測試 (DAST): DAST 工具是“黑盒”測試器,可探測正在運行的應用程序是否存在漏洞。
- 滲透測試: 道德黑客嘗試主動利用漏洞的手動或半自動過程。
- 部署和維護階段: 這涉及保護生產環境、持續監控以及製定修補漏洞的計劃。
第 11 章:深入應用程序安全 (AppSec)
11.1 身份驗證和授權詳細信息
11.2 開發者密碼學:基本規則
11.3 供應鏈安全:新領域
第 12 章:保護現代云原生堆棧
12.1 容器安全
- 安全基礎鏡像: 從最小的、可信的基礎鏡像開始(例如,
distroless或者alpine) 減少攻擊面[47]。 - 不要以 root 身份運行: 默認情況下,容器以 root 身份運行
root用戶。 使用USERDockerfile 中的指令以非特權用戶身份運行應用程序。 - 圖像掃描: 將 Trivy 或 Clair 等工具集成到 CI/CD 管道中,以在將容器圖像推送到註冊表之前掃描容器圖像是否存在已知漏洞。
12.2 Kubernetes 安全性
Kubernetes 是一個功能強大但複雜的系統,具有很大的攻擊面。
- 基於角色的訪問控制 (RBAC): 使用 RBAC 為集群內的用戶和服務帳戶強制執行最小權限原則[48]。
- 網絡策略: 默認情況下,集群中的所有 Pod 都可以與所有其他 Pod 通信。 你必須實施
NetworkPolicy基於“默認拒絕”立場來限制通信的資源。 - 秘密管理: 不要將秘密以純文本形式存儲在 ConfigMap 中。 使用內置的 Kubernetes Secrets 對象,但為了獲得更高的安全性,請與 HashiCorp Vault 等外部機密管理器集成[49]。
- Pod 安全標準: 使用 Pod 安全標準來防止 pod 以危險配置運行,例如以 root 身份運行或訪問主機網絡[50]。
12.3 基礎設施即代碼 (IaC) 安全性
- 開發人員的觀點: 像 Terraform 這樣的 IaC 工具允許您在代碼中定義您的基礎設施。 在部署之前可以掃描此代碼是否存在錯誤配置。
- IaC 靜態分析: 在 CI/CD 管道中使用 Checkov 或 tfsec 等工具來掃描 Terraform 代碼中的常見安全問題,例如創建可公開訪問的 S3 存儲桶或允許從整個互聯網進行 SSH 的安全組(
0.0.0.0/0)[51]。
結論:學科綜合
這本三卷本的旅程帶我們從後端開發的基礎知識到分佈式系統的複雜性,最後到安全架構的包羅萬象的學科。 最終的教訓是,這些並不是獨立的領域。 不了解網絡和安全性的軟件工程師將構建脆弱且易受攻擊的應用程序。 不了解網絡上運行的應用程序的網絡工程師無法有效保護網絡。 不懂開發和運維的安全專業人員無法提供有效的指導。 真正意義上的現代系統工程師必須是一位博學者。 他們必須能夠在每個抽象層推理系統,從網絡數據包到應用程序邏輯,從防火牆規則到容器配置。 他們必須同時像建設者、防守者和破壞者一樣思考。 安全性不是一種產品或功能;而是一種功能。 它是一個精心設計的系統的特性。 面對不斷變化的威脅形勢,這是一個持續的設計、防禦和適應過程。 這項工作中詳述的有原則的、整體的方法不僅僅是一種方法論,它是構建我們的數字世界所依賴的有彈性和值得信賴的系統的基本要求。
參考文獻
- 雲耀。 (日期不詳)。 *什麼是 OSI 模型? * 檢索自 https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/ 2.克雷布斯,B.(2012)。 來自微小、無聲網絡竊聽器的日益增長的威脅。 克雷布斯談安全。 檢索自 https://krebsonsecurity.com/2012/03/the-growing-threat-from-tiny-silent-network-taps/ 3.思科。 (日期不詳)。 *什麼是 802.1X? * 檢索自 https://www.cisco.com/c/en/us/products/security/what-is-802-1x.html 4.微軟。 (2021)。 地址解析協議。 微軟學習。 檢索自 https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/network-subsystem/address-resolution-protocol
- 開放式安全計劃。 (日期不詳)。 地址解析協議欺騙。 檢索自 https://owasp.org/www-community/attacks/ARP_Spoofing 6、無敵。 (日期不詳)。 MAC 洪水。 檢索自 https://www.imperva.com/learn/application-security/mac-flooding/ 7.思科。 (日期不詳)。 VLAN 跳躍攻擊。 檢索自 https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4500/12-2/15-02SG/configuration/guide/config/dhcp.html#wp1102555 8.極客們的極客們。 (2023)。 計算機網絡中的端口安全。 檢索自 https://www.geeksforgeeks.org/port-security-in-computer-networks/
- 雲耀。 (日期不詳)。 *什麼是互聯網協議? * 檢索自 https://www.cloudflare.com/learning/network-layer/internet-protocol/
- 雲耀。 (日期不詳)。 Smurf DDoS 攻擊。 檢索自 https://www.cloudflare.com/learning/ddos/smurf-ddos-attack/
- 雲耀。 (日期不詳)。 *什麼是 BGP 劫持? * 摘自 https://www.cloudflare.com/learning/security/glossary/bgp-hijacking/ 12.互聯網工程任務組。 (2000)。 RFC 2827:網絡入口過濾:擊敗採用 IP 源地址欺騙的拒絕服務攻擊。 檢索自 https://datatracker.ietf.org/doc/html/rfc2827 13.互聯網工程任務組。 (1981)。 RFC 793:傳輸控制協議。 檢索自 https://datatracker.ietf.org/doc/html/rfc793
- 雲耀。 (日期不詳)。 SYN 洪水攻擊。 檢索自 https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/ 15.Nmap。 (日期不詳)。 官方 Nmap 項目網站。 檢索自 https://nmap.org/
- 維基百科。 (日期不詳)。 SYN cookie。 檢索自 https://en.wikipedia.org/wiki/SYN_cookies 17.SANS 研究所。 (2016)。 實施網絡分段。 檢索自 https://www.sans.org/white-papers/37232/
- 互聯網工程任務組。 (2003)。 RFC 3069:用於高效地址分配的 VLAN 聚合。 檢索自 https://datatracker.ietf.org/doc/html/rfc3069 19.帕洛阿爾托網絡。 (日期不詳)。 *什麼是 DMZ? * 檢索自 https://www.paloaltonetworks.com/cyberpedia/what-is-a-dmz 20.美國國家標準技術研究所。 (2020)。 SP 800-207:零信任架構。 檢索自 https://csrc.nist.gov/publications/detail/sp/800-207/final
- 庫伯內特斯。 (日期不詳)。 網絡政策。 檢索自 https://kubernetes.io/docs/concepts/services-networking/network-policies/ 22.帕洛阿爾托網絡。 (日期不詳)。 *什麼是下一代防火牆 (NGFW)? * 檢索自 https://www.paloaltonetworks.com/cyberpedia/what-is-a-next-generation-firewall-ngfw
- OWASP。 (日期不詳)。 OWASP 前 10 名。 檢索自 https://owasp.org/www-project-top-ten/ 24.OWASP。 (日期不詳)。 WAF 規避技術。 檢索自 https://owasp.org/www-community/attacks/WAF_Evasion_Techniques 25.SANS 研究所。 (2001)。 了解入侵檢測系統。 檢索自 https://www.sans.org/white-papers/27/
- 國家安全局(NSA)。 (2021)。 縱深防禦。 檢索自 https://www.nsa.gov/portals/75/documents/what-we-do/cybersecurity/professional-resources/csg-defense-in-depth-20210225.pdf
- OWASP。 (日期不詳)。 威脅建模。 檢索自 https://owasp.org/www-community/Threat_Modeling
- 微軟。 (2022)。 STRIDE 威脅模型。 微軟學習。 檢索自 https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats
- 斯普蘭克。 (日期不詳)。 *什麼是 SIEM? *。 檢索自 https://www.splunk.com/en_us/data-insider/what-is-siem.html 30.美國國家標準技術研究所。 (2012)。 SP 800-61 Rev. 2:計算機安全事件處理指南。 檢索自 https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final 31.洛克希德·馬丁公司。 (日期不詳)。 網絡殺傷鏈。 檢索自 https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html 32.OWASP。 (日期不詳)。 服務器端請求偽造。 檢索自 https://owasp.org/www-community/attacks/Server_Side_Request_Forgery 33.OWASP。 (日期不詳)。 A08:2021 – 軟件和數據完整性故障(與不安全反序列化相關)。 檢索自 https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/
- CISA。 (日期不詳)。 避免社會工程和網絡釣魚攻擊。 檢索自 https://www.cisa.gov/uscert/ncas/tips/ST04-014
- 米特雷。 (日期不詳)。 ATT&CK 框架。 檢索自 https://attack.mitre.org/
- Depy, B.(日期不詳)。 咪咪卡茲。 GitHub。 檢索自 https://github.com/gentilkiwi/mimikatz
- 微軟。 (2022)。 靠土地為生。 微軟安全博客。 檢索自 https://www.microsoft.com/en-us/security/blog/2022/05/26/living-off-the-land-a-technical-and-strategic-overview-of-lolbins/ 38.OWASP。 (日期不詳)。 左移。 檢索自 https://owasp.org/www-community/Shift_Left
- OWASP。 (日期不詳)。 靜態應用程序安全測試(SAST)。 檢索自 https://owasp.org/www-community/Static_Application_Security_Testing_(SAST) 40.國家標準技術研究所。 (2017)。 SP 800-63B:數字身份指南:身份驗證和生命週期管理。 檢索自 https://pages.nist.gov/800-63-3/sp800-63b.html 41.OWASP。 (日期不詳)。 A01:2021 – 訪問控制損壞(與 IDOR 相關)。 檢索自 https://owasp.org/Top10/A01_2021-Broken_Access_Control/
- 谷歌。 (日期不詳)。 Tink 密碼庫。 檢索自 https://developers.google.com/tink
- Argon2 密碼哈希函數。 (日期不詳)。 Argon2 官方網站。 檢索自 https://www.password-hashing.net/ 44.AWS。 (日期不詳)。 *什麼是密鑰管理服務? * 檢索自 https://aws.amazon.com/kms/what-is-kms/
- CISA。 (日期不詳)。 Apache Log4j 漏洞指南。 檢索自 https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance 46.NTIA。 (日期不詳)。 軟件物料清單 (SBOM)。 檢索自 https://www.ntia.gov/SBOM
- 谷歌云平台。 (日期不詳)。 無發行版 Docker 鏡像。 GitHub。 檢索自 https://github.com/GoogleCloudPlatform/distroless
- 庫伯內特斯。 (日期不詳)。 使用 RBAC 授權。 檢索自 https://kubernetes.io/docs/reference/access-authn-authz/rbac/
- HashiCorp。 (日期不詳)。 金庫。 檢索自 https://www.vaultproject.io/
- 庫伯內特斯。 (日期不詳)。 Pod 安全標準。 檢索自 https://kubernetes.io/docs/concepts/security/pod-security-standards/ 51.橋接人員。 (日期不詳)。 契科夫。 檢索自 https://www.checkov.io/