隨著軟體開發流程的快速迭代,安全防護已成為 DevSecOps 中不可或缺的一環。本文將探討如何整合威脅情報平臺、漏洞評估工具、監控系統與虛擬補丁技術,建立完善的安全防護體系。同時,文章也將介紹日誌收集與分析、網路流量監控等實務技巧,協助開發團隊及時發現並應對安全威脅,確保應用程式與系統的穩定執行。從威脅情報的收集與分析,到漏洞的評估與修補,再到系統的監控與告警,本文將提供一系列實用的方法和工具,幫助讀者在 DevSecOps 實踐中構建更安全的軟體開發流程。

威脅情報平臺

威脅情報平臺是指一種工具或系統,允許您收集、分析和分享威脅情報。

威脅情報平臺的關鍵功能

  1. 威脅情報收集:威脅情報平臺提供了一種方法來收集潛在和現有的網路安全威脅資訊。
  2. 威脅情報分析:威脅情報平臺提供了一種方法來分析收集到的威脅情報,以幫助組織識別和減輕潛在的安全風險。
  3. 威脅情報分享:威脅情報平臺提供了一種方法來分享威脅情報與團隊和社群。

Shodan、VirusTotal、ThreatConnect 和 MISP

Shodan、VirusTotal、ThreatConnect 和 MISP 是四個不同的威脅情報平臺,每個都有其自己的優點和缺點。

使用 Shodan

shodan scan submit --filename scan.json "port:22"

使用 VirusTotal

VirusTotal 是一個線上平臺,允許您分析檔案和 URL 以檢測潛在的威脅和惡意軟體。

使用 ThreatConnect

curl -H "Content-Type: application/json" -X POST -d '{"name": "Example Threat Intel", "description": "This is an example threat intel"}' https://api.threatconnect.com/v2/indicators

使用 MISP

MISP 是一個開源威脅情報平臺,允許您收集、儲存和分享威脅情報。

生產環境下的漏洞評估

漏洞評估是指識別和量化組織 IT 系統、應用程式和基礎設施中的安全漏洞的過程。漏洞評估的目的是為組織提供一個全面性的安全姿勢檢視,允許他們識別和優先考慮安全風險,並採取措施來減輕它們。

漏洞評估工具

漏洞評估工具通常提供了一種方法來識別和量化安全漏洞,使用掃描和分析技術來檢測弱點和組態錯誤。

漏洞評估工具的關鍵功能

  1. 漏洞掃描:漏洞評估工具提供了一種方法來掃描組織的 IT 系統、應用程式和基礎設施,以檢測弱點和組態錯誤。
  2. 漏洞分析:漏洞評估工具提供了一種方法來分析掃描結果,以幫助組織識別和優先考慮安全風險。
  3. 漏洞優先順序:漏洞評估工具提供了一種方法來優先考慮安全風險,根據其嚴重性和對組織的潛在影響。

Nessus、Qualys 和 OpenVAS

Nessus、Qualys 和 OpenVAS 是三個不同的漏洞評估工具,每個都有其自己的優點和缺點。

使用 Nessus

Nessus 是一個漏洞掃描工具,允許您識別弱點和組態錯誤在您的網路和基礎設施中。

使用 Qualys

Qualys 是一個雲端基礎的漏洞管理平臺,允許您識別弱點和組態錯誤在您的網路和基礎設施中。

使用 OpenVAS

OpenVAS 是一個開源漏洞掃描工具,允許您識別弱點和組態錯誤在您的網路和基礎設施中。

監控在 DevSecOps 中的重要性

監控是 DevSecOps 中的一個關鍵組成部分,涉及連續觀察和分析組織的 IT 系統、應用程式和基礎設施,以便及早發現潛在的安全問題、檢測和應對安全事件,並確保遵守安全策略和法規。透過監控,組織可以快速有效地識別和應對安全威脅,從而保護其資料和系統。

