這篇文章將為大家詳細講解有關Tracee中怎么使用eBPF來追蹤容器和系統事件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
創新互聯成立于2013年,是專業互聯網技術服務公司,擁有項目網站設計、做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元于田做網站,已為上家服務,為于田各地企業和個人服務,聯系電話:13518219792
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來追蹤容器和系統事件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享標題:Tracee中怎么使用eBPF來追蹤容器和系統事件
網站地址:http://vcdvsql.cn/article34/peiise.html
成都網站建設公司_創新互聯,為您提供虛擬主機、動態網站、網站導航、Google、移動網站建設、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