当前位置:首页 » 操作系统 » linux的audit

linux的audit

发布时间: 2022-07-22 18:53:10

linux不小心报卸载audit-libs, 系统濒临崩溃中

进入rescue修复模式修复redhat
1. 使用安装启动光盘(Installation boot CD-ROM,可以从boot.img制作)2. 使用其它引导方式的安装启动盘(如usb盘)3. 使用linux第一张安装盘 在boot:提示符后,输入 linux rescue下面就交给你了

⑵ linux audit.rules怎么审计所有操作

这里首先介绍auditctl的应用,具体使用指南查看man auditctl。auditctl的man 描述说明这个工具主要是用来控制audit系统行为,获取audit系统状态,添加或者删除audit系统的规则。控制audit系统行为和获取audit系统状态参数:
-s 或者auditd 状态 auditctl -s 显示:AUDIT_STATUS: enabled=1 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0

⑶ 如何查看linux系统警告日志

1、打开WDCP服务管理系统登录界面,输入用户名和密码,点击登录。

6、在操作日志中,可以看到进行的操作,必要时可以找回误删的数据。

⑷ Linux的audit.log日志审计怎么断定被黑客入侵了

这里首先介绍auditctl的应用,具体使用指南查看man auditctl。auditctl的man 描述说明这个工具主要是用来控制audit系统行为,获取audit系统状态,添加或者删除audit系统的规则。控制audit系统行为和获取audit系统状态参数:
-s 或者auditd 状态 auditctl -s 显示:AUDIT_STATUS: enabled=1 flag=1 pid=2792 rate_limit=0 backlog_limit=320 lost=0 backlog=0

⑸ 如何查看linux系统内核审计是否开启

内核编译时,一般打开NET选项就打开AUDIT选项了。
在系统中查看audit是否打开,root 用户执行:
service auditd status

⑹ Linux中与安全审计有关的函数

