本文延續前篇效能校正的經驗談,上篇文章探討了關於應用程式本身可以最佳化的部分,包含了應用程式以及框架兩個部分。本篇文章將繼續剩下最佳化步驟的探討。
Speculative Execution Mitigations
接下來探討這個最佳化步驟對於效能有顯著的提升,但是本身卻是一個非常具有爭議性的步驟,因為其涉及到整個系統的安全性問題。
如果大家對前幾年非常著名的安全性漏洞 Spectre/Meltdown 還有印象的話,本次這個最佳化要做的就是關閉這類型安全性漏洞的處理方法。
標題的名稱 Speculative Execution Migitations 主要跟這漏洞的執行概念與 Pipeline 有關,有興趣理解這兩種漏洞的可以自行研究。
作者提到,大部分情況下這類型的防護能力都應該打開,不應該關閉。不過作者認為開關與否應該是一個可以討論的空間,特別是如果已經確認某些特別情境下,關閉防護能力帶來的效能如果更好,其實也是一個可以考慮的方向。
舉例來說,假設今天你運行了基於 Linux 使用者權限控管與 namespaces 等機制來建立安全防護的多使用者系統,那這類型的防護能力就不能關閉,必須要打開來防護確保整體的 Security Boundary 是完整的。 但是如果今天透過 AWS EC2 運行一個單純的 API Server,假設整個機器不會運行任何不被信任的程式碼,同時使用 AWS Nitro Enclaves 來保護任何的機密資訊,那這種情況下是否有機會可以關閉這類型的檢查?
作者根據 AWS 對於安全性的一系列說明認為 AWS 本身針對記憶體的部分有很強烈的保護,包含使用者之間沒有辦法存取 Hyperviosr 或是彼此 instance 的 Memory。
總之針對這個議題,有很多的空間去討論是否要關閉,以下就單純針對關閉防護能力帶來的效能提升。
作者總共關閉針對四種攻擊相關的處理能力,分別是
Spectre V1 + SWAPGS
Spectre V2
Spectre V3/Meltdown
MDS/Zombieload, TSX Anynchronous Abort
與此同時也保留剩下四個,如 iTLB multihit, SRBDS 等
這種設定下,整體的運作效能再次提升了 28% 左右,從 347k req/s 提升到 446k req/s。
註: 任何安全性的問題都不要盲從亂遵循,都一定要評估判斷過
Syscall Auditing/Blocking
大部分的情況下,Linux/Docker 處理關於系統呼叫 Auditing/Blocking 兩方面所帶來的效能影響幾乎微乎其微,不過當系統每秒執行數百萬個系統呼叫時,這些額外的效能負擔則不能忽視,如果仔細觀看前述的火焰圖的話就會發線 audit/seccomp 等數量也不少。
Linux Kernel Audit 子系統提供了一個機制來收集與紀錄任何跟安全性有關的事件,譬如存取敏感的機密檔案或是呼叫系統呼叫。透過這些內容可以幫助使用者去除錯任何不被預期的行為。
Audit 子系統於 Amazon Linux2 的環境下預設是開啟,但是本身並沒有被設定會去紀錄系統呼叫的資訊。
即使 Audit 子系統沒有真的去紀錄系統呼叫的資訊,該子系統還是會對每次的系統呼叫產生一點點的額外處理,所以作者透過 auditctl -a never,task 這個方式來將整體關閉。
註: 根據 Redhat bugzilla issue #1117953, Fedora 預設是關閉這個行為的
Docker/Container 透過一連串 Linux Kernel 的機制來隔離與控管 Container 的執行權限,譬如 namespace, Linux capabilities., cgroups 以及 seccomp。
Seccomp 則是用來限制這些 Container 能夠執行的系統呼叫類型
大部分的容器化應用程式即使沒有開啟 Seccomp 都能夠順利的執行,執行 docker 的時候可以透過 --security-opt seccomp=unconfined 這些參數告訴系統運行 Container 的時候不要套用任何 seccomp 的 profile.
將這兩個機制關閉後,系統帶來的效能提升了 11%,從 446k req/s 提升到 495k req/s。
從火焰圖來看,關閉這兩個設定後,syscall_trace_enter 以及 syscall_slow_exit_work 這兩個系統呼叫也從火焰圖中消失,此外作者發現 Amazon Linux2 預設似乎沒有啟動 Apparmor 的防護,因為不論有沒有關閉效能都沒有特別影響。
Disabling iptables/netfilter
再來的最佳化則是跟網路有關,大名鼎鼎的 netfilter 子系統,其中非常著名的應用 iptables 可以提供如防火牆與 NAT 相關功能。根據前述的火焰圖可以觀察到,netfilter 的進入 function nf_hook_slow 佔據了大概 18% 的時間。
將 iptables 關閉相較於安全性來說比較沒有爭議,反而是功能面會不會有應用程式因為 iptables 關閉而不能使用。預設情況下 docker 會透過 iptables 來執行 SNAT與 DNAT(有-p的話)。
作者認為現在環境大部分都將 Firewall 的功能移到外部 Cloud 來處理,譬如 AWS Security Group 了,所以 Firewall 的需求已經減少,至於 SNAT/DNAT 這類型的處理可以讓容器與節點共享網路來處理,也就是運行的時候給予 “–network=host” 的模式來避免需要 SNAT/DNAT 的情境。
作者透過修改腳本讓開機不會去預設載入相關的 Kernel Module 來達到移除的效果,測試起來整體的效能提升了 22%,從 495k req/s 提升到 603k req/s
註: 這個議題需要想清楚是否真的不需要,否則可能很多應用都會壞掉
作者還特別測試了一下如果使用 iptables 的下一代框架 nftables 的效能,發現 nftables 的效能好非常多。載入 nftables 的kernel module 並且沒有規則的情況下,效能幾乎不被影響(iptables 則相反,沒有規則也是會影響速度)。作者認為採用 nftables 似乎是個更好的選擇,能夠有效能的提升同時也保有能力的處理。
不過 nftables 的支援相較於 iptables 來說還是比較差,不論是從 OS 本身的支援到相關第三方工具的支援都還沒有這麼完善。就作者目前的認知, Debian 10, Fedora 32 以及 RHEL 8 都已經轉換到使用 nftables 做為預設的處理機制,同時使用 iptables-nft 這一個中介層的轉換者,讓所有 user-space 的規則都會偷偷的轉換為底層的 nftables。
Ubuntu 似乎要到 20.04/20.10 的正式版本才有嘗試轉移到的動作,而 Amazon Linux 2 依然使用 iptables 來處理封包。
下篇文章會繼續從剩下的五個最佳化策略繼續介紹
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
linux防火牆 在 台灣物聯網實驗室 IOT Labs Facebook 的最佳貼文
利用晶片級安全保護工業物聯網終端
作者 : Nitin Dahad,EE Times歐洲特派記者
• 2021-01-25
我們必須重視物聯網終端裝置的安全性,因為它們是防禦網路攻擊的重要一環。無論是雲端伺服器還是邊緣感測器,最終都要節點上的終端得到了保護,才能保護整個系統——至少可以降低遭受攻擊的可能。
談到物聯網(IoT)安全時,大多數人都會提到兩件事:一是建立信任根(RoT)作為安全基礎,二是不要只關注終端裝置,而是要考慮整個生態系統和產品生命週期的安全性。
然而,我們必須重視終端裝置的安全性,因為它們是防禦網路攻擊的重要一環。無論是雲端伺服器還是邊緣感測器,最終都要節點上的終端得到了保護,才能保護整個系統——至少可以降低遭受攻擊的可能。
因此,本文特意側重於設備安全性,並同時認知必須更全面地考慮安全性:作為整個工廠或環境更廣泛的安全性框架,其中,可連網裝置在提高生產率和效率中發揮重要作用。
如工業網際網路網聯盟(Industrial Internet Consortium,IIC)的安全架構所示,終端保護有助於邊緣和雲端設備實現防禦功能(圖1)。終端可以是工業物聯網(IIoT)系統中的任何一個元素,同時具有運算和通訊功能,其自身功能可能會暴露給防火牆外的任何人。這些終端可以是邊緣裝置、通訊基礎結構、雲端伺服器或其間的任何裝置,每個終端都有不同的硬體局限,決定了可獲得的保護等級。
終端保護是透過終端中的權威身份辨識功能——通常是RoT,來實現通訊和連接的防禦。因此,安全機制和技術應根據終端的具體功能和安全要求進行應用。
虛擬機器將應用程式隔離在各自的區域中,但無論是裸機還是在其上運作的客戶作業系統,終端本身都有許多漏洞。
在這種情況下,一個常見的問題是,應透過硬體還是軟體來保護系統。大多數專家認為,從很多因素來看,硬體保護比軟體保護更可取,但主要還是因為硬體具有更高的防篡改能力,可以提供比軟體更高的信任度和安全性。
很多大型晶片供應商都提供某種硬體級安全保護,可能是可信任平台模組(TPM)或安全元件(SE)這樣的硬體安全模組,也可能是其他形式的系統單晶片(SoC)嵌入式安全功能。其主要目標是實現強大的使用者身份鑒權和驗證,以防受到攻擊,並防止對機密或敏感資訊的非法訪問。
安全元件
硬體安全解決方案的關鍵要素是安全元件,它儲存經過加密的唯一辨識碼,以實現認證保護,確保讀取安全載入憑證。例如,提供物聯網裝置的大規模註冊,確保只有授權裝置才能訪問系統或雲端服務。大多數晶片供應商提供的安全元件都是微控制器(MCU)的一部分,同時還提供某種監控和身份管理系統。
意法半導體(STMicroelectronics)的STSAFE-A110可以整合到物聯網裝置中,為本地或遠端主機提供身份驗證和安全的資料管理服務。該元件具有嵌入式安全作業系統,並採用通過「資訊技術安全評估共同準則」(Common Criteria for InformationTechnology Security Evaluation,簡稱「共同準則」、Common Criteria或CC)評估保證等級5+ (Evaluation Assurance Level 5+,EAL5+)認證的硬體,每個元件都內建唯一標識和X.509證書,以實現裝置的安全連接。這個安全元件與STM32Cube開發生態系統整合,可快速應用於需要身份驗證和安全連接的新型STM32 MCU設計。
恩智浦半導體(NXPSemiconductors)的EdgeLock SE050 Plug and Trust安全元件系列是另一款開箱即用的物聯網裝置安全元件,無需編寫安全程式碼,可提供晶片級RoT以實現端到端的安全性。該產品通過了Common Criteria EAL 6+認證,可提供更好的安全性,作為即用型解決方案,它包含完整的產品支援包,可以簡化設計。
除了提供適用於不同MCU和MPU的庫之外,恩智浦的產品支援包還提供與多種常見作業系統的整合,包括Linux、Windows、RTOS和Android。該支援包包括主要應用的樣本、大量的應用說明,以及用於i.MX和KinetisMCU的相容開發套件,以加快最終的系統整合。其產品配置支援物聯網安全應用,例如感測器資料保護、物聯網服務的安全訪問,以及物聯網裝置調試,是對現有應用的補充,如雲端服務的安全實施、裝置到裝置的身份驗證、裝置完整性保護和證明,以及裝置溯源和來源證明。
英飛凌(Infineon)的OPTIGA TPM系列產品也包含了多種安全控制器,用於保護嵌入式裝置,以及系統的完整性與真實性。OPTIGA TPM SLM 9670是一款高品質的TPM模組,它採用防篡改安全MCU,適於工業應用。作為一種即用型解決方案,它具有安全編碼韌體,滿足最新的可信賴運算組織(TCG) Family 2.0規範。其產品符合工業JEDEC JESD 47標準品質要求,並通過了Common Criteria EAL4+安全認證。
開發人員可以採用OPTIGA TPM來儲存私密金鑰,配合Sectigo身份管理解決方案,可為工廠提供完整的自動化證書頒發和管理解決方案。
瑞薩電子(Renesas Electronics)於2019年10月推出針對安全、可擴展物聯網應用的RA系列MCU。該系列產品採用開放式軟體平台,客戶能夠透過與眾多廠商合作或利用現有傳統軟體平台來開發物聯網終端。瑞薩電子將強大的RoT整合到硬體中,使其成為MCU的組成部分,安全功能的實現因此變得輕而易舉:客戶在完成設計後無需再考慮如何增加安全性。
記憶體內(In-memory)安全
隨著系統越來越依賴外部NOR快閃記憶體來保護連網系統的程式碼和資料,在記憶體中增加先進加密安全性的需求也在增長。隨著快閃記憶體移出主處理器,幾家公司提供了能夠保護快閃記憶體本身的功能(因為無法再將其嵌入到MCU中),為設計工程師提供了更大的靈活性。例如,英飛凌最近推出了Semper Secure,作為其SemperNOR快閃記憶體平台的補充。
同時,美光(Micron)的專有技術Authenta將NOR快閃記憶體與系統級硬體RoT結合。快閃記憶體本身內建的安全功能可透過晶片RoT實現先進的系統級保護,而無需添加新的硬體。它具有強大的內建加密身份,透過現場更新和始終開啟(always-on)的韌體監控,簡化了從供應鏈到裝置入網的安全裝置管理。
美光2019年10月推出了Authenta金鑰管理服務(KMS)平台,可為多種工業應用提供雲端優先部署模型。採用該平台以後,已安裝Authenta的裝置可以透過雲端服務開啟,從而降低了保護連網裝置安全性的難度和複雜度…
附圖:圖1:IIC的工業網際網路安全架構(Industrial Internet Security Framework)中確定了終端各個部分的威脅和漏洞。
(來源:IIC)
圖2:TPM透過其獨特的背書金鑰和金鑰分層結構來支援金鑰及生命週期管理。非揮發性記憶體可用於安全儲存敏感性資料,例如證書,它基於防篡改硬體,安全功能包括感測器和記憶體加密功能,以增強對機密的保護。(圖片來源:英飛凌)
資料來源:https://www.eettaiwan.com/20210125nt51-protecting-the-endpoint-in-iiot-a-snapshot-of-chip-level-security/
linux防火牆 在 iThome Security Facebook 的最讚貼文
只要使用Hyper-V進行網路連接,都可能面臨同樣資料不受VPN保護的問題,VPN業者Mullvad經通報後研判,這是微軟實作Linux訪客虛擬網路的方式所導致,其流量將繞過Windows主機防火牆,而其他VPN供應商也會有此問題
linux防火牆 在 請教..如果拿Linux機器當防火牆... - Mobile01 的推薦與評價
請教一下各位大大,如果拿一台比較高階的電腦或者是一台1U server灌成Linux server後只安裝防火牆功能來使用的話..會比一般市面上中高階的防火牆功能 ... ... <看更多>
linux防火牆 在 Linux防火牆iptables基本使用方法 - Max的程式語言筆記 的推薦與評價
iptables是Linux上常用的防火牆軟件,iptables用來過濾網路封包,正確的設定iptables 規則可以有效提升Linux 網路安全,網管人員設定開放哪些IP 與 ... ... <看更多>