自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用BPF增強SSH會話的安全審計

系統(tǒng) Linux
Teleport是一款Golang語言開發(fā)的用來替代sshd的ssh服務(wù)器,支持通過 SSH 或者 HTTPS 遠(yuǎn)程訪問,支持集群、Web登陸、SSH歷史記錄還重放用以操作分享和安全審計,基于Golang ssh包構(gòu)建開發(fā),實現(xiàn)完全兼容OpenSSH。

 使用BPF增強SSH會話的安全審計

 

Teleport是一款Golang語言開發(fā)的用來替代sshd的ssh服務(wù)器,支持通過 SSH 或者 HTTPS 遠(yuǎn)程訪問,支持集群、Web登陸、SSH歷史記錄還重放用以操作分享和安全審計,基于Golang ssh包構(gòu)建開發(fā),實現(xiàn)完全兼容OpenSSH。

 

使用BPF增強SSH會話的安全審計

 

最近Teleport 4.2版本中新增加ssh增強的回話記錄功能用來接收非結(jié)構(gòu)化的ssh會話,并將其通過結(jié)構(gòu)化事件流來輸出。該功能使用到了Linux內(nèi)核中集成的一項新技術(shù)eBPF(簡稱為BPF)。用來完善Teleport審計功能的不足之處。本文蟲蟲就給大家介紹Teleport中是如何做的。

背景

Teleport的一個優(yōu)勢就是,可以對ssh會話全程記錄。該功能可以捕獲用戶屏幕上顯示的所有內(nèi)容。之后,可以使用該記錄回放還原所有操作,以便于審計。這些記錄易于理解,并提供了有關(guān)用戶在會話過程中所做操作和顯示的信息

然而,和其他同類工具一樣(堡壘機),Teleport也有不足之處,用戶可以使用一些方法繞過會話記錄。其中包括:

混淆命令:

比如通過加密或者其他方式對命令予以混淆。比如下面的語句,用base64編碼對要執(zhí)行的命令進(jìn)行了混淆。

echo Y3VybCBodHRwOi8vd3d3LmV4YW1wbGUuY29tCg== | base64 -d | sh

這樣實際的執(zhí)行命令(curl example.com)不會直接被記錄。

Shell腳本:

如果用戶通過上傳并執(zhí)行腳本的方式,也不能捕獲腳本中運行的命令,只能捕獲腳本的輸出。

終端控制:

ssh終端可以支持多種控件,比如用戶可以禁用終端回顯的控件,在一些應(yīng)用程序通常會使用。例如sudo命令當(dāng)它們提示用戶輸入密碼時。這是也不能在ssh記錄中捕獲它們。

此外,由于TTY流是非結(jié)構(gòu)化性質(zhì),會話記錄在某種程度上可能難以捕獲和監(jiān)視。

技術(shù)實現(xiàn)

為了解決安全審計的這些不足,Teleport需要一種能將非結(jié)構(gòu)化ssh會話轉(zhuǎn)換為結(jié)構(gòu)化事件流的方法。這就是本文要說的增強回話記錄功能,具體功能展示如下:

 

使用BPF增強SSH會話的安全審計

 

技術(shù)選型

通過多種方法對比,包括了內(nèi)容從正則表達(dá)式模式匹配之類的臨時方法到自己解析原始SSH會話之類的方法,還探索了Linux提供的各種API和系統(tǒng),例如Audit,fanotify和BPF等,在走技術(shù)對比時候,要考慮的兩個標(biāo)準(zhǔn)是準(zhǔn)確性和性能問題:

減少誤報,最好減少到零。監(jiān)控系統(tǒng)(安全審計),首先要考慮是的準(zhǔn)確性問題,如果報警很多,則對警報的關(guān)注度就會減少??赡軙?dǎo)致嚴(yán)重問題被忽略掉。

減少由監(jiān)控引起的任何性能影響,最好為零。監(jiān)控系統(tǒng)要盡量避免影響系統(tǒng)的性能。

多種方法中,誤報問題都很嚴(yán)重。無法對構(gòu)成SSH會話的字節(jié)流進(jìn)行準(zhǔn)確的解析和解釋,不能防止警報疲勞。

