全部產品
Search
文件中心

Virtual Private Cloud:使用流量鏡像對VPC流量進行安全審查

更新時間:Oct 31, 2024

雲上網路安全,往往是使用者將核心業務部署上雲時優先考慮的因素。您可使用VPC的流量鏡像功能對雲上網路流量的安全性進行即時檢測與分析。

情境樣本

某公司將核心業務部署上雲,需要保證雲上業務的正常啟動並執行同時,高效且無侵入地監控阿里雲ECS執行個體的網路流量,以識別並記錄潛在的安全威脅,進行安全審查。

在本情境下,使用流量鏡像,將ECS的網路流量複製到另一台部署著網路威脅檢測系統的ECS上,通過配置安全規則,即時檢測鏡像網路流量。

  • 流量鏡像:從目標ECS執行個體的彈性網卡ENI複製網路流量,並將流量轉寄給指定的ENI,適用於內容檢查、威脅監控和問題排查等情境。

  • 流量審查:使用Suricata作為報文接收和異常檢測的核心組件,因其支援VXLAN解鎖裝、提供入侵檢測(IDS)、入侵防禦(IPS)和網路安全監控功能,能有效識別惡意流量模式,易與現有的Elasticsearch等可視化分析系統整合。使用者也可以自行選擇雲市場中其他安全廠商的分析工具。

  • Tlog與儲存:通過Filebeat採集Suricata日誌,通過Elasticsearch進行索引儲存,在Kibana進行可視化查詢、分析和展示。

  • 索引檔案儲存體:配置Elasticsearch將經過索引標記的流量記錄備份至阿里雲OSS,確保資料的安全儲存與長期可訪問性。

前提條件

  • 已建立兩個VPC,每個VPC內建立1台ECS執行個體。

    • 您可以結合業務需求,為ECS1綁定EIP,通過EIP提供公網服務。

    • ECS2作為鏡像目的,綁定EIP訪問公網,以部署Suricata。

    • 本文樣本中伺服器作業系統統一為Alibaba Cloud Linux 3.2104 LTS 64位

    • 確保ECS2的安全性群組入方向放開4789連接埠,允許ECS1封裝的UDP協議報文訪問ECS2的4789連接埠,以接收鏡像流量。

  • 初次使用流量鏡像功能時,根據提示開通流量鏡像功能。

  • 鏡像源和鏡像目的不屬於同一個VPC時,需要確保VPC間互連。本文樣本通過VPC對等串連連通兩個VPC。

  • 已建立Elasticsearch執行個體並開啟Kibana公網訪問將本機公網IP地址添加到白名單

操作步驟

步驟一:配置Suricata

您需要在ECS2伺服器中部署Suricata,接收網路流量並進行安全審查。

  1. 登入ECS2伺服器,執行如下命令,安裝Suricata。

    #安裝依賴
    sudo dnf install -y gcc libpcap-devel pcre-devel libyaml-devel file-devel \
                         zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel
    
    #安裝suricata
    sudo dnf install suricata -y
    
    #確保suricata自動啟動
    sudo systemctl enable suricata
    sudo systemctl start suricata
  2. 配置Suricata。

    Suricata的配置存放在/etc/suricata/suricata.yaml,使用預設配置即可。

  3. 更新安全規則。

    執行suricata-update更新規則檔案,預設儲存在/var/lib/suricata/rules/suricata.rules

  4. 執行sudo service suricata restart重啟Suricata。

步驟二:配置流量鏡像

  1. 建立篩選條件。

    1. 登入專用網路管理主控台在左側導覽列,選擇營運與監控 > 流量鏡像 > 篩選條件

    2. 篩選條件頁面,單擊建立篩選條件規則配置地區的出方向規則頁簽下,單擊添加規則,按照預設配置添加規則,採集全部流量。

  2. 建立並啟動鏡像會話。

    1. 在左側導覽列,選擇營運與監控 > 流量鏡像 > 鏡像會話

    2. 鏡像會話頁面,單擊建立鏡像會話基礎配置保持預設,關聯篩選條件選擇上一步建立的規則,鏡像源選擇ECS1的彈性網卡,鏡像目的選擇ECS2的彈性網卡。

    3. 鏡像會話頁面,找到目標鏡像會話,在操作列單擊啟動。

  3. 流量鏡像配置完成且Suricata正常運行時,會在/var/log/suricata/目錄下產生一系列記錄檔。

    /var/log/suricata/
    ├── certs
    ├── core
    ├── eve.json		    ##以JSON格式產生的所有捕獲的flow,alert,stats等日誌,以及例如HTTP等協議的應用日誌
    ├── fast.log		    ##檢測分析產生的alert日誌
    ├── files
    ├── stats.log		    ##捕獲,處理資料包數量的詳細統計
    ├── suricata.log	    ##服務運行時的詳細日誌
    └── suricata-start.log	    ##服務啟動時的詳細日誌