監控的好處

  1. 早期發現安全事件:監控使組織能夠早期發現安全事件,並立即採取行動以減輕其影響。
  2. 改善事件回應:實時監控和分析使組織能夠快速有效地應對安全事件,從而最小化潛在違規的影響。
  3. 提高合規性:監控幫助組織確保其符合安全義務,從而降低了因違反法規而導致的風險。
  4. 增強可視性:監控為組織提供了對其 IT 系統和應用程式的更大可視性,使其能夠識別潛在的安全風險並採取主動措施加以解決。

監控工具和技術

有多種監控工具和技術可供 DevSecOps 使用,包括:

  • 日誌分析工具
  • 網路監控工具
  • 安全資訊和事件管理(SIEM)解決方案

這些工具可以與其他 DevSecOps 實踐(如持續整合和持續佈署)整合,以確保安全性融入應用程式開發生命週期。

組態監控工具

以下是組態一些常見監控工具的步驟:

Prometheus

  1. 啟動 Prometheus 伺服器:./prometheus --config.file=prometheus.yml
  2. 檢查 Prometheus 伺服器狀態
  3. 使用 PromQL 查詢資料
  4. 新增 Prometheus 資料來源

Grafana

  1. 組態 Grafana 伺服器
  2. 新增 Prometheus 資料來源

Nagios

  1. 組態 Nagios 伺服器:sudo /usr/sbin/nagios3 -v /etc/nagios3/nagios.cfg
  2. 驗證 Nagios 伺服器組態

Zabbix

  1. 組態 Zabbix 伺服器:登入 Zabbix 網頁介面,導航到「組態」標籤,建立一個新主機,其主機名與被監控的伺服器相同,指定 IP 地址和 Zabbix agent 埠。
  2. 新增專案到主機以監控系統資源,如 CPU 使用率、記憶體使用率、磁碟使用率和網路介面。
  3. 組態觸發器:設定觸發器以在任何監控專案超過某個閾值時發出警示。
  4. 組態操作:建立操作以在觸發器觸發時通知相關利益相關者。

透過這些步驟,您可以組態監控工具以滿足您的 DevSecOps 需求,並確保您的組織的安全性和合規性。

Datadog 代理設定檔編輯

編輯 /etc/datadog-agent/datadog.yaml 檔案,並新增以下幾行:

Server=192.168.1.100
ServerActive=192.168.1.100
Hostname=web-server
EnableRemoteCommands=1
UnsafeUserParameters=1

系統資源監控設定

新增以下幾行,以監控系統資源:

UserParameter=cpu.usage[*],/usr/bin/mpstat 1 1 | awk '/Average:/ {print 100-$NF}'
UserParameter=memory.usage,free | awk '/Mem:/ {print $3/$2 * 100.0}'
UserParameter=disk.usage[*],df -h | awk '$1 == $1 {print int($5)}'
UserParameter=network.in[*],cat /proc/net/dev | grep $1 | awk '{print $2}'
UserParameter=network.out[*],cat /proc/net/dev | grep $1 | awk '{print $10}'

Datadog 設定

設定 Datadog 代理以收集 CPU 和記憶體 metrics:

procfs_path: /proc
cpu_acct: true
meminfo_path: /proc/meminfo

收集 CPU 和記憶體 metrics

使用以下命令收集 CPU 和記憶體 metrics:

curl -X POST -H "Content-type: application/json" -d '{
  "series": [
    {
      "metric": "system.cpu.usage",
      "points": [
        [
          "$(date +%s)",
          "$(top -bn1 | grep '%Cpu(s)' | awk '{print $2 + $4}')"
        ]
      ],
      "tags": ["environment:production"]
    }
  ]
}' https://app.datadoghq.com/api/v1/series