還有一些方法,會有性能問題。比如Linux Audit。

通過查看文件系統(tǒng)訪問,有一些替代方法。最突出的兩個是inotify和fanotify。inotify不錯,做為了初始備選項,但是其缺少遞歸目錄監(jiān)視功。fanotify更有希望,也存在兩個問題。

布倫丹.格雷格在BPF性能工具書中提到,在重負(fù)載時,opensnoop比對fanotify,fanotify 占了67%的CPU,而opensnoop只用到1%。

Linux內(nèi)核最近合并到一個補丁,以提高fanotify的性能,使其更適合于對整個文件系統(tǒng)監(jiān)視,這樣可以在Teleport中的使用更加緊密地契合。然而,補丁需要在Linux 5.1中才被合并,目前還沒有開箱即用的主流發(fā)行版支持。

考慮到這些考慮因素,Teleport最終選擇了基于BPF程序鏈構(gòu)建的解決方案,該解決方案減少了誤報并且對性能的影響最小。

BPF介紹

BPF,原本是Unix的一個包過濾器,伯克利包過濾器(Berkeley Packet Filter)。后來被移植到了Linux中。2013 年,Alexei Starovoitov 對 BPF 做完善和改進(jìn),新版本被命名為 eBPF (extended BPF),簡寫為BPF,而將老的BPF叫做cBPF(classic BPF)。eBPF在增加了映射和尾調(diào)用等新特性,并且還重寫了JIT 編譯器。新版語言比 cBPF 更接近原生機器語言。BPF允許用戶空間程序以安全和高效的方式從內(nèi)核中的某些位置掛接并發(fā)出事件。

安全意味著BPF程序不會陷入無限循環(huán)而導(dǎo)致系統(tǒng)癱瘓。BPF程序不太可能像內(nèi)核模塊一樣可能使整個操作系統(tǒng)崩潰。

BPF程序也很有效,如果不能足夠快地使用它們,則丟棄事件,而不是拖累整個系統(tǒng)的性能。

目前Linux中有大量的系統(tǒng)工具都是基于BPF進(jìn)行了重構(gòu)(比如iptables),布倫丹.格雷格的書《BPF高性能工具》中(blog中)介紹了大量的工具可以供大家學(xué)習(xí)。

 

使用BPF增強SSH會話的安全審計

 

Teleport對接BPF

Teleport中使用了三個BPF程序:execsnoop捕獲程序執(zhí)行,opensnoop捕獲程序打開的文件,tcpconnect捕獲程序建立的TCP連接。

為了更好地理解這些BPF程序的功能,可以運行時查看execsnoop的輸出man ls。

 

使用BPF增強SSH會話的安全審計

 

看起來,簡單地運行man二進(jìn)制文件似乎是在幕后執(zhí)行了許多其他程序。

Teleport 將這些程序嵌入其二進(jìn)制文件中,并且在啟用"增強的會話記錄"功能后,它將生成并運行它們。

 

使用BPF增強SSH會話的安全審計

 

這些程序本身是調(diào)試和跟蹤的出色工具,它能給出系統(tǒng)上正在執(zhí)行什么操作,而不僅限于一個用戶。

要將程序執(zhí)行與特定的SSH會話相關(guān)聯(lián),還使用了cgroups(尤其是cgroupv2)。Teleport啟動SSH會話時,它將首先重新啟動自身并將其置于cgroup中。這不僅允許該進(jìn)程,而且可以使用唯一ID跟蹤Teleport啟動的所有將來進(jìn)程。Teleport運行的BPF程序已更新,還可以發(fā)出執(zhí)行它們的程序的cgroup ID。這樣就可以將事件與特定的SSH會話和身份相關(guān)聯(lián)。

局限性

目前Teleport沒有完成增強的會話記錄。仍然存在一些差距,將以后版本解決。