步驟三:採集並儲存Suricata日誌

您可以使用Filebeat將Suricata日誌資料轉送至Elasticsearch進行索引儲存,並通過Kibana進行可視化展示與分析。

  1. 登入ECS2伺服器,執行如下命令,安裝Filebeat。

    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-x86_64.rpm
    sudo rpm -vi filebeat-7.10.0-x86_64.rpm
  2. 修改Suricata模組配置,指定待採集的Suricata流量記錄檔。

    1. 執行sudo filebeat modules enable mysql命令,啟用Suricata模組。

    2. 執行sudo vim /etc/filebeat/modules.d/suricata.yml命令,按照以下內容修改Suricata模組配置。

      - module: suricata
        # 配置採集的流量記錄檔
        eve:
          enabled: true
          var.paths: ["/var/log/suricata/eve.json"]
    3. 按下Esc鍵,輸入:wq並斷行符號,以儲存並關閉檔案。

  3. 執行sudo vim /etc/filebeat/filebeat.yml配置filebeat.yml檔案,設定串連資訊。

    1. 修改Filebeat modules配置。

      filebeat.config.modules:
        # 全域載入
        path: /etc/filebeat/modules.d/suricata.yml
      
        # 允許動態地重新載入和應用新的設定檔或設定
        reload.enabled: true
      
        # 在設定的時間周期內系統自動檢查指定路徑下的檔案是否有任何更改
        reload.period: 1s
    2. 修改Kibana配置。

      setup.kibana:
        host: "https://es-cn-8l**********2r7ln-kibana.cn-hangzhou.elasticsearch.aliyuncs.com:5601"

      host:Kibana的訪問地址,可在Kibana配置頁面擷取,格式為<Kibana公網地址>:5601

    3. 修改Elasticsearch output配置。

      output.elasticsearch:
        # 配置儲存日誌的Elasticsearch執行個體
        hosts: ["http://es-cn-8ly**********r7ln.elasticsearch.aliyuncs.com:9200"]
        username: "elastic"
        password: "<your_password>"

      host:Elasticsearch的訪問地址,可在執行個體的基本資料頁面擷取,格式為<執行個體的私網或公網地址>:9200

      username:Elasticsearch執行個體的訪問使用者名稱,預設為elastic。

      password:建立執行個體時設定的密碼,若遺忘,可選擇重設執行個體訪問密碼

    4. 按下Esc鍵,輸入:wq並斷行符號,以儲存並關閉檔案。

    5. 執行以下命令,將Dashboard等資訊上傳到Elasticsearch和Kibana中,並啟用Filebeat服務。

      sudo filebeat setup
      sudo service filebeat start

步驟四:可視化分析VPC流量

  1. 登入目標Elasticsearch執行個體的Kibana控制台。在左側導覽列,單擊Kibana > Discover更改索引模式filebeat

  2. 您可以添加alert篩選條件,在頁面右上方選取查詢時間,查看對應時間段內的有潛在威脅的VPC流量。

    image

步驟五:警示驗證

  1. 登入ECS1,執行curl http://testmynids.org/uid/index.html命令,模仿ID命令的輸出,以觸發警報。

    mirror.png

    說明

    Suricata規則集中包含如下規則,當資料包的內容具有字串值uid=0|28|root|29|並且流量被分類為未知流量時,將丟棄資料包並產生警報。

    alert ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2010_09_23;)
  2. 在Kibana頁面,添加GPL篩選條件,即可查看匹配到Suricata IDS特徵規則“GPL ATTACK_RESPONSE id check returned root”的警示事件。mirror1.png

後續步驟:資料備份

您可以將Elasticsearch索引儲存的資料備份,確保資料安全儲存與長期可訪問性。Elasticsearch預設開啟資料自動備份,您可以將自動備份快照儲存至阿里雲OSS倉庫

常見問題

  1. 修改Filebeat配置後如何生效?

    修改設定檔後,需要重啟服務以應用新的設定。您需要執行以下命令重啟Filebeat。

     sudo systemctl restart filebeat
  2. 配置流量鏡像後,如何驗證流量已被正確轉寄至鏡像目的?

    登入鏡像目的ECS2,執行如下命令,查看是否可以擷取到報文的資料包。

    tcpdump -i eth0 udp port 4789 -nne

    vni 1為鏡像會話的標識,表示鏡像目的通過鏡像會話,成功擷取到資料包。

    mirror-test.png