精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一次使用 eBPF LSM 來解決系統(tǒng)時間被回調(diào)的記錄

開發(fā) 前端
vm-agent 應該是虛擬機的一個管理進程,可能的原因是物理機的時間慢 2min 左右,然后通過 vm-agent 來調(diào)整了當前主機所有虛擬機的時間。

最近遇到一個客戶環(huán)境運行的虛擬機環(huán)境時間不準的問題,雖然環(huán)境中都部署了 ntp/chronyd 進行時間同步,校準了時間,但是隔一段時間系統(tǒng)時間仍會被意外調(diào)慢約 2 分鐘。于是做了一個分析。大概包含下面這些內(nèi)容:

  • 如何使用 eBPF LSM 編程攔截特定的操作
  • 如何修改 grub 內(nèi)核啟動參數(shù)
  • grub 修改后未生效怎么辦
  • grub bls 技術是什么,grubby 命令使用
  • rust eBPF 編程實踐

萬事開頭難:使用 eBPF LSM 進行行為監(jiān)控

為了精確定位修改系統(tǒng)時間的肇事者進程,利用 eBPF LSM(Linux Security Module)鉤子函數(shù)進行監(jiān)控,觀測是誰在調(diào)用 settime,收集調(diào)用進程的詳細信息,包括進程 ID、進程名稱,以便后面做攔截。這里依然使用 rust aya 進行 eBPF 編程。

#[lsm]
pub fn hook_settime(ctx: LsmContext) -> i32 {
    let comm_bytes = match ctx.command() {
        Ok(bytes) => { bytes }
        Err(_) => { return 0; }
    };

    let len = comm_bytes.iter()
        .position(|&x| x == 0)
        .unwrap_or(comm_bytes.len());

    if len > 0 {
        let comm_str = unsafe { core::str::from_utf8_unchecked(&comm_bytes[..len]) };
        info!(&ctx, "lsm called: settime {}/{}", ctx.pid(), comm_str);
    }

    0
}

但是運行以后的 eBPF 程序以后,手動調(diào)用命令設置系統(tǒng)時間,eBPF 程序沒有任何輸出。經(jīng)過一番調(diào)試,發(fā)現(xiàn)問題出在 LSM(Linux Security Module)的配置上。通過檢查 LSM 配置狀態(tài):

cat /sys/kernel/security/lsm

capability,selinux

可以到當前系統(tǒng)僅啟用了 capability 和 selinux 模塊,缺少必需的 bpf 模塊支持。正確配置下的 LSM 輸出應該包含:

cat /sys/kernel/security/lsm

capability,yama,bpf

按常規(guī)步驟修改了 GRUB 配置 /etc/default/grub,在 GRUB_CMDLINE_LINUX 末尾新增 lsm 配置選項

lsm=ndlock,lockdown,yama,integrity,apparmor,bpf

接下來調(diào)用 grub2-mkconfig 命令更新 grub 配置,隨后重啟

grub2-mkconfig -o /boot/grub2/grub.cfg

但是一頓操作下來,重啟后發(fā)現(xiàn) /sys/kernel/security/lsm 還是沒有 bpf 選項。查看 /proc/cmdline 也沒有對應的內(nèi)核啟動時傳遞的啟動參數(shù)。

# 檢查當前 LSM 模塊狀態(tài)
$ cat /sys/kernel/security/lsm
capability,selinux    # 顯示配置未生效

# 檢查內(nèi)核啟動參數(shù)
$ cat /proc/cmdline   # 未發(fā)現(xiàn)新增的 LSM 參數(shù)

BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.10.134-16.2.an8.x86_64 root=UUID=7b851053-3729-47c6-a73e-aec3083f4a82 ro resume=UUID=8c6bad2a-6a76-491d-99a2-90cbccf2ba33 rhgb quiet cgroup.memory=nokmem crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M

從 dmesg 中啟動日志也可以同步確認。

$ dmesg -T | less