curl -X POST -H "Content-type: application/json" -d '{
  "series": [
    {
      "metric": "system.mem.used",
      "points": [
        [
          "$(date +%s)",
          "$(free -m | awk '/Mem:/ {print $3}')"
        ]
      ],
      "tags": ["environment:production"]
    }
  ]
}' https://app.datadoghq.com/api/v1/series

注意:這些命令假設您已經安裝了必要的工具(如 topfreeawk)。

監控系統的效能指標

在管理和維護複雜的系統時,監控效能指標是非常重要的。這些指標可以幫助我們瞭解系統的執行狀態,找出瓶頸和問題,並進行相應的最佳化和維修。

安裝 New Relic 基礎設施代理

New Relic 是一種流行的監控工具,可以幫助我們收集 CPU 和記憶體的 metrics。要在 Ubuntu 伺服器上安裝 New Relic 基礎設施代理,可以使用以下命令:

sudo apt-get install newrelic-infra
sudo systemctl start newrelic-infra

在 CentOS/RHEL 伺服器上,可以使用以下命令:

sudo yum -y install newrelic-infra
sudo systemctl start newrelic-infra

使用 New Relic API 收集 metrics

要使用 New Relic API 收集 CPU 和記憶體 metrics,可以使用以下命令:

curl -X GET \
  https://api.newrelic.com/v2/metrics \
  -H 'X-Api-Key:{API_KEY}' \
  -i \
  -d 'names[]=System/CPU/Utilization&values[]=average_percentage' \
  -d 'names[]=System/Memory/Used/Bytes&values[]=average_value' \
  -d 'from=2022-05-01T00:00:00+00:00&to=2022-05-10T00:00:00+00:00'

安裝 CloudWatch 代理

CloudWatch 是 AWS 提供的一種監控工具,可以幫助我們收集 metrics。要在 Linux 上安裝 CloudWatch 代理,可以使用以下命令:

sudo rpm -i amazon-cloudwatch-agent.rpm

組態 CloudWatch 代理

要組態 CloudWatch 代理,可以建立一個組態檔案 /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json,內容如下:

{
  "metrics": {
    "namespace": "CWAgent",
    "metricInterval": 60,
    "append_dimensions": {
      "InstanceId": "${aws:InstanceId}"
    },
    "metrics_collected": {
      "cpu": {
        "measurement": [
          "cpu_usage_idle",
          "cpu_usage_iowait",
          "cpu_usage_user",
          "cpu_usage_system"
        ]
      }
    }
  }
}

內容解密:

上述組態檔案定義了 CloudWatch 代理的行為,包括 metrics 的名稱空間、間隔時間和要收集的 metrics。其中,cpu 部分定義了要收集的 CPU metrics,包括空閒時間、I/O 等待時間、使用者時間和系統時間。

圖表翻譯:

以下是 CloudWatch 代理組態檔案的 Mermaid 圖表:

  graph LR
    A[CloudWatch 代理] --> B[組態檔案]
    B --> C[metrics]
    C --> D[cpu]
    D --> E[cpu_usage_idle]
    D --> F[cpu_usage_iowait]
    D --> G[cpu_usage_user]
    D --> H[cpu_usage_system]

圖表翻譯:

上述圖表展示了 CloudWatch 代理的組態檔案結構,包括 metrics 的名稱空間、間隔時間和要收集的 metrics。其中,cpu 部分展示了要收集的 CPU metrics,包括空閒時間、I/O 等待時間、使用者時間和系統時間。

監控雲端虛擬機器的 CPU 和記憶體使用率

雲端計算平臺提供了多種工具和服務來監控虛擬機器的效能,包括 CPU 和記憶體使用率。以下是三個主要雲端平臺(AWS、Azure 和 Google Cloud)的監控方法:

