前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最后防线:osquery功能与实现

最后防线:osquery功能与实现

作者头像
血狼debugeeker
发布2021-03-23 11:10:37
8040
发布2021-03-23 11:10:37
举报
文章被收录于专栏:debugeeker的专栏debugeeker的专栏

开源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的接口来获取

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-03-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 设备基线
  • 系统基线
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档