iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
Cloud Native

我在 CKS 考完只拿 47% 後痛定思痛決定好好準備內容系列 第 24

[Day24] 6-2. Detect threats within physical infrastructure, apps, networks, data, users, workloads

  • 分享至 

  • xImage
  •  

昨天介紹了 Falco 的安裝及原理,今天要來說明如何制定 Rule 以及 Output。

Falco rules

在 Rules 的部分主要透過 yaml 建立,主要含有以下三個 elements:

Element 描述
Rules 主要提供規則的制定,可以設定哪些條件觸發 alert 以及告警強度,還有告警內容
Macros 當一些規則內容重複時可以透過 Macros先定義並且重複使用
Lists List 的使用上會比較像是 Rule 或者 Macros 內的小配置,可重複使用

Rules

範例:
這個規則的目的是:偵測在容器內啟動 bash 或 ksh shell 的行為,這可能表示有人正在容器內執行互動式操作,需要留意是否為未授權存取。

- rule: shell_in_container
  desc: notice shell activity within a container
  condition: >
    evt.type = execve and 
    evt.dir = < and 
    container.id != host and 
    (proc.name = bash or
     proc.name = ksh)    
  output: >
    shell in a container |
    user=%user.name container_id=%container.id container_name=%container.name 
    shell=%proc.name parent=%proc.pname cmdline=%proc.cmdline    
  priority: WARNING
  • rule: 規則名稱
  • desc: 規則描述
  • condition: 建立篩選條件
    • condition 後加上>是將多行摺疊成一行
    • event type 為 execve (當有新程序啟動時,如執行 bash、python 等任何程式)
    • event dir 為 enter (< 符號表示進入系統呼叫)
    • 執行的程序名稱是 bash 或者 ksh
  • output: 輸出內容
  • priority: 告警等級
    • EMERGENCY
    • ALERT
    • CRITICAL
    • ERROR
    • WARNING
    • NOTICE
    • INFORMATIONAL
    • DEBUG

執行 /bin/bash -c "python3 run.py"會產生告警,執行時會產生兩個 execve 事件:

第一個事件(會觸發告警):
proc.name = bash
proc.cmdline = /bin/bash -c python3 run.py
結果:會觸發告警

第二個事件(不會觸發):
proc.name = python3 
proc.cmdline = python3 run.py
結果:不會觸發告警

Macros

可先將 Condition 的條件作為範本並且取用

macro1: container

- macro: container
  condition: container.id != host

macro2: spawned_process

- macro: spawned_process
  condition: evt.type = execve and evt.dir = <

當 rule 建立時如果需要就可以直接取用,不用重新輸入

- rule: shell_in_container
  desc: notice shell activity within a container
  condition: >
    spawned_process and  # 不用輸入 evt.type = execve and evt.dir = <
    container and        # 不用輸入 condition: container.id != host
    proc.name = bash    
  output: 
  priority: 

Lists

可以為 list 或者 item,list中可以引用其他 list

- list: shell_binaries
  items: [bash, csh, ksh, sh, tcsh, zsh, dash]

- list: userexec_binaries
  items: [sudo, su]

- list: known_binaries
  items: [shell_binaries, userexec_binaries]

- macro: safe_procs
  condition: proc.name in (known_binaries)

Output

Output 主要就是在 log 端需要顯示哪些訊息,可以按照需求做調整。

在考試時會需要透過 journalctl 查看 log

journalctl -u falco

參考資料
https://falco.org/docs


上一篇
[Day23] 6-1. Perform behavioral analytics to detect malicious activities
下一篇
[Day25] 6-3. Investigate and identify phases of attack and bad actors within the environment
系列文
我在 CKS 考完只拿 47% 後痛定思痛決定好好準備內容25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言