AWS

  1. 安裝 CloudWatch Agent:在 EC2 例項上安裝 CloudWatch Agent,以收集 CPU 和記憶體使用率的指標。
  2. 組態 CloudWatch Agent:使用 CloudWatch Agent Configuration Wizard 來組態代理程式,收集 CPU 和記憶體使用率的指標。
  3. 啟動 CloudWatch Agent:啟動 CloudWatch Agent 代理程式,以開始收集指標。
  4. 檢視指標:在 CloudWatch 主控臺中檢視 CPU 和記憶體使用率的指標,包括圖表和警示。

範例組態檔案:

{
  "agent": {
    "run_as_user": "root"
  },
  "logs": {
    "enabled": false
  },
  "metrics": {
    "enabled": true,
    "cpu": {
      "measurement": ["cpu_usage"],
      "metrics_collection_interval": 60
    },
    "memory": {
      "measurement": ["mem_used_percent"],
      "metrics_collection_interval": 60
    }
  }
}

Azure

  1. 安裝 Azure Monitor 代理程式:在虛擬機器上安裝 Azure Monitor 代理程式,以收集 CPU 和記憶體使用率的指標。
  2. 組態 Azure Monitor 代理程式:使用 Azure Monitor 代理程式組態檔案來收集 CPU 和記憶體使用率的指標。
  3. 重新啟動 Azure Monitor 代理程式:重新啟動 Azure Monitor 代理程式,以套用新的組態。
  4. 檢視指標:在 Azure Monitor 主控臺中檢視 CPU 和記憶體使用率的指標,包括圖表和警示。

範例 Azure CLI 命令:

az monitor metrics list --resource {resource_id} --metric-names "\Processor(_Total)\% Processor Time" --interval 1m

Google Cloud

  1. 安裝 Stackdriver 代理程式:在 GCE 例項上安裝 Stackdriver 代理程式,以收集 CPU 和記憶體使用率的指標。
  2. 驗證 Stackdriver 代理程式:驗證 Stackdriver 代理程式是否正在執行。
  3. 檢視指標:在 Google Cloud Console 中檢視 CPU 和記憶體使用率的指標,包括圖表和警示。

範例命令:

gcloud compute instances add-metadata --instance {instance_name} --metadata stackdriver-monitoring=true

以上是三個主要雲端平臺監控虛擬機器 CPU 和記憶體使用率的方法。每個平臺都提供了不同的工具和服務來收集和檢視指標,因此需要根據自己的需求選擇合適的平臺和工具。

虛擬補丁(Virtual Patching)在 DevSecOps 中的應用

虛擬補丁是一種安全技術,用於在 DevSecOps 中提供臨時保護,以對抗軟體應用程式或系統中已知的漏洞。它涉及使用安全策略、規則或過濾器,適用於網路流量、系統日誌或應用程式程式碼,以防止已知漏洞被利用。

虛擬補丁的優點

  1. 降低漏洞被利用的風險:透過虛擬補丁,組織可以降低已知漏洞被利用的風險。
  2. 改善安全態勢:虛擬補丁允許組織快速輕松地保護其系統免受已知漏洞的影響,從而改善整體安全態勢。
  3. 減少停機時間:虛擬補丁可以快速輕松地實施,而無需停機或中斷業務營運。
  4. 提高合規性:虛擬補丁可以幫助組織滿足相關法規要求,關於及時修復已知漏洞。

實施虛擬補丁

虛擬補丁可以透過多種技術實施,包括入侵防禦系統(IPS)、網頁應用防火牆(WAF)和根據網路的安全裝置。它還可以透過自動化安全策略或指令碼實施,這些策略或指令碼適用於系統和應用程式。

日誌收集

日誌收集是 DevSecOps 中的一個重要方面。以下是使用 Splunk 進行日誌收集的步驟:

  1. 組態資料輸入:組態資料輸入以從各種來源接收資料,例如網路裝置、伺服器和應用程式。組態以下資料輸入:
  • Syslog
  • Windows 事件日誌

監控代理安裝

要安裝監控代理,請執行以下命令:

sudo bash install-monitoring-agent.sh