值得指出的是,通過會話記錄,Teleport可以捕獲由于其特權(quán)位置而構(gòu)成會話的字節(jié)流(字節(jié)流必須流過Teleport)。至關(guān)重要的是,會話記錄的完整性不依賴于主機自己報告的任何信息。但是,增強的審核功能依賴于主機準(zhǔn)確地向Teleport報告信息。如果主機的完整性受到損害,則增強審核的完整性也會收到影響。此外,Teleport僅監(jiān)控系統(tǒng)中最關(guān)鍵的部分系統(tǒng)調(diào)用,而不是全部調(diào)用。

目前,增強的會話記錄最適合非root用戶,對有權(quán)訪問root的用戶可以通過多種方式禁用增強會話記錄。

實踐

在沒有背景的情況下,可以使用下面的腳本進(jìn)行增強的會話記錄。

 

使用BPF增強SSH會話的安全審計

 

 

使用BPF增強SSH會話的安全審計

 

首先啟動Ubuntu 19.04或RHEL/CentOS 8 VM,然后運行上面的腳本。該腳本會安裝內(nèi)核頭文件和bcc-tools,這是運行增強會話記錄的先決條件。此外,腳本還安裝jq,一個命令的json解析工具(蟲蟲以前文章介紹過,可以參考),這有助于可視化結(jié)構(gòu)化事件流。

按照說明輸入終端后,屏幕上看到以下類似的信息:

 

使用BPF增強SSH會話的安全審計

 

由此可見,curl程序是由用戶以兩種方式執(zhí)行的。首先是程序本身的執(zhí)行。第二個是程序的行為,curl發(fā)出了網(wǎng)絡(luò)請求,也可以看到它。你可以嘗試執(zhí)行其他操作,例如混淆的命令,或者腳本方式執(zhí)行等,應(yīng)該在日志中查看執(zhí)行結(jié)果。

要求

Teleport增強會話記錄的最低要求需要啟動BPF支持的 Linux內(nèi)核4.18 。目前有多個發(fā)行版本可直接使用它,包括Ubuntu 19.04,Debian 10和RHEL/CentOS 8。

還需要安裝內(nèi)核頭文件和bcc-tools。對于上面列出的操作系統(tǒng),發(fā)行版的包管理器中安裝它們,比如對Centos 8只需運行

 

  1. yum install -y kernel-headers bcc-tools 

或者Ubuntu下執(zhí)行

 

  1. apt install -y linux-headers-$(uname -r) bpfcc-tools 

如果尚未打包bcc-tools,則必須從源代碼構(gòu)建它們。

要在Teleport中啟用增強的會話記錄,只需在文件配置中將其啟用即可,如下所示:

 

  1. ssh_service: 
  2. enhanced_recording: 
  3. enabled: yes 

 

結(jié)論

盡管沒有任何監(jiān)控系統(tǒng)是絕對可靠的,但采用具有多種防護措施的縱深防御策略可以幫助發(fā)現(xiàn)問題并采取適當(dāng)?shù)拇胧eleport的增強型會話記錄功能可以為系統(tǒng)上運行的命令的安全審計,提供更強大的記錄和操作可見性。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-03-03 22:15:58

byobuSSH會話Linux

2011-05-24 09:15:52

SSH

2023-09-11 17:39:35

SSH服務(wù)TCP

2018-01-22 09:12:18

Linuxbashssh

2021-08-27 11:15:54

密碼安全會話安全密碼

2017-12-13 15:10:40

Linux性能分析神器BPF

2023-07-30 15:00:21

2022-03-03 10:00:28

CiliumKubernetes開源

2024-07-05 11:22:39

2009-09-09 20:15:00

2012-04-25 14:11:00

Hillstone安全審計

2013-06-05 09:51:04

2013-01-30 17:19:48

2022-08-02 11:08:55

網(wǎng)絡(luò)安全云安全審計

2009-06-26 13:35:50

安全審計信息安全吉大正元

2022-09-26 14:24:18

Linux網(wǎng)絡(luò)流量審計

2017-07-06 12:35:39

SSHLinux

2010-12-29 14:32:38

2022-04-10 22:50:20

SSHLinux會話

2015-07-31 09:27:56

安全編碼代碼審計Python
點贊
收藏

51CTO技術(shù)棧公眾號