当前位置: 首页 > news >正文

监视你的脚本:自动 Linux 活动审计

大家好!我是大聪明-PLUS

在本文中,我想讨论一下 auditd,这是一个记录每个操作的实用 Linux 审计工具,以及一个可以将日志转换为可读报告和警报的脚本。

缺乏用户活动监控的 Linux 服务器就像一扇扇敞开的窗户。auditd 可以帮助解决以下问题:

  • 未经授权的访问(例如,谁使用了它以及何时使用sudo

  • 可疑命令(rm -rf、更改权限、访问任何文件)

  • 事件调查(服务器崩溃前谁发布了什么内容)

  • 遵守公司标准(也许信息安全需要记录操作或者您更喜欢控制)

解决方案:auditd+ 用于分析和警报的 Python 脚本。

设置 auditd

安装并启用 auditd

  • 让我们检查它是否已安装auditd

sudo apt install auditd -y  
sudo yum install audit      
  • 运行并添加到启动:

sudo systemctl enable --now auditd
sudo systemctl status auditd  

基本 auditctl 命令:

  • 查看当前设置的规则:

    sudo auditctl -l
  • 添加临时规则(重启后会消失):

    sudo auditctl -w /etc/passwd -p rwa -k sensitive_files

    在哪里:

    • -w- 文件/目录的路径。

    • -p- 权限(r — 读取、w — 写入、x — 执行、a — 更改属性)。

    • -k- 键(用于过滤日志的标签)。

  • 清除所有规则:

    sudo auditctl -D
  1. 常设审计规则

规则存储在 中/etc/audit/rules.d/audit.rules。示例配置:


-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes-w /usr/bin/sudo -p x -k sudo_usage-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k file_deletion-w /bin/bash -p x -k shell_commands
-w /bin/zsh -p x -k shell_commands
-w /bin/sh -p x -k shell_commands-w /etc/ -p wa -k etc_changes

我们应用以下规则:

sudo auditctl -R /etc/audit/rules.d/audit.rules

查看和分析日志

  1. 处理日志的基本实用程序

  • ausearch— 通过日志搜索。

    sudo ausearch -k sudo_usage  
    sudo ausearch -m EXECVE      
  • aureport— 报告生成。

sudo aureport --summary     
sudo aureport -f            
sudo aureport -u            
  1. 审计日志示例

标准条目/var/log/audit/audit.log

type=SYSCALL msg=audit(1620000000.123:456): arch=c000003e syscall=59 success=yes exit=0 a0=123 a1=456 a2=789 a3=0 items=2 ppid=1234 pid=5678 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 comm="sudo" exe="/usr/bin/sudo" key="sudo_usage"

分析:

  • uid=0— 该命令以 root 身份执行。

  • comm="sudo"— 命令已启动sudo

  • key="sudo_usage"— 规则标签。

用于分析和警报的 Python 脚本

日志解析脚本

  • 我们创造audit_monitor.py

#!/usr/bin/env python3
import subprocess
import re
from datetime import datetimedef parse_audit_log():alerts = []for key, message in ALERT_RULES.items():cmd = f"ausearch -k {key} --raw | aureport -i -f"logs = subprocess.getoutput(cmd).split('\n')for line in logs:if not line:continuetime_match = re.search(r"msg=audit\((\d+\.\d+)", line)user_match = re.search(r"auid=(\d+)", line)cmd_match = re.search(r'exe="([^"]+)"', line)if time_match and user_match:timestamp = datetime.fromtimestamp(float(time_match.group(1)))user = f"UID {user_match.group(1)}"details = f"{timestamp} | {user} | {line}"alerts.append(message.format(details=details))return alertsif __name__ == "__main__":alerts = parse_audit_log()if alerts:print("\n".join(alerts))

使用示例:

  • 让我们测试一下触发器:

    sudo cat /etc/shadow
  • 运行脚本:

    chmod +x audit_monitor.py
    ./audit_monitor.py

    示例输出:

    Доступ к /etc/shadow: 2023-05-01 12:00:00 | UID 1000 | type=SYSCALL ... exe="/usr/bin/cat"
  • 添加到 cron 每 5 分钟检查一次:

    (crontab -l ; echo "*/5 * * * * /path/to/audit_monitor.py >> /var/log/audit_monitor.log") | crontab -

与 Telegram 集成以接收警报

  1. 让我们创建一个 Telegram 机器人:

  2. 我们来修改一下脚本:

    • 让我们取消注释块并替换我们自己的和。requests.post()TOKENchat_id

结论

本文介绍了一种auditd用于监控关键操作的设置,描述了一个用于分析日志的脚本,并探讨了向 Telegram 添加警报的可能性。您可以自行决定此工具的用途(如果有)。我很乐意听取您对此方法的实用价值的评论并进行讨论。

http://www.dtcms.com/a/560895.html

相关文章:

  • 15.1.2.linux常见操作用例
  • 【Java Web学习 | 第五篇】CSS(4) -盒子模型
  • ubuntu samba 快速安装启用
  • 【数据结构】用顺序表实现通讯录
  • cpp / c++零基础就业学习一站式学习平台
  • FreeRTOS(二)
  • 开源AI智能名片链动2+1模式S2B2C商城小程序商业化路径优化研究
  • 中国优秀的企业网站做搜狐网站页面
  • 【效率工具】EXCEL批注提取工具
  • Python openpyxl 设置Excel单元格公式和工作簿合并
  • 作文生成器网站北京seo招聘信息
  • 常州网站设计制作贵美商城网站的首页怎么做代码
  • 新媒体矩阵系统全景解析:赋能企业数字化营销的智能引擎
  • 多目标优化问题在适应度计算中的支配矩阵
  • 从零开始的云原生之旅(九):云原生的核心优势:自动弹性伸缩实战
  • 【Swift】LeetCode 240.搜索二维矩阵 II
  • 矩阵(板子)
  • 防火墙的内容补充
  • C++类和对象(下):初始化列表
  • 建筑工程找活网站wordpress文章新窗口
  • 沭阳城乡建设局网站做外国网站百度搜到
  • java-接口适配器模式 jsk8 接口默认实现
  • program.cs文件详解
  • 深圳市企业网站seo做东西的网站有那些
  • 京东测开面经整理(日常实习)
  • 大文件上传
  • 做ppt找图片网站推广网发布的信息准确吗
  • Linux内核POSIX文件锁机制深度解析
  • 从“CPU 烧开水“到优雅暂停:Go 里 sync.Cond 的正确打开方式
  • 大模型系列——Excel数据治理新思路:引入智能体实现自动纠错【Python+Agent】