linux审计某个进程,Linux安全审计机制模块实现分析(12)-核心文件之一audit.c补充...

原标题:Linux安全审计机制模块实现分析(12)-核心文件之一audit.c补充

2.4.1.2主要变量及宏定义

intaudit_enabled; //审计系统是否已开启的标志

int audit_pid; //审计后台进程auditd的pid

static intaudit_backlog_limit = 64; //审计缓冲区中的最大消息数

static intaudit_backlog_wait_time = 60 * HZ; //消息等待发送的最大时间

static atomic_t audit_lost = ATOMIC_INIT(0);//丢失的审计消息数目

static struct sock *audit_sock; //审计系统使用的netlink套接字

struct list_head audit_inode_hash[AUDIT_INODE_BUCKETS];//基于节点的规则哈希链表

static struct sk_buff_head audit_skb_queue;//审计netlink套接字缓冲区链表

DECLARE_WAIT_QUEUE_HEAD(kauditd_wait) //kauditd的等待队列

DECLARE_WAIT_QUEUE_HEAD(audit_backlog_wait);//消息发送进程的等待队列

#define AUDIT_BUFSIZ 1024 //审计消息缓冲区的大小

#define AUDIT_OFF0

#define AUDIT_ON1

#define AUDIT_LOCKED2

//以上三个宏是审计系统的三种模式,其中第三个模式是不允许修改审计规则和审计系统的状态

#define AUDIT_DISABLED-1

#define AUDIT_UNINITIALIZED0

#define AUDIT_INITIALIZED1

//以上三个宏表示审计系统的状态。

2.4.1.3结构体定义

struct audit_buffer { //审计缓冲区

struct list_head list;

struct sk_buff *skb; //格式化的netlink套接字缓冲区,准备用于发送审计消息

/*每个进程的审计上下文,包括进程的状态、时间和uid 等,与进程上下文相关,可以为空*/

struct audit_context *ctx;

gfp_t gfp_mask; //为缓冲区分配内存所使用的标识,如:__GFP_WAIT

};

struct audit_reply { //审计应答信息

int pid; //审计消息的目标进程

struct sk_buff *skb; // 存放应答信息的skb.

};

2.4.1.4外部函数

int netlink_unicast(struct sock *ssk, struct sk_buff *skb, u32 pid, int nonblock)

功能:利用netlink套接字实际发送消息的函数。

static inline struct sk_buff *__skb_dequeue(struct sk_buff_head *list)

功能:从套接字缓冲区队列上取一个skb。

void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err)

功能:发送一个套接字应答。

int audit_filter_type(int type)

功能:按照type规则链表进行消息过滤。

static inline __u32 skb_queue_len(const struct sk_buff_head *list_)

功能:求缓冲区队列的长度。

void add_wait_queue(wait_queue_head_t *q, wait_queue_t *wait)

功能:把wait加入等待队列。

void remove_wait_queue(wait_queue_head_t *q, wait_queue_t *wait)

功能:把wait从等待队列移出。

void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk)

功能:把skb添加到队列list的尾部。

struct sock *netlink_kernel_create(struct net *net, int unit, struct module *module,

struct netlink_kernel_cfg *cfg)

功能:创建一个netlink套接字。

2.4.1.5内部函数

static int audit_set_rate_limit(int limit, uid_t loginuid, u32 sessionid, u32 sid)

功能:设置消息发送的最大速率。

static int audit_set_backlog_limit(int limit, uid_t loginuid, u32 sessionid,u32 sid)

功能:设置消息缓冲区的最大消息数。

static int audit_set_enabled(int state, uid_t loginuid, u32 sessionid, u32 sid)

功能:开启内核审计功能。

static void audit_printk_skb(struct sk_buff *skb)

功能:通过printk发送审计消息给日志文件。

static void kauditd_send_skb(struct sk_buff *skb)

功能:kauditd线程通过netlink机制发送skb中的审计消息。

static int kauditd_thread(void *dummy)

功能:kauditd线程的线程函数。

static int audit_prepare_user_tty(pid_t pid, uid_t loginuid, u32 sessionid)

功能:为用户准备tty.

struct sk_buff *audit_make_reply(int pid, int seq, int type, int done, int multi, const void *payload, int size)

功能:给用户空间返回一个审计应答消息。

static int audit_send_reply_thread(void *arg)

功能:audit_send_reply线程的线程函数

static void audit_send_reply(int pid, int seq, int type, int done, int multi, const void *payload, int size)

功能:经由netlink套接字发送一个审计消息应答。

static int audit_netlink_ok(struct sk_buff *skb, u16 msg_type)

功能:判断skb中是否是合法的审计消息。

static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh)

功能:从netlink套接字缓冲区接收一条消息并处理消息。

static void audit_receive_skb(struct sk_buff *skb)

功能:从skb接收一条消息。

static void audit_receive(struct sk_buff *skb)

功能:从skb接收一条消息

static int __init audit_init(void)

功能:内核审计系统初始化。

static int __init audit_enable(char *str)

功能:根据内核引导时传入的命令行参数设置审计系统的状态。

static void audit_buffer_free(struct audit_buffer *ab)

功能:释放审计缓冲区。

static struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx, gfp_t gfp_mask, int type)

功能:分配一个审计缓冲区。

unsigned int audit_serial(void)

功能:分配一个审计消息序列号。

static inline void audit_get_stamp(struct audit_context *ctx, struct timespec *t, unsigned int *serial)

功能:获得时间戳。

struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask, int type)

功能:审计消息发送函数

static inline int audit_expand(struct audit_buffer *ab, int extra)

功能:扩展审计缓冲区的空间。

static void audit_log_vformat(struct audit_buffer *ab, const char *fmt, va_list args)

功能:格式化一个审计消息,并放入审计缓冲区。

void audit_log_format(struct audit_buffer *ab, const char *fmt, ...)

功能:格式化一个审计消息,并放入审计缓冲区。

void audit_log_end(struct audit_buffer *ab)

功能:发送审计缓冲区中的消息。

void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type, const char *fmt, ...)

功能:生成并发送审计消息。

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值