跳轉到

二、檢測環境準備

這章在講什麼:Agent 裝好之後,還要準備什麼,檢測任務才跑得起來。

想像您派了一位檢測員出差到各個機房。有些工具他自己帶了,到現場就能開工;有些工具太重帶不動,得請對方那邊先裝好;還有些設備是對方本來就有的,他只是去借來用。檢測工具也是這樣分三種——本章逐一說明哪個工具屬於哪一種、貴單位各要準備什麼。

什麼時候看:裝機前就要看,而且可以跟第三章(安裝)同時進行——這兩件事互不阻擋,通常也不是同一個人負責。但沒準備完的部分,對應的檢測任務會執行失敗,請不要略過。


2.0 先講一個共通事實

所有檢測都是由 Agent 這台機器發動的——Agent 會定期向平台領工作,領到就開始執行。三種工具的差別只在引擎本體放在哪裡

  • 有些引擎我們包在 Agent 裡了,Agent 直接連出去掃 → 被檢測的機器什麼都不用裝。
  • 有些引擎必須裝在被檢測的機器上,Agent 登入進去執行 → 每一台被檢測的機器都要裝。
  • 有些是貴單位本來就有的服務,Agent 只是去對接 → 我們不提供引擎。

底下就照這個分類,逐類說明您要做什麼。

2.1 速記表(一張表看完)

檢測工具 引擎裝在哪台機器 貴單位要準備什麼
CINC Auditor(檢查主機的設定是否合規) Agent 這台(我們包在出貨包內) 只要提供被檢測機器的登入帳號
GCB(政府組態基準檢查) Agent 這台(與上者同一顆引擎,只是換一套檢查基準) 同上
OpenSCAP(Linux 主機設定檢測) 被檢測的那台機器 每台被檢測的機器裝一個套件+提供帳號
Nmap(探測網路上開了哪些埠) 執行主機(建議就用 Agent 這台) 該台裝一個套件+提供帳號;被掃的目標什麼都不用裝
SonarQube(原始碼分析) 貴單位自己既有的服務 提供服務網址與存取權杖
OpenVAS(弱點掃描) 貴單位自己既有的服務 提供服務位址與帳號密碼
ZAP(網站弱點掃描) 貴單位自己既有的服務 提供服務位址與 API 金鑰

埠(port) 是主機上的「門牌號碼」,同一台機器靠埠號區分不同的服務。存取權杖(token) 是一串代替帳號密碼用的字串,可以隨時作廢、也可以限定權限範圍。

以下逐類說明。


2.2 A 類:引擎在 Agent 這台——貴單位零準備

結論:CINC Auditor 與 GCB 這兩項,被檢測的機器完全不用安裝任何東西。

這兩項的檢測引擎已經包在出貨包內,跟著 Agent 一起裝好了。兩者用的是同一顆引擎,差別只在套用哪一套檢查基準(GCB 專指政府組態基準 TWGCB)。

運作方式是:Agent 從自己這台連出去登入被檢測的機器、把設定讀回來、在 Agent 這端判定合不合規。所以:

  • 被檢測的機器不需要安裝任何掃描程式。
  • 貴單位唯一要給的是被檢測機器的登入帳號
  • Linux 機器 → SSH(Linux 主機的遠端登入方式)帳號
  • Windows 機器 → WinRM(Windows 主機的遠端管理通道)帳號(需要本機管理員權限,並且要先啟用 WinRM 服務)

授權說明:本功能使用的是 Apache 2.0 授權的自由版本,已隨 Agent 提供,貴單位不需另外購買或安裝任何授權


2.3 B 類:引擎在被檢測的機器上——每一台都要裝

結論:要用 OpenSCAP 檢測的每一台主機,都要先裝套件並建一組帳號。

OpenSCAP 的引擎必須在被檢測的機器本機執行(它是純命令列工具、沒有遠端介面),Agent 是用 SSH 登入進去下指令。所以準備工作要在每一台要被 OpenSCAP 檢測的主機上做一次。