然後,檢查代理狀態:

sudo service stackdriver-agent status

Netdata

Netdata 是一個強大的監控工具,可以用於收集系統和應用程式的指標。以下是使用 Netdata 的步驟:

  1. 檢視 CPU 使用率:在 Netdata 網頁介面中,前往「Dashboard」部分並選擇「system.cpu」圖表以檢視 CPU 使用率指標。
  2. 檢視記憶體使用率:選擇「system.ram」圖表以檢視記憶體使用率指標。
  3. 組態異常檢測:在 Netdata 網頁介面中,前往「Anomaly Detection」部分並選擇「Add alarm」。
  4. 組態預測分析:在 Netdata 網頁介面中,前往「Predict」部分並選擇「Add algorithm」。

內容解密:

以上步驟介紹瞭如何使用虛擬補丁、日誌收集和監控代理等技術來提高 DevSecOps 的安全性和效率。透過這些技術,組織可以快速輕松地保護其系統免受已知漏洞的影響,同時改善整體安全態勢和合規性。

圖表翻譯:

下圖示範瞭如何使用 Netdata 來檢視 CPU 使用率和記憶體使用率指標:

  flowchart TD
    A[Netdata 網頁介面] --> B[Dashboard]
    B --> C[system.cpu 圖表]
    C --> D[CPU 使用率指標]
    B --> E[system.ram 圖表]
    E --> F[記憶體使用率指標]

這個圖表顯示瞭如何使用 Netdata 來檢視 CPU 使用率和記憶體使用率指標,從而幫助組織快速輕松地保護其系統免受已知漏洞的影響。

網路流量監控與安全事件檢測

網路流量監控是網路安全的一個重要方面,涉及監控和分析網路流量以檢測和防止安全威脅。使用 Splunk Stream 載入模組,可以收集和分析網路流量資料,以實作實時的安全事件檢測和警示。

建立索引

為了儲存和管理收集到的資料,需要建立索引。索引可以根據資料型別建立,例如安全事件、網路流量或應用日誌。建立索引的步驟如下:

  1. 登入 Splunk 平臺
  2. 點選 “設定” 按鈕
  3. 選擇 “索引” 選項
  4. 點選 “新建索引” 按鈕
  5. 輸入索引名稱和描述
  6. 設定索引的儲存位置和大小

建立儀錶板

儀錶板是用於視覺化資料的工具,可以顯示實時事件和警示、趨勢圖表和安全報告等。建立儀錶板的步驟如下:

  1. 登入 Splunk 平臺
  2. 點選 “儀錶板” 按鈕
  3. 選擇 “新建儀錶板” 選項
  4. 輸入儀錶板名稱和描述
  5. 新增要顯示的視覺化元件,例如圖表、表格等

建立樣本規則

樣本規則是用於檢測安全事件的規則,可以根據特定的條件觸發警示。建立樣本規則的步驟如下:

  1. 登入 Splunk 平臺
  2. 點選 “規則” 按鈕
  3. 選擇 “新建規則” 選項
  4. 輸入規則名稱和描述
  5. 設定規則的條件和觸發動作

例如,建立一個規則來檢測網站登入失敗嘗試,可以使用以下搜尋查詢:

sourcetype=apache_access combined=*login* status=401 | stats count by user, ip

這個規則會檢測網站登入失敗嘗試,並統計失敗次數。

虛擬補丁

虛擬補丁是一種安全機制,透過實施臨時的軟體解決方案來保護應用程式和系統免受已知漏洞的攻擊。虛擬補丁可以透過 Web 應用防火牆或入侵檢測/防禦系統來實施,從而阻止或警告惡意流量嘗試利用漏洞。

虛擬補丁可以是一種快速和暫時的解決方案,用於保護系統免受已知漏洞的攻擊,特別是那些可能被積極針對的漏洞。它也可以為組織提供時間來測試和實施永久補丁,而不會將系統暴露在攻擊之下。

