Nessus 是一種安全掃描器,用於偵測硬體和軟體中的安全漏洞。
本文將說明如何:
安裝 Nessus
執行 Nessus 掃描
匯出 Nessus 掃描結果
1. 背景
Tenable Nessus 是授權的第三方工具。如要進一步瞭解 Nessus,請參閱下列資源:
2. 事前準備
工作站
- 您必須使用啟動程式 (te-bf) 或可存取工作站的同等運算子,才能代管 Nessus。
需要存取權
請按照 IAM-R0005 執行:
- 取得每個目標叢集的叢集管理員角色。
請按照 IAM-R0004 進行操作:
- 為每個目標叢集產生 KUBECONFIG。
所需工具
- kubectl
- ssh-keygen
軟體
- 您必須安裝與工作站 OS 相容的 Nessus 安裝程式。從 https://www.tenable.com/downloads/nessus 取得安裝程式,然後轉移至 Nessus 工作站,再繼續操作。
授權
- 您必須提供單一 Tenable Nessus 授權 (Pro、Export 或 Manager) 啟用代碼。如果沒有授權啟用代碼,請與團隊 POC 聯絡,取得第三方授權 / 軟體物料清單。
3. 安裝 Nessus
本節說明如何在 Nessus 工作站上安裝 Nessus。
如果已安裝並啟用 Nessus,請略過本節。
如果 Nessus 無法再使用 (例如安裝在已不存在的電腦上),則必須重設用於啟動先前 Nessus 執行個體的授權,才能繼續操作。
匯出 Nessus 安裝程式的路徑:
NESSUS_INSTALLER=
使用 dpkg 安裝 Nessus:
dpkg -i ${NESSUS_INSTALLER:?}
重新啟動 Nessus,並確認正在執行中:
sudo systemctl restart nessusd sudo systemctl status nessusd
取得挑戰碼,離線註冊 Nessus:
/opt/nessus/sbin/nessuscli fetch --challenge
在連上網際網路的電腦上,前往 Nessus 離線啟用頁面 https://plugins.nessus.org/v2/offline.php。
將 Nessus 離線啟用代碼和 Nessus 授權啟用代碼複製到 Nessus 離線啟用頁面,然後按下「提交」
Nessus 離線啟用頁面現在應會顯示 Nessus 外掛程式網址和產品授權。後續步驟會用到這兩項值。
請將 Nessus 外掛程式網址儲存在安全位置,以供日後參考,因為本指南稍後會用到。
將 Nessus 離線啟用頁面的授權儲存到 Nessus 工作站,並命名為
/opt/nessus/etc/nessus/nessus.license
。將授權套用至 Nessus:
/opt/nessus/sbin/nessuscli fetch --register-offline /opt/nessus/etc/nessus/nessus.license
建立管理員使用者:
按照
nessuscli adduser
的提示建立admin
使用者。這些憑證之後會用於執行掃描及下載結果,因此請妥善保存。/opt/nessus/sbin/nessuscli adduser
Nessus 執行期間,使用者介面可透過通訊埠 8834 存取。使用所選瀏覽器前往
https://<nessus-workstation-ip>:8834
,並以admin
使用者身分登入。
4. 更新 Nessus 外掛程式
執行掃描前,請務必下載最新版 Nessus 外掛程式並套用至 Nessus,確保掃描結果符合需求且為最新版本。您必須直接向 Tenable 取得 Nessus 外掛程式,方法是使用從 Nessus 離線啟用頁面取得的 Nessus 外掛程式網址。
取得外掛程式套件。
方法 1:使用所選瀏覽器前往 Nessus 外掛程式網址,系統會自動下載套件。
方法 2:使用 wget
wget "${PLUGIN_URL:?}" -O plugin-updates.tar.gz
下載套件組合將外掛程式套件轉移到 Nessus 工作站,並匯出檔案位置:
NESSUS_PLUGIN_BUNDLE=
將外掛程式更新套用至 Nessus:
/opt/nessus/sbin/nessuscli update ${NESSUS_PLUGIN_BUNDLE:?}
外掛程式更新完成編譯大約需要 30 分鐘。在此期間,您可以按照後續步驟建立掃描作業,但請先暫緩執行掃描,直到外掛程式編譯完成為止。
5. 設定 Nessus 掃描
您必須為目標類別和憑證的每個不重複組合建立掃描。本節將逐步說明如何透過 Nessus 使用者介面建立所需掃描。
繼續操作前,請先確認您可以在 https://<nessus-workstation-ip>:8834
存取 Nessus UI,並以 admin
使用者身分登入。
5.1. 收集網路 CIDR
建立 Nessus 掃描作業,掃描環境的外部和內部網路 CIDR。
收集目標設備網路的外部和內部網路 CIDR (理想情況下,這個網路不會與其他鄰近環境重疊)。
IP 範圍可能包含開機程式 IP 或其他不應掃描的 IP。針對不應掃描的每個 IP (例如啟動程序 IP),輸入下列指令:
IGNORE_IP= IGNORE_IP_REASON= echo "# ${IGNORE_IP_REASON:?}" >> /opt/nessus/etc/nessus/nessusd.rules echo "reject ${IGNORE_IP:?}" >> /opt/nessus/etc/nessus/nessusd.rules
5.2. 主機探索掃描
網路探索掃描未經過驗證,目的是掃描網路中的目標和不安全的網路曝光。
這項掃描作業會掃描上一節中識別的外部和內部網路 CIDR。
在 Nessus UI 中:
- 建立名為
host-discovery
的主機探索掃描 - 指定主機:外部和內部 CIDR
- 儲存並啟動
5.3. 節點 OS 掃描
節點掃描會經過驗證,目的是檢查重要作業系統是否有已知安全漏洞、不安全的設定和法規遵循問題。
請完成本節的機構基礎架構叢集:
匯出叢集 kubeconfig:
KUBECONFIG=
列出所有叢集節點:
kubectl --kubeconfig=${KUBECONFIG:?} get nodes -o wide
請注意顯示每個節點資料 IP 的資料欄。請先透過 ping 確認可從 Nessus 工作站存取資料 IP,再繼續操作。
ping <node_data_ip>
在 Nessus UI 中,開始建立名為
nodeos-compliance-<cluster_name>
的「進階掃描」在進階掃描中,請在主機欄位填入步驟 1 中所有節點資料 IP 的逗號分隔清單
請按照「附錄:新增叢集節點 SSH 憑證」一文的說明新增掃描憑證。
前往「法規遵循」分頁,然後選擇「DISA STIG Ubuntu 20.04 v1」的最新可用修訂版本。直接儲存法規遵循設定,不要變更預設值。
儲存掃描設定並啟動掃描。
5.4. 休息片刻
掃描作業需要 30 分鐘以上才能完成。這時不妨休息一下或進行其他活動,等這些作業完成後再繼續。
6. 匯出掃描結果
本節將逐步說明如何匯出掃描結果。
針對每次掃描作業,下載結果:
選取已完成的掃描作業,即可查看結果。
按一下右上角的「檢舉」按鈕。
選擇「報表格式」CSV,然後選取所有欄。
按一下「產生報表」。稍待片刻,報表就會下載完成。
(選用) 如果也需要 HTML 報表,請改為選擇「報表格式」HTML,以及您認為合理的「報表範本」。建議使用的報表範本為「Detailed Vulnerabilities By Plugin with Compliance/Remediation」(依外掛程式列出詳細的安全性弱點,並提供法規遵循/修復資訊)。
7. 後續步驟
產生的 CSV / HTML 報表必須按照環境安全程序處理。如有疑問,請與 SecOps 或法規遵循 POC 聯絡,進一步瞭解正確做法。
8. 附錄
8.1. 新增叢集節點 SSH 認證
本節將逐步說明如何取得 Nessus 的 SSH 憑證,以便掃描目標叢集的節點。
匯出叢集 kubeconfig:
KUBECONFIG=
列出叢集安全殼層金鑰
kubectl --kubeconfig=${KUBECONFIG} get -A secret | grep ssh-key
找出與目標叢集相應的「ssh-key」密鑰命名空間,然後匯出該命名空間:
CLUSTER_NS=
建立 Nessus ssh 目錄:
NESSUS_FOLDER=nessus mkdir -p ${NESSUS_FOLDER}/.ssh
將安全殼層金鑰組匯出至 Nessus 安全殼層目錄:
kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa kubectl --kubeconfig=${KUBECONFIG:?} get -n ${CLUSTER_NS:?} secret/ssh-key -o jsonpath='{ .data.id_rsa-cert\.pub }' | base64 -d > ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
修正金鑰組的權限:
# fix permissions chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa chmod 600 ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa-cert.pub
使用空白通關密語將私密金鑰轉換為 pem 格式:
ssh-keygen -p -m PEM -f ${NESSUS_FOLDER}/.ssh/nessus-${CLUSTER_NS}-id_rsa
成功輸出結果應如下所示:
Key has comment 'root@te-bd-bootstrapper' Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.
將
nessus-<cluster>-id_rsa
和nessus-<cluster>-id_rsa-cert.pub
傳輸至用於存取 Nessus UI 的工作站。在 Nessus 使用者介面中,前往掃描設定的「憑證」分頁。
建立新的 SSH 憑證,並選擇「憑證」做為驗證方式。
為憑證 SSH 驗證方法提供下列設定:
使用者名稱:「root」
使用者憑證:新增檔案
nessus-<cluster>-id_rsa-cert.pub
私密金鑰:新增檔案
nessus-<cluster>-id_rsa
儲存 SSH 設定。
返回參照這個部分的頁面。