這篇文章將為大家詳細講解有關Tracee中怎么使用eBPF來追蹤容器和系統事件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Tracee是一款易于使用的輕量級容器和系統追蹤工具,在該工具的幫助下,研究人員可以實時監控系統調用和其他系統事件。Tracee的獨特之處就在于,它只會追蹤新創建的進程和容器,也就是Tracee運行之后所開啟的進程和容器,這樣就可以幫助用戶將注意力放在相關事件上,而不是系統中所發生的每一件事情。向Tracee添加新事件(尤其是系統調用)也非常簡單,而且無需手寫任何代碼。
除了追蹤功能之外,Tracee還能夠捕捉到寫入磁盤或內存的文件,并提取動態加載至應用程序內存中的代碼。在這些功能的幫助下,我們將能夠獲取到運行進程的內部情況。
Tracee要求運行系統的Linux內核版本 >= 4.14。
如果使用Docker鏡像的話,還需要滿足下列條件:
C標準庫;
libelf和zlib庫;
clang >= 9;
如果使用的是預編譯的eBPF代碼,則需要滿足下列條件:
clang >= 9;
/usr/src下包含可用的內核Header,由用戶提供,需匹配正在運行的內核版本;
docker run --name tracee --rm --privileged --pid=host -v /lib/modules/:/lib/modules/:ro -v /usr/src:/usr/src:ro -v /tmp/tracee:/tmp/tracee aquasec/tracee
上述命令將會以無參數的形式運行Tracee,默認會收集所有新創建進程的相關事件,并將其以標準輸出的形式打印在表格中。
Tracee這個程序基于eBPF程序(tracee.bpf.$kernelversion.$traceeversion.o)實現,當Tracee開始運行后,它將會尋找eBPF程序,路徑可能是/tmp/tracee或TRACEE_BPF_FILE環境變量定義的路徑。如果沒有找到eBPF的話,程序將會嘗試自動構建eBPF,這一步可以使用--build-policy選項來控制。
最簡單的方法就是讓tracee程序自動構建eBPF程序,我們可以按照下列方式獲取可執行程序:
從項目的GitHub庫上下載(tar.gz);
使用Docker鏡像:aquasec/tracee(已包含所有依賴組件);
使用make build命令從源代碼構建可執行程序;
在Docker容器中使用源碼構建可執行程序:make build DOCKER=1;
或者說,我們也可以預編譯eBPF程序,并將其提供給tracee程序。這樣一來,我們就不需要用到clang和內核Header了。我們可以按照下列方式構建eBPF:
make bpf
如需在Docker容器中構建,請運行下列命令:
make bpf DOCKER=1
或
make all make all DOCKER=1
拿到eBPF程序之后,我們就可以將其提供給Tracee了。此時,我們可以使用更加輕量級的aquasec/tracee:slim鏡像來代替完整的Docker鏡像。這個鏡像無法構建eBPF程序,因此我們需要預先完成eBPF的構建。
如果Tracee執行的不是追蹤任務,那么它就不需要其他權限。比如說,構建eBPF程序、枚舉所有選項等等,都能夠以普通用戶完成。
如需執行追蹤任務,Tracee則需要更高級別的管理員權限了。
下面給出的是Tracee的樣本輸出(無額外參數運行,默認追蹤所有事件):
TIME(s) UID COMM PID TID RET EVENT ARGS 176751.746515 1000 zsh 14726 14726 0 execve pathname: /usr/bin/ls, argv: [ls] 176751.746772 1000 zsh 14726 14726 0 security_bprm_check pathname: /usr/bin/ls, dev: 8388610, inode: 777 176751.747044 1000 ls 14726 14726 -2 access pathname: /etc/ld.so.preload, mode: R_OK 176751.747077 1000 ls 14726 14726 0 security_file_open pathname: /etc/ld.so.cache, flags: O_RDONLY|O_LARGEFILE, dev: 8388610, inode: 533737 ...
關于Tracee中怎么使用eBPF來追蹤容器和系統事件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。