我的答案是最正确的 请采纳我的内核审计系统的接口函数在Linux内核需要输出审计信息时,它先调用函数audit_log_start创建缓冲区。接着,调用函数audit_log或audit_log_format写缓冲区写入审计信息,最后调用函数audit_log_end发送审计信息,并释放缓冲区。这三个函数分别说明如下:1.函数audit_log_start 函数audit_log_start申请审计缓冲区,如果任务当前在系统调用中,系统调用被标识为可审计的,并在系统调用退出时,产生一条审计记录。函数audit_log_start的参数ctx为审计上下文结构实例;参数gfp_mask为分配内存的类型,如:__GFP_WAIT表示可以等待和重调度;参数type为审计消息类型。如果缓存区申请成功,它返回审计缓冲区的指针,否则返回NULL表示错误。函数audit_log_start申请审计缓冲区,当审计缓冲区链表的缓冲区个数超过上限时,当前进程需要等待用户空间的后台进程将审计消息写入log文件,直到缓冲区个数小于上限值为止。函数audit_log_start在申请并初始化审计缓冲区后,给缓冲区加时间戳和审计记录序列号。函数audit_log_start列出如下(在linux26/kernel/audit.c中)://声明等待队列头,用于等待审计消息被后台进程写入log文件static DECLARE_WAIT_QUEUE_HEAD(audit_backlog_wait);struct audit_buffer *audit_log_start(struct audit_context *ctx, gfp_t gfp_mask,int type){struct audit_buffer*ab= NULL;struct timespect;unsigned intserial;int reserve;unsigned long timeout_start = jiffies; //开始的时间if (!audit_initialized)//如果已初始化,就直接退出return NULL;if (unlikely(audit_filter_type(type)))return NULL;if (gfp_mask & __GFP_WAIT)reserve = 0;elsereserve = 5; /*允许调用者多出5个条目*/ //当链表中审计缓冲区数超出上限时,进程等待auditd处理链表中缓冲区while (audit_backlog_limit&& skb_queue_len(&audit_skb_queue) > audit_backlog_limit + reserve) {if (gfp_mask & __GFP_WAIT && audit_backlog_wait_time && time_before(jiffies, timeout_start + audit_backlog_wait_time)) {/* 等待后台进程auditd从队列中处理部分缓冲区 */DECLARE_WAITQUEUE(wait, current);set_current_state(TASK_INTERRUPTIBLE); //设置当前进程的状态为可中断等待状态add_wait_queue(&audit_backlog_wait, &wait); //将当前进程加入等待队列if (audit_backlog_limit && skb_queue_len(&audit_skb_queue) > audit_backlog_limit)schele_timeout(timeout_start + audit_backlog_wait_time - jiffies);//调度__set_current_state(TASK_RUNNING);//设置当前进程为运行状态remove_wait_queue(&audit_backlog_wait, &wait);continue;} //检查每秒发送的记录数不能超过上限,以防止受非法攻击if (audit_rate_check())printk(KERN_WARNING "audit: audit_backlog=%d > " "audit_backlog_limit=%d\n", skb_queue_len(&audit_skb_queue), audit_backlog_limit);audit_log_lost("backlog limit exceeded");audit_backlog_wait_time = audit_backlog_wait_overflow;wake_up(&audit_backlog_wait);return NULL;}ab = audit_buffer_alloc(ctx, gfp_mask, type);//申请审计缓冲区if (!ab) {audit_log_lost("out of memory in audit_log_start");return NULL;}//得到当前时间存入t,计算审计记录的序列号,存入serialaudit_get_stamp(ab->ctx, &t, &serial); //将时间戳和序列号写入审计记录audit_log_format(ab, "audit(%lu.%03lu:%u): ", t.tv_sec, t.tv_nsec/1000000, serial);return ab;}函数audit_buffer_alloc申请审计缓冲区,先尝试从空闲链表上取下一个缓冲区,如果空闲链表中没有,就分配一个缓冲区。然后,填充netlink消息头。该函数列出如下: static DEFINE_SPINLOCK(audit_freelist_lock);//定义自旋锁,用于锁住链表audit_freeliststatic struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx,gfp_t gfp_mask, int type){unsigned long flags;struct audit_buffer *ab = NULL;struct nlmsghdr *nlh; //从空闲链表中得到一个缓冲区spin_lock_irqsave(&audit_freelist_lock, flags);//加锁if (!list_empty(&audit_freelist)) {ab = list_entry(audit_freelist.next,struct audit_buffer, list);list_del(&ab->list);--audit_freelist_count;}spin_unlock_irqrestore(&audit_freelist_lock, flags);//释放锁 //如果空闲链表中没有空闲缓冲区成员,就分配一个缓冲区if (!ab) {ab = kmalloc(sizeof(*ab), gfp_mask);if (!ab)goto err;}ab->skb = alloc_skb(AUDIT_BUFSIZ, gfp_mask);//分配套接字缓冲区if (!ab->skb)goto err;ab->ctx = ctx;ab->gfp_mask = gfp_mask; //扩展套接字缓冲区skb的已使用数据区,将netlink消息头数据nlmsghdr加到skbnlh = (struct nlmsghdr *)skb_put(ab->skb, NLMSG_SPACE(0));nlh->nlmsg_type = type;nlh->nlmsg_flags = 0;nlh->nlmsg_pid = 0;nlh->nlmsg_seq = 0;return ab;err:audit_buffer_free(ab);return NULL;}2.函数audit_log_format函数audit_log_format将一个审计消息按格式写入审计缓冲区,参数ab为审计缓冲区,参数fmt为格式化的字符串。其列出如下:void audit_log_format(struct audit_buffer *ab, const char *fmt, ...){va_list args;if (!ab)return;va_start(args, fmt);audit_log_vformat(ab, fmt, args);va_end(args);}函数audit_log_vformat将一个审计消息按格式写入套接字缓冲区中,如果审计缓冲区没有足够的空间,就扩展套接字缓冲区的数据域。由于printk缓冲区为1024,扩展的套接字缓冲区最小应为1024。函数audit_log_vformat列出如下: static void audit_log_vformat(struct audit_buffer *ab, const char *fmt, va_list args){int len, avail;struct sk_buff *skb;va_list args2;if (!ab)return;BUG_ON(!ab->skb);skb = ab->skb;avail = skb_tailroom(skb);//计算套接字缓冲区的空闲数据空间if (avail == 0) {//如果套接字缓冲区没有空闲数据空间,扩展空间avail = audit_expand(ab, AUDIT_BUFSIZ);// AUDIT_BUFSIZ为1024,if (!avail)goto out;}va_(args2, args);len = vsnprintf(skb->tail, avail, fmt, args);//将信息写入到缓冲区if (len >= avail) {//如果实际信息长度比可用的缓冲区大,扩展空间/* 由于printk缓冲区是1024,因此,扩展空间最少为1024 */avail = audit_expand(ab,max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail));if (!avail)goto out;len = vsnprintf(skb->tail, avail, fmt, args2); //将审计信息写入到缓冲区}if (len > 0)skb_put(skb, len); //将写入信息的数据缓冲区附加到skb上out:return;}
函数audit_expand扩展在审计缓冲区中的套接字缓冲区,扩展成功,返回可用的空间大小,扩展失败返回0,表示没有空间。参数ab表示审计缓冲区的指针,参数extra表示加到套接字缓冲区skb尾部的缓冲区空间大小。函数audit_expand列出如下:static inline int audit_expand(struct audit_buffer *ab, int extra){struct sk_buff *skb = ab->skb;int ret = pskb_expand_head(skb, skb_headroom(skb), extra, ab->gfp_mask);if (ret < 0) {audit_log_lost("out of memory in audit_expand");return 0;}return skb_tailroom(skb);//返回可用的缓冲区空间大小}3.函数audit_log_end当进程完成了将审计记录写入审计缓冲区的操作时,它调用函数audit_log_end将套接字缓冲区中的审计记录数据发送给用户空间后台进程,由后台进程写入到log文件。如果审计后台进程存在,使用netlink机制传输数据,由审计后台将套接字缓冲区中的审计记录数据写入审计文件audit.log中;如果审计后台不存在,使用函数printk记录数据,然后由日志后台进程将数据写入到日志文件中。当数据发送完成后,函数audit_log_end唤醒等待队列kauditd_wait。有些进程因为审计套接字缓冲区链表上的缓冲区数量超过上限而在队列kauditd_wait等待,当其他进程发送了数据时,应唤醒这些等待进程。函数audit_log_end列出如下:void audit_log_end(struct audit_buffer *ab){if (!ab)return;if (!audit_rate_check()) {//检查审计系统的传输速度,如果netlink机制传输速度超过上限,则返回错误audit_log_lost("rate limit exceeded");} else {if (audit_pid) {//如果审计后台的进程ID存在,使用netlink机制传输数据struct nlmsghdr *nlh = (struct nlmsghdr *)ab->skb->data;nlh->nlmsg_len = ab->skb->len - NLMSG_SPACE(0);skb_queue_tail(&audit_skb_queue, ab->skb);ab->skb = NULL;wake_up_interruptible(&kauditd_wait);//发送了数据,唤醒等待队列} else {//使用printk记录数据printk(KERN_NOTICE "%s\n", ab->skb->data + NLMSG_SPACE(0));}}audit_buffer_free(ab);}

⑺ audit的tar包安装过程中出现两个错误,不知道怎么解决,刚开始学LINUX,不懂,谁可以帮我

没有贴出错误信息
---------------
可能是你的编译目录有问题
linux/audit.h文件一定是有的,没找到
你解包后要进入这个目录的

热点内容
c缓存池 发布:2025-01-20 13:23:45 浏览:6
数控编程帅气宝塔图纸 发布:2025-01-20 13:22:15 浏览:871
共享文件夹加密软件 发布:2025-01-20 13:08:41 浏览:40
标识符是怎样存储的 发布:2025-01-20 13:08:39 浏览:894
怎么看安卓大屏什么牌子 发布:2025-01-20 13:08:35 浏览:258
ios开发java 发布:2025-01-20 13:02:42 浏览:881
速腾有侧灯的是哪个配置 发布:2025-01-20 13:01:53 浏览:371
社保用户名和密码都忘记了怎么办 发布:2025-01-20 12:55:55 浏览:321
最优存储形式是什么 发布:2025-01-20 12:51:32 浏览:27
centos编译php7 发布:2025-01-20 12:33:52 浏览:920