RASP 規則

RASP(Runtime Application Self-Protection)規則是用於檢測和防止應用程式攻擊的規則。以下是一個示例 RASP 規則,用於緩解 SQL 注入漏洞:

import javax.servlet.http.HttpServletRequest;
import com.rasp.scanner.RASP;
import com.rasp.scanner.ELExpression;

public class SQLInjectionRule {
    public static void checkSQLInjection(HttpServletRequest request) {
        // 取得輸入引數
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        // 檢查 SQL 注入攻擊
        if (RASP.isSQLInjection(username)) {
            // 記錄攻擊嘗試
            RASP.log("SQL 注入攻擊檢測到");
            // 阻止請求
            RASP.blockRequest("SQL 注入攻擊檢測到");
        }
        
        // 檢查 SQL 注入攻擊
        if (RASP.isSQLInjection(password)) {
            // 記錄攻擊嘗試
            RASP.log("SQL 注入攻擊檢測到");
            // 阻止請求
            RASP.blockRequest("SQL 注入攻擊檢測到");
        }
    }
}

這個規則會檢查 HTTP 請求中的使用者名稱和密碼引數是否存在 SQL 注入攻擊,如果檢測到攻擊,則記錄攻擊嘗試並阻止請求。

OWASP 頂級 10 漏洞預防規則

OWASP 頂級 10 漏洞預防規則是一套用於預防常見 Web 應用漏洞的規則。以下是一些示例規則:

  • SQL 注入:^[^']*$/i
  • 命令注入:^[^']*$/i
  • LDAP 注入:^[^']*$/i
  • XPath 注入:^[^']*$/i
  • OS 命令注入:^[^']*$/i
  • 表示式語言注入:^[^']*$/i

這些規則可以用於檢測和防止常見的 Web 應用漏洞,例如 SQL 注入、命令注入等。

網路安全威脅與防禦策略

在當今的網路世界中,安全威脅層出不窮,對於網路應用程式和系統的安全性構成了嚴重挑戰。瞭解常見的安全威脅和採取有效的防禦策略是保護網路資產和使用者資料的關鍵。

1. 身分驗證與授權

  • 弱密碼管理:實施強密碼策略,包括複雜度要求和密碼過期機制,來防止未經授權的存取。
  • 雙因素認證(2FA)或多因素認證(MFA):強化登入過程,要求使用者提供額外的驗證因素,如簡訊驗證碼、生物特徵識別等,以防止單一因素認證的弱點。

2. 暴力攻擊防禦

  • 帳戶鎖定政策:設定登入嘗試次數限制,當使用者連續輸入錯誤密碼超過一定次數時,暫時或永久鎖定帳戶,以防止暴力攻擊。

3. 敏感資料保護

  • 資料加密:對於傳輸中的資料(在傳輸中)和儲存中的資料(在休息中)進行加密,確保即使資料被截獲,也無法被讀取。
  • 跨站請求偽造(CSRF)保護:為所有表單加入CSRF令牌,以確保使用者的請求是真實且合法的,防止攻擊者冒充使用者進行非法操作。

網路安全已成為企業數位轉型過程中不可迴避的關鍵環節。本文涵蓋了從威脅情報平臺的應用到漏洞評估、監控體系搭建以及虛擬補丁的佈署等一系列核心技術,展現了構建完整安全防禦體系的技術堆疊。分析各工具的實務操作步驟及組態細節,可以發現,安全防禦並非單點突破,而是需要多層次、多維度的技術整合。然而,目前許多企業在安全人才和資源投入方面仍存在不足,導致安全防禦體系建設滯後。玄貓認為,企業應將安全視為持續投資而非一次性投入,並積極匯入自動化安全工具和流程,才能在日益複雜的網路威脅環境中保持競爭力。未來,AI驅動的安全分析和預測將成為主流趨勢,值得企業及早佈局。