...
[三 11月  6 08:45:01 2024] Linux version 5.10.134-16.2.an8.x86_64 (mockbuild@anolis-build-02.openanolis.cn) (gcc (GCC) 8.5.0 20210514 (Anolis 8.5.0-18.0.4), GNU ld version 2.30-119.0.2.an8.2) #1 SMP Mon Mar 4 16:14:16 CST 2024
[三 11月  6 08:45:01 2024] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-5.10.134-16.2.an8.x86_64 root=UUID=7b851053-3729-47c6-a73e-aec3083f4a82 ro resume=UUID=8c6bad2a-6a76-491d-99a2-90cbccf2ba33 rhgb quiet cgroup.memory=nokmem crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M

...

為什么修改了 /etc/default/grub 未按預期生效

這里暫時不知道為什么沒有生效,去 /boot 目錄搜索相關的關鍵字,看下是不是有其它的配置文件

圖片圖片

找到了 /boot/loader/entries 文件,經(jīng)過確認,這是因為這個 Linux 發(fā)行版比較新,引入了 BLS(Boot Loader Specification)功能。

BLS 是一個新的啟動加載項配置規(guī)范,旨在統(tǒng)一和簡化 Linux 系統(tǒng)的啟動配置管理。它由 Fedora/Red Hat 推出,現(xiàn)已被多個主流 Linux 發(fā)行版采用,配置文件位于 /boot/loader/entries/ 目錄。它可以不再需要手動編輯 grub.cfg 文件,同時支持多個內(nèi)核版本的獨立配置。

可以使用 grubby 工具進行修改,常見的操作如下:

# 查看默認內(nèi)核
grubby --default-kernel

# 查看所有內(nèi)核信息
grubby --info=ALL

# 修改默認內(nèi)核參數(shù)
grubby --args="xxx=xxx" --update-kernel=DEFAULT

# 刪除內(nèi)核參數(shù)
grubby --update-kernel=ALL --remove-args="quiet"

比如 grubby info 命令可以看到當前的 grub 列表

grubby --info=ALL

index=0
kernel="/boot/vmlinuz-5.10.134-16.2.an8.x86_64"
args="ro resume=UUID=8c6bad2a-6a76-491d-99a2-90cbccf2ba33 rhgb quiet $tuned_params cgroup.memory=nokmem crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M"
root="UUID=7b851053-3729-47c6-a73e-aec3083f4a82"
initrd="/boot/initramfs-5.10.134-16.2.an8.x86_64.img $tuned_initrd"
title="Anolis OS (5.10.134-16.2.an8.x86_64) 8"
id="de564eb41d9d4440b67b167404b867a4-5.10.134-16.2.an8.x86_64"

index=1
kernel="/boot/vmlinuz-0-rescue-de564eb41d9d4440b67b167404b867a4"
args="ro crashkernel=auto resume=UUID=8c6bad2a-6a76-491d-99a2-90cbccf2ba33 rhgb quiet"
root="UUID=7b851053-3729-47c6-a73e-aec3083f4a82"
initrd="/boot/initramfs-0-rescue-de564eb41d9d4440b67b167404b867a4.img"
title="Anolis OS (0-rescue-de564eb41d9d4440b67b167404b867a4) 8"
id="de564eb41d9d4440b67b167404b867a4-0-rescue"

有了這些知識,更新 grub 就變簡單了

# 使用 grubby 工具更新內(nèi)核參數(shù):

grubby --args="lsm=lockdown,capability,landlock,yama,apparmor,bpf" --update-kernel=DEFAULT

系統(tǒng)重啟后,通過檢查 LSM 配置確認更改已生效:

cat /sys/kernel/security/lsm

capability,yama,bpf

現(xiàn)在我們可以繼續(xù)使用 eBPF 程序來監(jiān)控系統(tǒng)時間修改行為。

使用 bpf 攔截

在成功啟用 LSM BPF 支持后,我們快速定位到了時間異常調(diào)整的源頭,是因為虛擬機的 vm-agent 進程在定時做修改。(圖中的另外一個 date 是我在手動調(diào)用 date 修改時間)

圖片圖片

接下來要做的就是匹配 vm-agent,然后攔截它。

const VM_AGENT_BYTES: &'static [u8] = b"vm-agent";

#[lsm]
pub fn hook_settime(ctx: LsmContext) -> i32 {
    let comm_bytes = match ctx.command() {
        Ok(bytes) => { bytes }
        Err(_) => { return 0; }
    };

    let len = comm_bytes.iter()
        .position(|&x| x == 0)
        .unwrap_or(comm_bytes.len());

    if len == VM_AGENT_BYTES.len() && &comm_bytes[..len] == VM_AGENT_BYTES {
        info!(&ctx, "match vm-agent, return -1");
        return -1;
    }
    0
}

userspace 端的代碼比較簡單,加載 eBPF 程序,然后永久等待。

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    std::env::set_var("RUST_LOG", "debug");
    env_logger::init();

    let mut ebpf = aya::Ebpf::load(aya::include_bytes_aligned!(concat!(
        env!("OUT_DIR"),
        "/time-backward"
    )))?;

    if let Err(e) = aya_log::EbpfLogger::init(&mut ebpf) {
        warn!("failed to initialize eBPF logger: {}", e);
    }

    let btf = Btf::from_sys_fs()?;
    let program: &mut Lsm = ebpf.program_mut("hook_settime").unwrap().try_into()?;
    program.load("settime", &btf)?;
    program.attach()?;

    let ctrl_c = signal::ctrl_c();
    println!("Waiting for Ctrl-C...");
    ctrl_c.await?;
    println!("Exiting...");

    Ok(())
}

這樣實現(xiàn)以后,就有效阻止了 vm-agent 的修改時間操作(下面是一個模擬的、假的名為 vm-agent 的程序去設置時間的操作被拒絕)。

# 攔截效果驗證
./vm-agent +%T -s "10:07:48"
./vm-agent: cannot set date: Operation not permitted
10:07:48

把程序放到虛擬機中運行,就可以攔截掉搞事情的 vm-agent 了。

圖片圖片

由于沒有 vm-agent 亂改時間,現(xiàn)在系統(tǒng)的時間就正常了,經(jīng)過長時間的觀測,時鐘非常準確。

圖片圖片

小結

vm-agent 應該是虛擬機的一個管理進程,可能的原因是物理機的時間慢 2min 左右,然后通過 vm-agent 來調(diào)整了當前主機所有虛擬機的時間。

ebpf 代碼很簡單,但是往往是它運行的環(huán)境需要比較小心的去準備。ps: 又學到了一點 grub 的好像沒什么用的知識。

責任編輯:武曉燕 來源: 張師傅的博客
相關推薦

2014-08-01 14:06:45

2021-12-12 18:12:13

Hbase線上問題

2020-04-08 10:30:19

Linux 攻擊 安全

2018-01-15 14:50:49

APP轉讓App賬號

2023-03-29 09:36:32

2010-04-01 22:16:21

2023-04-13 12:00:00

MySQLSQL線程

2012-02-01 16:48:54

后門Putty

2021-01-22 05:35:19

Lvm模塊Multipath

2010-09-07 11:16:14

SQL語句

2011-05-06 10:32:06

硬盤鍵盤

2011-06-28 10:41:50

DBA

2013-09-13 09:27:42

服務器LinuxApache

2024-04-03 09:00:10

2013-12-24 13:59:03

2022-10-10 09:10:07

命令磁盤排查

2010-09-13 10:43:22

SQL Server

2019-10-08 17:06:20

Python旅行朋友圈

2021-08-31 10:41:21

參數(shù)調(diào)優(yōu)代碼

2022-09-14 15:40:03

接口解決
點贊
收藏

51CTO技術棧公眾號

亚洲一区影院| 国产精品av免费在线观看| 超碰人人cao| 三妻四妾的电影电视剧在线观看| www.欧美日韩国产在线| 国产91精品网站| 五月天婷婷色综合| 亚洲激情77| 777奇米成人网| 怡红院av亚洲一区二区三区h| 成人高清免费在线播放| 国产xxx精品视频大全| 色呦呦国产精品| 一区二区不卡在线| 神马午夜电影一区二区三区在线观看| 六月天综合网| 欧美精品在线播放| a级大片在线观看| 精品国产三区在线| 色哟哟精品一区| 日韩亚洲欧美一区二区| 成人精品一区二区| 99久久er热在这里只有精品15| 久久久国产精品免费| 在线xxxxx| 亚洲精品第一| 欧美性20hd另类| 国产精品久久久久久久久电影网| 偷拍自拍在线| 国产成a人亚洲精| 国产精品自拍视频| 亚洲v国产v欧美v久久久久久| www.久久久.com| 色哟哟在线观看一区二区三区| 69精品丰满人妻无码视频a片| 国产三级电影在线观看| 99久久精品免费| 成人免费淫片视频软件| 黄色一区二区视频| 西西裸体人体做爰大胆久久久| 久久99精品久久久久久噜噜| 精品视频第一页| 欧美美女一区| 亚洲欧美中文在线视频| 艳妇乳肉亭妇荡乳av| 一区二区三区在线资源| 欧美精品日日鲁夜夜添| 一区二区在线播放视频| sm性调教片在线观看 | 亚洲一区二区免费在线| 亚洲精品一区二三区| 在线亚洲伦理| 日韩av在线一区| 国产ts在线观看| 久久久91麻豆精品国产一区| 欧美高清视频不卡网| 亚洲综合欧美在线| 日韩专区视频网站| 欧美老肥妇做.爰bbww| 亚洲国产日韩欧美在线观看| 日韩中文视频| 亚洲视频精选在线| 亚洲午夜精品一区二区| av中文字幕一区二区三区| 久久久久久久久一| 欧美性bbwbbwbbwhd| 久草福利在线视频| 国产欧美精品区一区二区三区| 蜜桃精品久久久久久久免费影院| 欧洲天堂在线观看| 日韩黄色片在线观看| 日本高清视频精品| 国产乱码77777777| 美国毛片一区二区| 成人午夜两性视频| 性生交生活影碟片| 成人免费av在线| 久久riav| 成黄免费在线| 国产精品成人一区二区三区夜夜夜| 亚洲精品成人三区| gogo在线高清视频| 亚洲自拍偷拍麻豆| 丰满爆乳一区二区三区| 网友自拍亚洲| 欧美日韩国产美| 男插女视频网站| 精品伊人久久久| 欧美午夜宅男影院| 欧美男女交配视频| 免费精品一区| 亚洲黄色有码视频| 国产精品一区二区小说| 欧美三级一区| 日韩精品免费在线| 一级二级黄色片| 欧美暴力喷水在线| 欧美一区二三区| 中文字幕在线观看视频一区| 国产成人精品一区二区三区四区| 久久久久久久久久久久久9999| gogogo高清在线观看免费完整版| 亚洲视频网在线直播| 黄色免费福利视频| 黄色成人小视频| 亚洲成人激情视频| 成人做爰69片免网站| 国产精品观看| 国产成人一区二区三区小说| 99er热精品视频| 国产无一区二区| 国产精品videossex国产高清| 最近高清中文在线字幕在线观看1| 欧美二区在线观看| 91久久免费视频| 欧美日韩一区二区高清| 最近更新的2019中文字幕| 久久黄色小视频| 久久精品免费观看| 久久精品一区二区三区不卡免费视频| 日本三级在线视频| 欧美性开放视频| 性感美女一区二区三区| 999成人网| 日本电影亚洲天堂| 天天色棕合合合合合合合| 亚洲欧洲制服丝袜| 日本a√在线观看| 天堂日韩电影| 国产亚洲精品久久久久动| av直播在线观看| 欧美一区网站| 国产精品一区二区性色av| 日av在线播放| 午夜久久久久久久久| 亚洲欧美一区二区三区不卡| 成人中文在线| 国产精品久久久久久久一区探花 | 四虎4hu永久免费入口| 99riav视频一区二区| 日韩福利在线播放| 日韩欧美高清在线观看| 懂色av一区二区三区免费看| 天天干天天色天天爽| 天天综合91| 播播国产欧美激情| 国产又粗又猛又黄又爽| 欧美激情一区二区三区蜜桃视频| 亚洲成熟丰满熟妇高潮xxxxx| 色橹橹欧美在线观看视频高清 | 欧美日韩国产网站| 国产午夜精品美女视频明星a级| 国产成人在线免费观看视频| 成人高清av在线| 国产一级爱c视频| 林ゆな中文字幕一区二区| 欧美精品久久久久a| 国产成人a人亚洲精品无码| 亚洲精品久久7777| 美女又黄又免费的视频| 国语精品一区| 国产精品午夜av在线| 电影k8一区二区三区久久| 亚洲成年人影院在线| 日韩少妇高潮抽搐| 久久久高清一区二区三区| 激情视频综合网| 日韩一区二区三区免费播放| 国产一区二区在线播放| 国产福利视频在线观看| 日韩视频免费观看高清完整版 | 国产精品无码久久久久久| 美女诱惑一区| 亚洲精品第一区二区三区| 日韩电影免费观看高清完整版在线观看| 最近2019年日本中文免费字幕| 国产精品久久久久久69| 亚洲午夜激情av| 日本黄色特级片| 美女视频一区二区| 香港三级日本三级a视频| 欧美调教网站| 国产精自产拍久久久久久| www国产在线观看| 日韩激情在线视频| 亚洲影院一区二区三区| av电影一区二区| 成人精品小视频| 91精品秘密在线观看| 国产一区二区三区高清视频| 日韩另类视频| 久久久久在线观看| 国产精品无码天天爽视频| 亚洲一区中文在线| 亚洲精品女人久久久| 精品亚洲国内自在自线福利| 日本不卡一区二区三区在线观看| 男女视频在线| 亚洲久久久久久久久久| 97精品人妻一区二区三区在线| 亚洲蜜臀av乱码久久精品| 一级国产黄色片| 黄网站免费久久| 国产麻花豆剧传媒精品mv在线| 手机在线电影一区| 久久综合九色欧美狠狠| 精品999日本久久久影院| 国产不卡视频在线| xxxx视频在线| 日韩中文字幕在线| 青青草视频在线观看| 日韩欧美亚洲一区二区| 中日韩在线观看视频| 亚洲第一福利一区| 日韩精品一区二区亚洲av性色| 久久人人爽人人爽| 亚洲午夜久久久久久久久| 九九精品视频在线看| www.中文字幕在线| 欧美三区美女| 亚洲永久一区二区三区在线| 奇米777国产一区国产二区| 91久久精品一区二区别| 久久亚洲国产精品尤物| 欧美在线一级视频| 国产免费拔擦拔擦8x高清在线人| 久久影视电视剧免费网站清宫辞电视 | 乱老熟女一区二区三区| 久久亚洲春色中文字幕久久久| 性一交一黄一片| 国产精品自在在线| 亚洲a级黄色片| 美国一区二区三区在线播放| www.99在线| 久久最新视频| 亚州欧美一区三区三区在线| 婷婷精品在线| 精品视频第一区| 麻豆一区二区麻豆免费观看| 国产精品日韩一区二区| 亚洲网址在线观看| 99re在线视频观看| 精品欧美视频| 91嫩草视频在线观看| 日本精品视频| 亚洲a成v人在线观看| 国产精品毛片无码| 成人中文字幕在线观看 | 国产精品视频入口| 2021年精品国产福利在线| 国产99在线免费| 久久97精品| 久久国产精品免费一区| 台湾色综合娱乐中文网| 久久久久久国产精品免费免费| 噜噜噜天天躁狠狠躁夜夜精品 | 亚洲综合在线五月| 精品深夜av无码一区二区老年| 亚洲国产综合色| 国产成人无码精品久久久久| 色综合天天综合色综合av | 麻豆国产精品777777在线| 天堂网在线免费观看| 久久国产精品72免费观看| aaa一级黄色片| 成人午夜短视频| 三级电影在线看| 久久九九影视网| 国产大屁股喷水视频在线观看| 成人欧美一区二区三区1314| 欧美日韩激情在线观看| 欧美日韩性视频| 色噜噜噜噜噜噜| 国产精品国产馆在线真实露脸| 成人免费毛片xxx| 天天综合色天天| 国产女主播喷水视频在线观看| 欧美撒尿777hd撒尿| 国产高中女学生第一次| 亚洲精品v天堂中文字幕| 国产天堂在线| 九九精品在线观看| 一区二区三区电影大全| 国产精品一区电影| 涩爱av色老久久精品偷偷鲁 | 国产精品无码2021在线观看| www.亚洲男人天堂| 丁香花视频在线观看| 国产精品美女久久| 草草视频在线一区二区| 日本一区二区精品| 欧美国产免费| 麻豆传传媒久久久爱| 国产美女在线精品| 波多野吉衣中文字幕| 亚洲精品美国一| 波多野结衣视频网址| 欧美刺激脚交jootjob| 国产在线视频网| 欧美美女18p| yw.尤物在线精品视频| 国产精品久久国产精品| 国产亚洲一区二区三区不卡| 欧美大黑帍在线播放| 老司机精品视频导航| 在线黄色免费网站| 亚洲人成电影网站色mp4| 国产成人无码一区二区在线播放| 午夜精品福利一区二区三区蜜桃| 伊人22222| 亚洲精品中文字幕av| 欧美aaaaaaa| 成人国产精品免费视频| 免费不卡中文字幕在线| 人体内射精一区二区三区| 精品一区二区三区不卡| 成人免费看aa片| 亚洲黄色在线视频| 在线视频你懂得| 国产午夜精品视频免费不卡69堂| 久久亚洲导航| 亚洲va码欧洲m码| 久久人人99| 日韩中文字幕组| av电影一区二区| 久久精品免费av| 日韩欧美中文一区二区| 精品欧美色视频网站在线观看| 日韩av不卡电影| 亚洲第一二三区| 北条麻妃在线视频观看| 波波电影院一区二区三区| 中文字幕在线观看成人 | 亚洲精品网站在线| 久久国产精品亚洲| 高清久久精品| 在线视频一区观看| 久久精品99国产精品日本| 午夜精产品一区二区在线观看的| 欧美性xxxx| 青青草视频在线观看| 日本精品久久中文字幕佐佐木| 亚欧洲精品视频在线观看| 国产精品沙发午睡系列| 日韩经典一区二区| 自拍偷拍视频亚洲| 91高清视频免费看| 国产精品一区在线看| 国产精品黄色影片导航在线观看| 精品一区av| 五月天av在线播放| 亚洲天堂a在线| av高清一区二区| 欧美精品videos另类日本| av不卡一区| 欧美 日韩 亚洲 一区| 91麻豆swag| 午夜视频网站在线观看| 中文字幕在线观看日韩| av日韩久久| 日韩精品一区二区三区四| av一区二区不卡| 老熟妇一区二区三区| 久久精品久久久久电影| 日韩成人在线观看视频| www.av91| 久久综合给合久久狠狠狠97色69| 亚洲综合成人av| 久久精品美女视频网站| 中文字幕一区日韩精品| 国产精品333| 国产精品三级在线观看| av网站在线观看免费| 国模极品一区二区三区| 国语产色综合| 中文字幕在线视频一区二区三区| 亚洲综合一区二区| 欧美一区二区视频| 国产一区二区丝袜高跟鞋图片| 激情91久久| 人妻av无码一区二区三区| 7777精品伊人久久久大香线蕉 | 日韩欧美中文字幕在线播放| 91高清在线| 国产欧美日韩一区| 免费在线观看精品| 国产真实乱人偷精品视频| 亚洲精品一区二区久| 亚洲一区二区av| www.玖玖玖| 亚洲免费观看在线视频| 女人天堂在线| 97久久天天综合色天天综合色hd | avtt中文字幕| 色偷偷88欧美精品久久久| 成人午夜在线影视| 日韩av高清在线播放| 国产成人精品综合在线观看| 最新黄色网址在线观看| 久久久久久久影院|