原标题:Linux安全审计机制模块实现分析(14)-核心文件之二auditfilter.c文件描述及具体变量、函数定义
2.4.2文件二 auditfilter.c
2.4.2.1 文件描述
kernel/auditfilter.c
static struct audit_entry *audit_rule_to_entry(struct audit_rule *rule)
功能:把用户空间的规则转换为内核的规则。
int audit_receive_filter(int type, int pid, int uid, int seq, void *data, size_t datasz, uid_t loginuid, u32 sessionid, u32 sid)
功能:对指定的消息类型应用所有的规则。
Static void audit_log_rule_change(uid_t loginuid, u32 sessionid, u32 sid,
char *action, struct audit_krule *rule,
int res)
功能:生成规则改变(增加了规则或删除了规则)的审计消息。
static inline struct audit_entry *audit_init_entry(u32 field_count)
功能:初始化规则链表的一个条目。
static struct audit_entry *audit_find_rule(struct audit_entry *entry, struct list_head **p)
功能:在基于节点的哈希规则链表或参数指定的链表上查找一条规则。
static int audit_filter_user_rules(struct netlink_skb_parms *cb, struct audit_krule *rule, enum audit_state *state)
功能:确定套接字控制缓存中的信息是否符合一条规则的规则域描述。
int audit_filter_user(struct netlink_skb_parms *cb)
功能:在user规则链表上查找套接字控制缓存中的信息是否满足链表上的某条规则。
int audit_filter_type(int type)
功能:在type链表上查找审计消息的类型是否满足一条规则,若找到,此类审计消息将不输出。
struct audit_entry *audit_dupe_rule(struct audit_krule *old)
功能:复制一条审计规则。
static inline int audit_del_rule(struct audit_entry *entry)
功能:删除一条审计规则。
static inline int audit_add_rule(struct audit_entry *entry)
功能:添加一条审计规则。
int audit_comparator(u32 left, u32 op, u32 right)
功能:返回规则域运算的结果。
2.4.2.2主要变量及宏定义
(给出待分析文件中涉及的变量及宏定义的解释性信息。)
struct list_head audit_filter_list[AUDIT_NR_FILTERS] = {
LIST_HEAD_INIT(audit_filter_list[0]),
LIST_HEAD_INIT(audit_filter_list[1]),
LIST_HEAD_INIT(audit_filter_list[2]),
LIST_HEAD_INIT(audit_filter_list[3]),
LIST_HEAD_INIT(audit_filter_list[4]),
LIST_HEAD_INIT(audit_filter_list[5]),
}; //规则链表数组
static u32 audit_ops[] =
{
[Audit_equal] = AUDIT_EQUAL,
[Audit_not_equal] = AUDIT_NOT_EQUAL,
[Audit_bitmask] = AUDIT_BIT_MASK,
[Audit_bittest] = AUDIT_BIT_TEST,
[Audit_lt] = AUDIT_LESS_THAN,
[Audit_gt] = AUDIT_GREATER_THAN,
[Audit_le] = AUDIT_LESS_THAN_OR_EQUAL,
[Audit_ge] = AUDIT_GREATER_THAN_OR_EQUAL,
}; //规则域的运算符
DEFINE_MUTEX(audit_filter_mutex);//保护规则链表的互斥锁
2.4.2.3结构体定义
无
2.4.2.4外部函数
static inline void skb_queue_head_init(struct sk_buff_head *list)
功能:创建一个套接字缓冲区队列。
struct sk_buff *audit_make_reply(int pid, int seq, int type, int done,
int multi, const void *payload, int size)
功能:生成应答消息。
int audit_comparator(u32 left, u32 op, u32 right)
功能:计算规则域的表达式
2.4.2.5内部函数
static struct audit_entry *audit_rule_to_entry(struct audit_rule *rule)
功能:把用户空间的规则转换为内核的规则。
int audit_receive_filter(int type, int pid, int uid, int seq, void *data, size_t datasz, uid_t loginuid, u32 sessionid, u32 sid)
功能:对指定的消息类型应用所有的规则。
Static void audit_log_rule_change(uid_t loginuid, u32 sessionid, u32 sid,
char *action, struct audit_krule *rule,
int res)
功能:生成规则改变(增加了规则或删除了规则)的审计消息。
static inline struct audit_entry *audit_init_entry(u32 field_count)
功能:初始化规则链表的一个条目。
static struct audit_entry *audit_find_rule(struct audit_entry *entry, struct list_head **p)
功能:在基于节点的哈希规则链表或参数指定的链表上查找一条规则。
static int audit_filter_user_rules(struct netlink_skb_parms *cb, struct audit_krule *rule, enum audit_state *state)
功能:确定套接字控制缓存中的信息是否符合一条规则的规则域描述。
int audit_filter_user(struct netlink_skb_parms *cb)
功能:在user规则链表上查找套接字控制缓存中的信息是否满足链表上的某条规则。
int audit_filter_type(int type)
功能:在type链表上查找审计消息的类型是否满足一条规则,若找到,此类审计消息将不输出。
struct audit_entry *audit_dupe_rule(struct audit_krule *old)
功能:复制一条审计规则。
static inline int audit_del_rule(struct audit_entry *entry)
功能:删除一条审计规则。
static inline int audit_add_rule(struct audit_entry *entry)
功能:添加一条审计规则。
int audit_comparator(u32 left, u32 op, u32 right)
功能:返回规则域运算的结果。
责任编辑: