最后防线:osquery功能与实现

 

开源HIDS osquery的主机监控功能和实现原理。
osquery代码链接:osquery
osquery表结构:表结构
本文是在安装它之后,从osqueryi中的表再调研代码来获取它的实现

设备基线


对系统使用的设备建立基线,从而发现故障的设备,用于IDC机房。
不足之处:这些功能用于传统机房。对于云时代并不适用

功能实现原理
acpi设备读取/sys/firmware/acpi/tables目录
块设备通过调用udev库API读取
设备信息(设备文件,指纹,分区)通过sleuthkit第三方库读取
硬件事件通过读取udev事件
intel mei信息通过读取/dev/mei0
RAID信息(设备,特性,驱动)读取/proc/mdstat
固件信息(内存阵列和地址映射,内存设备和地址映射,故障信息,OEM特征,SMBIOS),设备平台信息读取/sys/firmware/dmi/tables/DMI/sys/firmware/efi/systab
PCI设备读取/usr/share/misc/pci.ids, /usr/share/hwdata/pci.ids/usr/share/pci.ids
智能卡信息通过smartmontools库获取
USB信息通过udev库读取
IO设备的内存映射读取/proc/iomem

系统基线


建立系统基线,获取系统基本信息,如CPU,内存,磁盘,分区,内核版本,加载的模块,系统运行时长,内存控制参数,系统限制,属于哪个发行版
不足之处

  1. 获取cpu寄存器列表和MSR没多少意义。除非环境需要用到一些高能计算

  2. 共享内存信息意义不大

  3. 内核信息获取不够,还需要读取/boot

  4. 内核模块获取不够,还需要读取/lib/modules的内容,确保哪些是系统加载,哪些是手动加载

  5. 自启动项,不应该读取/etc/init.d,而是读取/etc/rc.d/, 或者支持systemd

  6. 加载分区,还得读取一下/etc/fstab,确保哪些分区是系统默认加载,哪些是其它操作加载的

功能实现原理
cpu运行状态读取/proc/stat
cpu寄存器列表通过内联汇编读取cpu信息
cpu msr信息读取/dev/cpu/<id>/msr
内存信息读取/proc/meminfo
共享内存信息通过shmctl等API获取
磁盘加密使用cryptsetupy库来获取磁盘加密情况
加载的分区读取/proc/mounts
内核信息通过读取/proc/cmdline/proc/version
内核模块通过读取/proc/modules
系统时间获取当前时间
系统启动时长调用sysinfo
系统信息(cpu个数,机器名,配置)读取/proc/cpuinfo/etc/hostname和调用sysconf等API
系统控制配置读取/etc/sysctl.conf/run/sysctl.d/etc/sysctl.d,/usr/local/lib/sysctl.d/usr/lib/sysctl.d/lib/sysctl.d
系统限制调用getrlimit获取
发行版及版本读取/etc/os-release/etc/redhat-release/etc/gentoo-release
自启动项读取/etc/xdg/autostart//etc/init.d/
系统负载通过调用getloadavage的接口来获取

剩余内容请关注本人公众号debugeeker, 链接为最后防线:osquery功能与实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值