介紹
本系列中的前幾節教程引導您如何安裝和配置Suricata。它們還解釋了如何使用Filebeat將來自Suricata服務器的警報發送到Elastic Stack服務器,以與其內置的安全信息和事件管理(SIEM)功能一起使用。
在本系列的最後一節教程中,您將創建自定義的Kibana規則,並在Kibana的SIEM儀表板中生成警報。一旦您設置了規則並了解在哪裡以及如何使用Kibana過濾Suricata的日誌,您將探索如何使用Kibana的時間軸分析工具創建和管理案例。
通過本教程的結尾,您將擁有一個SIEM系統,可以用來跟蹤和調查您網絡中所有服務器上的安全事件。
先決條件
如果您一直在跟随本教程系列,您应该已经拥有一台至少配备4GB RAM和2个CPU的服务器,并配置了一个非root用户。在本指南中,您可以通过按照我们针对Ubuntu 20.04、Debian 11或Rocky Linux 8之一的初始服务器设置指南来设置这个。
您还需要在您的服务器上安装并运行Suricata。如果您需要在服务器上安装Suricata,可以根据您的操作系统使用以下教程之一进行安装:
- Ubuntu 20.04:如何在Ubuntu 20.04上安装Suricata
- Debian 11:如何在Debian 11上安装Suricata
- Rocky Linux 8:如何在Rocky Linux 8上安装Suricata
您还需要一个运行Elastic Stack并配置了Filebeat,以便Filebeat可以将Suricata服务器的日志发送到Elasticsearch的服务器。如果您需要创建一个Elastic Stack服务器,请使用以下列表中与您的操作系统匹配的教程之一:
- Ubuntu 20.04: 如何在Ubuntu 20.04上使用Suricata和Elastic Stack构建安全信息和事件管理(SIEM)系统
- Debian 11: 如何在Debian 11上使用Suricata和Elastic Stack构建安全信息和事件管理(SIEM)系统
- Rocky Linux 8: 如何在Rocky Linux 8上使用Suricata和Elastic Stack构建安全信息和事件管理(SIEM)系统
确保您可以登录到Elasticsearch服务器的Kibana,并且各种Suricata警报和事件仪表板中有事件。
一旦您将所有先决条件准备好,请打开到您的Kibana服务器的SSH隧道,并使用您在上一个教程中生成的凭据在浏览器中登录到Kibana。
步骤1 — 在Elasticsearch中启用API密钥
在Kibana中创建规则、警报和时间轴之前,您需要启用一个xpack
安全模块设置。
使用nano
或您喜欢的编辑器打开您的/etc/elasticsearch/elasticsearch.yml
文件。
在文件末尾添加以下突出显示的行:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
编辑完成后保存并关闭文件。如果您使用的是nano
,您可以按CTRL+X
,然后按Y
和ENTER
确认。
现在重新启动Elasticsearch以使新设置生效。
您现在可以在Kibana中配置规则、检查警报,并创建时间轴和案例。
第二步 — 将规则添加到Kibana
要使用Kibana的SIEM功能与Suricata事件数据,您需要创建规则以生成有关传入事件的警报。访问Kibana安全应用程序页面中的规则仪表板来创建或导入规则。
对于本教程,我们将使用以下签名来检测流向服务器的流量在不匹配的端口上(SSH、HTTP和TLS流量):
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
如果您使用自己的签名或来自规则集,请确保您可以生成警报,并且可以在Kibana的默认Suricata仪表板中访问相应的事件。
現在訪問 Kibana 安全應用程式的規則頁面 http://localhost:5601/app/security/rules/。點擊頁面右上角的 創建新規則 按鈕。
確保選中了 自訂查詢 規則類型卡片。滾動至 自訂查詢 輸入欄並將以下內容粘貼進去:
rule.id: "1000000" or rule.id :"1000001"
確保你的 rule.id
值與 Suricata 的攻擊 sid
值匹配,以便提醒您關於攻擊事件。
將 查詢快速預覽 下拉菜單更改為 上個月,然後點擊 預覽結果。假設您的 Suricata 日誌中有匹配的事件,頁面將即時更新,顯示上個月的警報圖表。您的頁面應該與以下截圖相似:
點擊 繼續 以繼續添加 規則名稱 欄位,每添加一個規則都需要這個名稱。在 規則名稱 欄位中添加一個名稱。在這個示例中,我們將使用 Suricata 規則的消息描述 SSH TRAFFIC on non-SSH port
。同樣為該規則添加一個描述。在這個示例中,我們將使用 檢查非標準端口上的 SSH 連接嘗試
。
您還可以展開 高級設置 部分並添加有關該規則的詳細信息。例如,您可以添加有關如何處理該規則生成的警報的說明,或者鏈接到安全研究人員有關特定攻擊類型的文章。
當您完成添加規則名稱、描述和可選的額外字段後,請點擊繼續以繼續進行創建規則的第三步。
將下一個定時規則部分的設置保持默認值,然後點擊繼續。
最後,在規則操作步驟上,點擊創建並啟用規則。
您將被重定向到一個顯示規則詳細信息的新頁面:
注意:首次警報數據填充可能需要幾分鐘。這是因為規則的默認計劃是每5分鐘運行一次。
如果您想要關於其他Suricata規則的警報,請重復上述步驟,將簽名的sid
替換到Kibana的自定義查詢rule.id
字段中。
一旦您有了一個或多個規則,您就可以繼續進行下一步,檢查警報並創建一個或多個案例來管理它們。
第三步 — 創建時間線以跟踪與SSH流量相關的警報
現在您已經配置了一個或多個規則來生成 Kibana 的 SIEM 應用中的警報,您需要一種進一步分組和管理警報的方法。要開始,請訪問 Kibana 的警報儀表板:http://127.0.0.1:5601/app/security/alerts。
請確保您已經生成了一些與您使用的 Suricata 簽名相匹配的無效流量。例如,您可以通過從您的本地機器運行以下命令來觸發示例 sid:1000000
Suricata 規則:
此命令將嘗試使用端口 80(而不是默認端口 22)連接到您的服務器,並應該觸發一個警報。警報在 Kibana 中顯示之前可能需要幾分鐘的時間,因為它必須由 Elasticsearch 和您在 Kibana 中創建的規則處理。
接下來,您將向顯示在頁面底部的警報表中添加 comnunity_id
欄位。回想一下第一個教程中提到的,這個欄位是由 Suricata 生成的,代表了包含在網絡流中的唯一 IP 地址和端口。單擊 Fields 按鈕,在彈出的模態對話框中,輸入 network.community_id
,然後選中該字段名稱旁邊的核取方塊:
關閉模態對話框,該字段將被添加到警報表中。現在將滑鼠懸停在任何具有相同 community_id
值的警報上,然後單擊 添加到時間線調查 圖標。這將確保將 Suricata 添加到事件中的所有共享 community_id
的警報添加到時間線以進一步調查:
接下來點擊瀏覽器左下角的未命名時間軸鏈接。此鏈接將帶您前往僅顯示具有您想要調查的Suricata community_id
字段的警報的頁面。
時間軸頁面會向您顯示與警報或網絡流量相關的個別封包的更多詳細信息。您可以使用時間軸來更好地了解可疑網絡流量開始的時間、其起源以及持續時間。
點擊頁面右側的所有數據源按鈕,然後選擇檢測警報按鈕,然後點擊保存。此選項將限制時間軸僅顯示Kibana生成的警報。如果沒有此選項,Suricata的警報也將包含在時間軸中。
要保存新的時間軸,請點擊時間軸頁面左上角的鉛筆圖標。以下截圖突出顯示了鉛筆圖標的位置以及所有數據源按鈕:
如果有其他信息要添加到時間軸,您可以在描述字段中添加文本。編輯完時間軸名稱和描述後,請點擊對話框右下角的保存按鈕。
重複上述步驟,創建其他您想要稍後更深入研究的警報的時間軸。
在下一步中,您將使用事件的時間軸視圖將警報附加到Kibana的案例應用程序中,該應用程序位於SIEM套件的工具中。
步驟 4 — 創建和管理 SIEM 案例
在上一個步驟中,您根據 Suricata 的 community_id
欄位創建了一個時間軸,將個別警報和封包分組在一起。在本教程的這一部分中,您將創建一個案例來跟踪和管理您時間軸中的警報。
要從您的時間軸創建一個新案例,請確保您正在瀏覽器的時間軸頁面上。點擊時間軸頁面右上角的 附加到案例 按鈕,然後從出現的列表中選擇 附加到新案例 按鈕。
您將被重定向到一個頁面,您可以在其中輸入有關您正在調查的事件的信息。在以下示例截圖中,案例是我們的示例 SSH 流量在非 SSH 端口警報:
填寫具有描述性名稱和可選標籤或標籤的字段。在此示例中,案例的名稱是 SSH TRAFFIC on non-SSH port from 203.0.113.5
,因為這是我們正在調查的特定類型的流量和主機。在您的 SIEM 系統中進行調查的許多事件中,像這樣的命名方案將有助於您跟踪案例、時間軸和警報,因為名稱將對應到 Kibana 警報和 Suricata 簽名的消息字段。
滾動到頁面底部並點擊創建案例按鈕。您的瀏覽器將顯示已保存案例的頁面。您可以使用Markdown格式添加附加信息的評論,以及從此頁面編輯案例。
接下來,點擊描述中的鏈接,轉到您在本教程的上一步中添加的案例時間軸。
對於要包含在案例中的每個警報,請單擊警報上的更多操作圖標。點擊添加到現有案例。
點擊彈出的模式中的案例名稱,將警報添加到案例中。請務必選擇與您正在調查的時間軸和警報相對應的案例。重複將列表中的每個警報添加到現有案例中。
現在再次使用Kibana的案例應用程序,使用頁面左側的導航菜單](http://localhost:5601/app/security/cases)。點擊您的案例,並注意您添加的警報在案例詳細信息中列出:
從這裡,您可以滾動到案例底部,添加任何您想要的附加信息。例如,您已採取的調查警報或警報的任何步驟,對Suricata的配置更改,例如新的或編輯過的規則,升級到另一個團隊成員或任何與案例相關的其他信息。
一旦您對於創建要跟踪的各種類型警報的案例感到舒適,您現在可以使用Kibana的SIEM工具在一個集中位置組織和協調調查任何警報。
結論
在本教程中,您通過向Kibana添加規則來擴展您現有的Suricata和Elastic Stack SIEM系統,以生成有關特定流量的警報。您還創建了一個或多個時間軸,以根據其community_id
將警報集合分組。最後,您創建了一個案例,並將您的時間軸與其中感興趣的個別警報相關聯。
有了這個SIEM系統,您現在可以在幾乎任何規模上跟踪系統中的安全事件。隨著您對Suricata的熟悉程度以及在Kibana SIEM中跟踪它生成的警報,您將能夠自定義Suricata警報和其採取的默認操作,以適應您的特定網絡。
有關Kibana的SIEM工具的更多信息,請訪問官方的Elastic Security Documentation。那裡的指南會更詳細地解釋如何使用規則、警報、時間軸和案例。
如果您對更輕量級的SIEM界面感興趣,您可能還會對EveBox感興趣,該界面在單個頁面上呈現了所有Suricata事件數據和SIEM功能。