科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Linux内核入侵检测安全增强实现(下) (1)

Linux内核入侵检测安全增强实现(下) (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

这一段我们来实现我们刚才提出的在linux系统下建立参考监视器的设想。开始我们将描述一个访问控制功能函数,这个功能函数包括增加到内核的访问控制数据库(ACD)的数据结构定义。

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年11月2日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
 

四.实现

这一段我们来实现我们刚才提出的在linux系统下建立参考监视器的设想。开始我们将描述一个访问控制功能函数,这个功能函数包括增加到内核的访问控制数据库(ACD)的数据结构定义。这个新的系统调用来读,写和升级ACD和参考功能函数。还会附有check_rootproc的代码。

4.1 认证功能函数

访问控制数据库包括一个关于每一个系统调用的参考监视器。在这里,只有两个主要的数据结构起作用,一个叫做setuid_acd用来检查对setuid的系统调用,一个是execve_acd来检查对execve的系统调用。这两个结构都在下面的图2中列出。

/*setuid_acd*/ 

  static char rpasswd[LEN_PWD]; 

  /*execve_acd*/ 

  typedef struct setuid_proc_id{ 

  char comm[16]; 

  unsigned long count; 

  }suidpid_t; 

  typedef struct setuid_program{ 

  suidpid_t suidp_id; 

  suidp_t *next;/*下一个程序*/ 

  }suidp_t; 

  typedef struct exe_file_id{ 

  __kernel_dev_t device; /*设备号码r*/ 

  unsigned long inode; /*inode结点号码*/ 

  __kernel_off_t size; /*大小*/ 

  __kernel_time_t modif: /*修改时间*/ 

  }efid_t; 

  typedef struct executable_file{ 

  efid_t efid;/*文件鉴定时间信息*/ 

  int prog_nr; /*可以调用exe的程序数量*/ 

  suidp_t *programs; /*认证程序列表*/ 

  }efile_t; 

  typedef struct executable_file_list{ 

  efile_t lst[NR_EXE]; 

  unsigned int total; /*在列表里的exe的总数*/ 

  }eflst_t;

Setuid_acd只包括串rpasswd,用来保存在内核存储的加密root密码。这是用来健壮性的对setuid系统调用认证进行实现的。Execve_acd包括两个eflst_t结构的数组:

Admitted:在这个结构里提供了一个入口给可执行的文件F,一个setuid程序需要通过执行F来调用execve。在入口里存储了所有的调用F的setuid程序的列表。

Failure:这里保存了一些没有得到认证的利用setuid进程来调用execve尝试的日志。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章