要裝什麼

這一步在做什麼:在被檢測的機器上安裝 OpenSCAP 掃描程式、檢查基準內容,以及 SSH 服務。

Ubuntu / Debian

sudo apt update
sudo apt install -y openscap-scanner ssg-base ssg-debderived openssh-server

RHEL / CentOS / Rocky Linux / AlmaLinux

sudo dnf install -y openscap-scanner scap-security-guide openssh-server

成功長什麼樣:套件安裝完成,沒有出現找不到套件的錯誤。

這些都是發行版官方套件庫內的標準套件。封閉網路(連不到網際網路)的環境走貴單位的內部鏡像站即可——這兩個套件幾乎所有鏡像站都有。

還要建一組稽核帳號

稽核帳號指的是專門給檢測工具用的登入帳號,跟人員平常用的帳號分開。

這一段在做什麼:建一個叫 audit-scan 的專用帳號、把平台的公鑰放進去讓它可以免密碼登入,最後限定這個帳號只能免密碼執行 oscap 這一支指令。

公鑰/私鑰是成對的兩把鑰匙:公鑰可以公開,放在要登入的那台機器上;私鑰自己收好,用來證明身分。只有配得上的那把私鑰才登得進來。

sudo useradd -m -s /bin/bash audit-scan
sudo mkdir -p /home/audit-scan/.ssh
echo '<貼上平台檢測工具設定頁使用的 SSH 公鑰>' | sudo tee /home/audit-scan/.ssh/authorized_keys
sudo chown -R audit-scan:audit-scan /home/audit-scan/.ssh
sudo chmod 700 /home/audit-scan/.ssh
sudo chmod 600 /home/audit-scan/.ssh/authorized_keys
# 只允許免密執行 oscap 這一支指令,不給完整 root
echo 'audit-scan ALL=(root) NOPASSWD: /usr/bin/oscap' | sudo tee /etc/sudoers.d/audit-scan

成功長什麼樣:每一行都沒有報錯,/home/audit-scan/.ssh/authorized_keys 裡有一行公鑰內容。

準備完成之後,可以在平台的「檢測工具管理」頁按測試連線驗證。它會分四段檢查——連得到這台機器嗎 → 帳號密碼或金鑰對嗎 → oscap 裝了嗎 → 檢查基準內容齊備嗎——哪一段沒過會明確標示出來,不用自己猜。


2.4 C 類:選一台機器當「探測發射台」

結論:Nmap 要裝在「發動掃描的那台」,不是「被掃的那些」。

Nmap 的情況跟其他工具都不一樣,最容易搞混。請先分清楚兩個角色:

角色 這是什麼 要準備什麼
執行主機 Agent 登入進去、實際跑 nmap 的那台機器 安裝 nmap、建稽核帳號、開放 SSH
掃描目標 被探測的位址或網段 完全不需要準備——不裝程式、不給帳號

預設建議:執行主機就用 Agent 這台

多數情況下,直接把 nmap 裝在 Agent 這台機器上最省事——任務參數的「執行主機」填 Agent 這台的位址就好。

這一步在做什麼:在執行主機上安裝 nmap(依發行版擇一)。

sudo apt install -y nmap      # Debian / Ubuntu
sudo dnf install -y nmap      # RHEL 系

成功長什麼樣:安裝完成,之後執行 nmap --version 會印出版本。

同樣要為它建一組 SSH 稽核帳號(做法同 2.3)。

什麼時候需要另外一台

當貴單位要驗證「從某個特定網段看過去,防火牆規則是不是如預期」時,就必須從那個網段裡的機器發動掃描。這時候再指定一台位於該網段的主機當執行主機,在那台裝 nmap 即可。

執行主機擺在哪,會直接影響掃描結果。 從一台根本看不到掃描目標的機器發動掃描,結果會是「什麼都沒開」——那不是真實狀況,而是誤導。

