創提部落格
希望我們能與您分享和探討成長中的點點滴滴
安全最佳實踐+Klocwork
分享到
在部署任何基於web的應用程式時,必須遵循安全最佳實踐。這裡,我們概述了設置Klocwork(一個靜態程式碼分析和應用安全靜態測試的工具(SAST))的步驟,以實現安全操作。這個過程通常是部署在本地的,並且是在防火牆之後。我們也應該採取額外的預防措施,以防在互聯網上暴露任何東西。
本文將包含如下幾個部分:
• Klocwork安全最佳實踐概述
• 步驟1: SSL/TSL
• 步驟2: 開放埠和路由
• 步驟3: 身份驗證
Klocwork安全最佳實踐概述
Klocwork門戶(Portal)接收分析結果,以準備關於合規性、趨勢和問題詳情的宏觀報告。您可以登錄查看報告,分類問題以及配置分析設置。此外,Klocwork門戶可以部署在本地或雲端。它們可以在物理機上、虛擬機器(VM)中或容器內運行。
Klocwork提供了“開箱即用”的身份驗證和安全設置,旨在使其在初始環境中易於設置和熟悉,但在真實的生產環境時,因為門戶伺服器要處理重要的資料,則往往需要更改其配置。
需要配置的關鍵區域有:
1. 移到HTTPS (SSL/TSL設置)
2. 開放選擇的埠和路由
3. 身份驗證和SSO
下面顯示的是Klocwork從安全的角度來看的元件組成。為簡單起見,這裡所用的都是默認的埠號——它們都是可配置的。
使用一個或兩個虛擬機器(VM)的典型Klocwork服務架構
Klocwork的伺服器端元件可以部署在同一個虛擬機器(VM)上,或者許可服務(license service)可以運行在單獨的虛擬機器(VM)上。三個埠必須開放:
1. 許可服務共用(27000)
2. 許可服務Klocwork後臺進程(33133)
3. Klocwork門戶(443)
在配置用戶端工具時,需要使用到許可服務共用埠和Klocwork門戶埠。
SSL/TSL
加密Klocwork門戶與Klocwork用戶端工具或流覽器之間的通信有兩種基本技術:
1. 使用反向代理
2. 為SSL/TSL配置Klocwork門戶
使用反向代理通常是IT部門的選擇,因為他們熟悉自己的安裝和配置,並且運行得很好。如果您希望將Klocwork門戶部署在Linux主機的443埠上,則需要使用反向代理。
配置Klocwork本身作為SSL/TSL (https)服務運行可以通過三個簡單的步驟完成:
1. 為運行Klocwork門戶的主機,向您的公司簽名授權機構請求已簽名的SSL/TSL證書。在等待時,您可以使用由kwauthconfig生成的未簽章憑證。
2. 運行kwauthconfig,為https連接配置門戶。
3. 通知您的用戶使用https並通過“use secure connection”和新的埠號更新一下其IDE的Klocwork外掛程式配置。
請求已簽名的SSL/TSL證書
下麵是openssl命令生成金鑰對和證書簽名請求文件(.csr)的示例。只有portal.csr檔會被發送到簽名授權機構。
您收到的證書檔的格式可能略有不同。它可能包含主機的證書、任何中間證書和簽名授權機構的根證書。如果它只包含主機證書,您將需要手動下載中間證書和根證書。所需要做的是將私人金鑰與所有這些證書組合在一起,以形成金鑰庫。
下面是收到p7b檔時openssl命令的一個示例。
密碼和名稱是Klocwork門戶使用的預設值,不過您也可以使用其他名稱。但是,您將需要在projects_root/tomcat/conf/server.template檔中手動編輯tomcat伺服器配置資訊。最後一行命令將輸出金鑰庫的內容以進行驗證。
輸出檔myhost_keystore.pfx是一個pkcs12金鑰庫,必須複製到projects_root/tomcat/conf/.keystore,以便Klocwork門戶能夠找到。
用於LDAP伺服器的SSL/TSL連接
當SSL/TSL連接用於被推薦的LDAP伺服器時(i.e. ldaps://…),伺服器的證書必須保存在門戶的信任存儲區(
儘管可以手動編輯projects_root/config/admin.conf和projects_root/tomcat/conf/server.template檔,但更容易的選擇通常是使用圖形化使用者介面(gui)工具kwauthconfig。
如果您的Klocwork門戶服務託管在Linux OS上,而沒有圖形化介面,那麼您將需要使用X11伺服器。kwauthconfig包含在Klocwork伺服器安裝包中。
kwauthconfig還可以用於配置門戶的身份驗證和電子郵件通知。下麵的示例只關注SSL/TSL配置。
需要特別注意:
• 在更改配置之前,停止Klocwork門戶服務。
• 如果金鑰庫可用的話,在開始kwauthconfig之前複製您的金鑰庫(e.g. myhost_keystore.pfx)到projects_root/tomcat/conf/.keystore。如果沒有.keystore 檔的話,那麼kwauthconfig將創建一個未簽名的證書。
Kwauthconfig將打開最後一個projects_root配置資料或提示輸入projects_root目錄。
kwauthconfig不需要其他資料就可以完成SSL/TSL設置。點擊“Next”,直到您可以點擊“Finish”,然後點擊“OK”退出kwauthconfig。
如果有需要,您可以在啟動服務之前更改Klocwork門戶埠。
例如,從默認的8080埠切換到443埠,使用如下命令:
通知Klocwork用戶
最後一步是通知您的Klocwork用戶,這樣他們可以使用新的https url更新他們的腳本,並在IDE Klocwork外掛程式選項(Options)/預設(Preferences)中勾選“Use Secure Connection”核取方塊。
開放埠和路由
安裝Klocwork需要:
• 用於入站連接的三個埠
• 一個內部資料庫埠
• 訪問三個遠端伺服器以進行身份驗證的可選路由(e.g. Active Directory/LDAP),從而發送電子郵件通知,並將資料匯出到缺陷跟蹤系統。
用戶端工具和許可/門戶服務之間的任何防火牆都必須為TCP/IP連接開放27000、33133和8080埠。除此之外沒有其他埠用於入站連接。
這些埠號可以使用kwservice命令進行配置,對於許可埠,可以將它們編輯到許可檔中。
例如:
一個典型的重新分配方法是將用於SSL/TSL的埠443分配到Klocwork門戶。如果您的門戶運行在Windows OS上,這很容易做到:只需使用kwservice命令即可。如果您的門戶運行在Linux OS下,您將需要使用埠443,或者,對於埠443,需要使用反向代理,因為埠443是一個保留埠,Klocwork門戶不能作為根用戶運行。
或者,Klocwork門戶需要出站連接到身份驗證伺服器、用於電子郵件通知的SMTP伺服器和缺陷跟蹤伺服器(e.g. JIRA)。必須配置這些外部伺服器以接受來自Klocwork門戶的連接。
資料庫埠(預設為3306埠)一定不能被外部應用程式訪問。
身份驗證
Klocwork“開箱即用”的預設身份驗證配置是“Authentication Disabled”。這非常適合初始設置和測試,但不適用於生產環境。因為任何人每次登錄都會自動創建一個帳號。
相反,您應該使用下一個更高級別的身份驗證配置“Basic”。在這種模式下,只有擁有Klocwork門戶用戶帳號的用戶才能登錄。
第一個帳號是用戶在安裝伺服器包時使用用戶名自動創建的。要啟用Basic身份驗證,您必須訪問門戶並點擊Users頁面上的Authentication Disabled連結。
在“Authentication Disabled”和“Basic”模式下,Klocwork會維護使用者和組資料庫。用戶在項目或所有項目上被分配角色,這限制了他們登錄時可以看到什麼和做什麼。
為了提高身份驗證的安全性,可以使用外部使用者資料庫。Klocwork同時支援NIS和LDAP伺服器。Klocwork還可以為Windows上的Active Directory使用者配置單點登錄。配置Klocwork門戶以使用外部使用者資料庫是通過kwauthconfig完成的。
當檢測到Active Directory伺服器時,Kwauthconfig會提供一個預設配置。這作為初始配置運行是不錯的,但是如果外部資料庫中的使用者數量很大,那麼最好優化使用者和組過濾程式,以減少回應時間。
關鍵的kwauthconfig對話方塊是:
1. 訪問伺服器的設置,包括登錄伺服器的用戶帳號。理想情況下,使用具有長期密碼的服務帳號。cacerts的預設密碼是“changeit”。
2. 自訂provider和filter。在這個示例中,使用者過濾程式被設置為“(&(objectCategory=person)(sAMAccountName=*)(memberOf=CN=KlocworkUsers,OU=Groups,DC=klocwork,DC=com))”.
這要求用戶是Klocwork Users Active Directory Security Group的成員。最好與IT部門協作從而優化provider和filter設置,以最大限度地減少LDAP伺服器和Klocwork門戶上的工作負載。
3. 指定要檢索哪些屬性。
在這個示例中,可以使用使用者的cn或sAMAccountName屬性值進行登錄。最左邊的User Attribute用於顯示使用者的名稱,並在Users門戶頁面上搜索使用者。如果您有多個具有相同cn值的用戶,最好先指定一個唯一的屬性。
4. 點擊“Finish”完成配置設置。如果要測試伺服器連接,請點擊“Test Connection”。
有兩個Advanced Settings需要手動編輯設定檔projects_root/config/admin.conf。它們可以添加到任何地方。
Klocwork安全最佳實踐回顧
Klocwork的安全最佳實踐很簡單,如下所示:
1. 配置SSL/TSL
2. 開放指定的埠和路由
3. 啟用身份驗證
實施這些配置步驟之後,您將實現:
1. 控制訪問點
2. 在門戶和用戶端工具之間傳遞時,加密所有的Klocwork資料和使用者憑證
3. 控制誰可以訪問門戶上的資料
如果您想親自瞭解Klocwork SAST如何説明您確保軟體安全,立即註冊申請免費試用吧。