在部署任何基于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://…),服務器的證書必須保存在門戶的信任存盤區(/_jvm/lib/security/cacerts)內,Klocwork安裝包括用于該任務的/_jvm/bin/keytool,例如:
運行kwauthconfig
盡管可以手動編輯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目錄,



如果將密鑰庫復制到.keystore,那么主機名、組織單元和組織欄位可以留空,只有主機名是關鍵的,它必須與托管門戶的機器的主機名相匹配,大多數安裝都不需要智能卡身份驗證,但是,如果選擇了智能卡身份驗證,則您必須提供客戶端證書的信任存盤區位置和密碼,
kwauthconfig不需要其他資料就可以完成SSL/TSL設定,點擊“Next”,直到您可以點擊“Finish”,然后點擊“OK”退出kwauthconfig,
如果有需要,您可以在啟動服務之前更改Klocwork門戶埠,
例如,從默認的8080埠切換到443埠,使用如下命令:

啟動資料庫和Klocwork服務并瀏覽https://hostname:port,
通知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如何幫助您確保軟體安全,立即注冊申請免費試用免費試用吧,
“原創內容,轉載請標明出處”
創提資訊科技(上海)有限公司轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431422.html
標籤:其他