授權說明:nmap 的授權條款不允許隨商業軟體一同散布,因此出貨包內不含 nmap,改為呼叫貴單位自行安裝的副本。貴單位在自己的機器上安裝 nmap 完全合法。


2.5 D 類:貴單位自己的服務——只對接,不提供引擎

這三種工具,貴單位本來就有自己架好的服務,Agent 只是去對接。您要準備的就是「怎麼連上去」的資訊:

工具 貴單位要提供 補充說明
SonarQube 貴單位 SonarQube 伺服器的網址 + 存取權杖 分析程式由我們隨 Agent 提供,分析動作在 Agent 這台跑,結果推回貴單位的 SonarQube
OpenVAS 自架服務的連線位址 + 帳號密碼 Agent 透過該服務的管理介面下達掃描
ZAP 自架服務的 API 位址 + API 金鑰 同上

🔴 位址一定要填「Agent 連得到」的位址,不能填 localhost——localhost 指的是 Agent 自己那台,不是貴單位那台服務主機。這是最常見的設定錯誤。


2.6 稽核帳號怎麼建才安全

前面各節都提到「建一組稽核帳號」。這一節說明怎麼建比較安全。直接給 root(Linux 的最高權限帳號)是最省事的做法,但我們不建議。

① 開專用帳號,不要用 root

建一個只做檢測用途的帳號(例如 audit-scan),好處有兩個:

  • 稽核紀錄上看得出來「這次登入是檢測工具做的」,跟人為操作分得開。
  • 出事的時候可以只停用這一組,不影響其他管理作業。

② 用 sudoers 白名單,不要給完整 root

有部分檢查項目確實需要讀取只有 root 讀得到的檔案。正確做法是用 sudoers 白名單——限定這個帳號只能免密碼執行哪幾支指令,而不是把帳號整個加進 wheelsudo 群組。

這一行在做什麼:只放行 oscap 這一支指令,其他一律不放行。

# 只放行 oscap 這一支
echo 'audit-scan ALL=(root) NOPASSWD: /usr/bin/oscap' | sudo tee /etc/sudoers.d/audit-scan

成功長什麼樣:畫面印出剛剛寫入的那行內容。

完全不開提權會怎樣:需要權限才讀得到的檢查項目會回報成「無法判定」,不會回報成「通過」——系統不會把讀不到誤判成合格。若貴單位政策不允許免密碼提權,可以接受這個結果。

③ 優先使用 SSH 金鑰,而不是密碼

密碼與金鑰兩種方式系統都支援,但建議用金鑰:這樣平台上就不必保存一組可以互動登入的密碼,而且可以在被檢測機器那端用 authorized_keys 的選項進一步限制只准哪些來源位址連進來。

④ 這些帳號密碼是怎麼保管的(供資安審查參考)

貴單位填進平台的稽核帳號憑證,處理方式如下:

環節 做法
平台端存放 加密存放,不以明文落庫
什麼時候才解密 派工的當下才解密,隨那一次任務下發給 Agent,不預先散布
傳輸過程 走雙向憑證驗證的加密通道(兩邊互相驗明身分才放行)
Agent 這端 用完即丟,不會留在硬碟上——私鑰寫進記憶體檔案系統(/dev/shm)、權限 600、任務一結束就刪除
被檢測機器那端 掃描完成立刻中斷連線,該台機器上不留任何常駐程式

2.7 準備完成的自我檢查

這一步在做什麼:確認這一章的準備工作全部到位。

到平台的「系統管理 → 檢測工具管理」頁,對每一個要用的工具按測試連線

成功長什麼樣:全部工具都通過,代表這一章的準備工作完成了。

工具卡片的選單裡另外有一項「部署前提說明」,會依貴單位選用的工具,顯示可以直接複製的準備指令,內容與本章一致。