毕业设计做网站题目推广页面制作

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

毕业设计做网站题目,推广页面制作,wordpress数字链接出现404,会做网站开发 但是不会二次开发linux监控文件操作行为 使用 auditd 系统 auditd 是Linux系统的一个安全和审计系统#xff0c;它能够跟踪系统上发生的安全相关事件。要使用 auditd 来监控文件#xff0c;你需要首先确保 auditd 已经安装并且运行在你的系统上。 然后#xff0c;你可以使用 auditctl 命令…linux监控文件操作行为 使用 auditd 系统 auditd 是Linux系统的一个安全和审计系统它能够跟踪系统上发生的安全相关事件。要使用 auditd 来监控文件你需要首先确保 auditd 已经安装并且运行在你的系统上。 然后你可以使用 auditctl 命令来添加监控规则 sudo auditctl -w /path/to/your/file -p warx -k your-key #-w 指定要监控的文件路径。 #-p 设置权限过滤warx 分别代表写入w、属性更改a、读取r和执行x。 #-k 设置一个关键词以便于后续通过这个关键词来搜索和过滤审计日志。之后你可以通过 ausearch 或 aureport 命令来查询和报告这个文件的审计日志 sudo ausearch -k your-key 操作步骤 安装启动 确保 auditd 已安装并运行。 首先确保你的系统上已经安装了 auditd。可以通过运行以下命令来检查 auditd 服务的状态 sudo systemctl status auditd如果服务未运行使用以下命令启动并设置为开机启动 sudo systemctl start auditd sudo systemctl enable auditd配置监控规则 需要添加监控规则来跟踪对 /etc/pam.d/common-A 和 /etc/lightdm/lightdm-B 文件的更改。由于系统重启后之前使用 auditctl 命令添加的规则不会保留因此你需要将这些规则添加到配置文件中。 编辑 /etc/audit/rules.d/audit.rules 文件或者如果这个文件不存在可能需要编辑 /etc/audit/audit.rules然后添加以下行 -w /etc/pam.d/common-A -p wa -k auth-change -w /etc/lightdm/lightdm-B -p wa -k autologin-change-w 指定要监控的文件路径-p wa 指定监控写入w和属性a更改-k 后面跟随的是一个自定义的关键字用于之后过滤和搜索审计日志。 应用并重启 auditd 修改配置文件后重启 auditd 服务以应用新的监控规则 sudo systemctl restart auditd不想重启服务可以使用 auditctl 工具加载新规则 sudo auditctl -R /etc/audit/rules.d/audit.rules编辑的是 /etc/audit/audit.rules 文件 sudo auditctl -R /etc/audit/audit.rules检查审计日志 在系统重启并且文件可能发生变化后使用以下命令来检查相关的审计日志 sudo ausearch -k auth-change sudo ausearch -k autologin-change命令解释 -w /etc/pam.d/common-A -p wa -k auth-change -w /etc/lightdm/lightdm-B -p wa -k autologin-change第一行监控 /etc/pam.d/common-A 文件的更改 -w /etc/pam.d/common-A这部分指定了要监控的文件路径即 /etc/pam.d/common-A。-w 参数用于指定监控哪个文件或目录。 -p wa这部分指定了要监控的操作类型。-p 参数后面跟着的是一系列标志代表不同类型的操作 w 代表写入操作即当文件被修改时。 a 代表属性更改即当文件的元数据如权限、所有权等被修改时。 -k auth-change这部分为当前的监控规则指定了一个关键词key即 auth-change。在审计日志中可以通过这个关键词来过滤和搜索与此规则相关的事件。 第二行监控 /etc/lightdm/lightdm-B 文件的更改 -w /etc/lightdm/lightdm-B指定了另一个要监控的文件路径即 /etc/lightdm/lightdm-B。同样使用 -w 参数。 -p wa与第一行相同指定了要监控的操作类型为写入和属性更改。 -k autologin-change为这个监控规则指定了一个不同的关键词即 autologin-change。这允许你在审计日志中区分由于不同规则触发的事件。 总结 通过添加这些规则到 auditd 的配置中系统会监控 /etc/pam.d/common-A 和 /etc/lightdm/lightdm-B 这两个文件的写入和属性更改操作。任何对这些文件进行的修改都会被记录下来并且可以通过指定的关键词来检索相关的审计日志记录。这对于跟踪系统配置更改、增强安全性和排查问题非常有用。 关键词key的定义 关键词key在这个上下文中是完全自定义的。当你使用 -k 参数在 auditd 规则中指定一个关键词时这个关键词用于标记和识别与该规则相关的审计事件。 这意味着你可以使用任何有意义的字符串作为关键词以便于后续在审计日志中快速过滤和查找相关事件。 在提供的例子中 -k auth-change 中的 auth-change 是一个自定义关键词用于标识和过滤与 /etc/pam.d/common-auth 文件更改相关的审计事件。 -k autologin-change 中的 autologin-change 是另一个自定义关键词用于标识和过滤与 /etc/lightdm/lightdm-autologin 文件更改相关的审计事件。 选择关键词时建议使用既简洁又能准确描述监控规则目的的字符串。 问题处理 rootgreatwall-pc:/home/greatwall# sudo ausearch -k auth-change no matches rootgreatwall-pc:/home/greatwall# sudo ausearch -k autologin-changec no matches可能有几个原因 尚未发生任何匹配的事件 如果您刚刚设置了审计规则而且 /etc/pam.d/common-auth 或 /etc/lightdm/lightdm-autologin 文件尚未发生任何被监控的更改如写入或属性更改那么审计日志中自然不会有匹配的记录。 审计规则未正确加载或应用 可能是由于审计规则没有被正确添加到 /etc/audit/audit.rules 或 /etc/audit/rules.d/ 目录下的文件中或者添加后没有重启 auditd 服务来应用新规则。请确保按照以下步骤操作 将监控规则正确添加到配置文件中。 使用命令 sudo systemctl restart auditd 重启 auditd 服务。 3. 错误的关键词 请确认在使用 ausearch 命令时输入的关键词与您添加到审计规则中的关键词完全一致。在你提供的命令中第二个命令末尾出现了拼写错误autologin-changecno matches 应为 autologin-change。请确保使用正确的关键词执行搜索。 审计日志被旋转或清理 如果系统的审计日志被旋转即新的日志文件被创建旧的日志文件被移动、压缩或删除或者手动清理可能会导致之前的记录丢失。可以检查 /var/log/audit/ 目录下是否有旧的审计日志文件存在。 解决步骤 确认文件是否有过更改尝试可以手动修改一下被监控的文件以触发审计事件。 检查并确认审计规则是否已正确加载可以使用 sudo auditctl -l 查看当前加载的规则。 确保使用正确且一致的关键词进行搜索。 检查 /var/log/audit/ 目录下是否有相关的审计日志文件。 结果示例分析 //记录了一个假设的事件其中某个进程尝试修改 /etc/ssh/sshd_config 文件 time-Tue Apr 16 15:30:22 2024 typePROCTITLE msgaudit(1713270622.123:495): proctitle2F7573722F62696E2F7669202F6574632F7373682F737368645F636F6E666967 typePATH msgaudit(1713270622.123:495): item1 name/etc/ssh/sshd_config inode1052773 dev08:02 mode0100600 ouid0 ogid0 rdev00:00 nametypeNORMAL cap_fp0 cap_fi0 cap_fe0 cap_fver0 cap_frootid0 typePATH msgaudit(1713270622.123:495): item0 name/etc/ssh/ inode1052672 dev08:02 mode040755 ouid0 ogid0 rdev00:00 nametypePARENT cap_fp0 cap_fi0 cap_fe0 cap_fver0 cap_frootid0 typeCWD msgaudit(1713270622.123:495): cwd/home/user typeSYSCALL msgaudit(1713270622.123:495): archc000003e syscall257 successyes exit3 a0ffffff9c a17ffe01b3f110 a2241 a31b6 items2 ppid2891 pid2892 auid1000 uid0 gid0 euid0 suid0 fsuid0 egid0 sgid0 fsgid0 tty(none) ses4 commvi exe/usr/bin/vi keysshd-config-change时间戳 time-Tue Apr 16 15:30:22 2024: 事件发生的时间是 2024 年 4 月 16 日15:30:22。 进程标题 (PROCTITLE) proctitle…: 这是进程标题的十六进制表示解码后为 /usr/bin/vi /etc/ssh/sshd_config。这意味着有一个进程启动了 vi 编辑器来编辑 /etc/ssh/sshd_config 文件。 路径 (PATH) item1 指向被修改的文件 /etc/ssh/sshd_config。文件的 inode、设备号、文件权限0600 表示仅所有者有读写权限、所有者和组 ID 都被记录下来。item0 指向父目录 /etc/ssh/并记录了该目录的相关信息。 当前工作目录 (CWD) cwd“/home/user”: 在执行相关操作时进程的当前工作目录是 /home/user。 系统调用 (SYSCALL) 这部分提供了系统调用的详细信息 syscall257: 表示执行的系统调用编号为 257这通常与文件操作有关例如 openat 在某些平台上。successyes: 表示系统调用执行成功。exit3: 系统调用的返回值。a0…, a1…, a2…, a3…: 这些是系统调用的参数。ppid2891, pid2892: 表示父进程 ID 为 2891当前进程 ID 为 2892。auid1000: 审计用户 ID启动进程的用户为 1000。uid0, gid0, euid0, suid0, fsuid0, egid0, sgid0, fsgid0: 这些字段显示进程以 root 用户UID 和 GID 均为 0的权限执行。tty(none), ses4: 没有使用终端tty会话 ID 为 4。comm“vi”: 命令名称为 vi。exe“/usr/bin/vi”: 执行的程序路径为 /usr/bin/vi。key“sshd-config-change”: 这个事件被标记为 sshd-config-change这是在设置审计规则时指定的关键词用于过滤和识别与 SSHD 配置更改相关的审计事件。 使用 inotifywait 命令 fanotify 是 Linux 内核中用于文件系统监控的一个特性它允许程序监听文件系统事件如文件的打开、关闭等。与 inotify 相比fanotify 提供了对整个文件系统或单个挂载点的监控能力而不仅仅是单个文件或目录。这使得 fanotify 非常适合实现如病毒扫描、数据备份等需要广泛文件系统访问的应用。然而直接使用 fanotify 进行某个特定文件或进程的监控相对复杂因为它设计的初衷是对文件系统级别的事件进行监控。 inotifywait 是 inotify-tools 工具集中的一个命令它可以用来监视文件系统事件。通过使用 inotifywait你可以监控文件或目录的变化事件。 首先需要安装 inotify-tools sudo apt-get install inotify-tools # Debian/Ubuntu sudo yum install inotify-tools # CentOS/RHEL然后使用下面的命令来监控对某个文件的操作 inotifywait -m /path/to/your/file #-m 参数表示持续监控模式。这将会显示所有对该文件的操作事件但注意这不会直接显示哪个进程进行了操作。 使用 fanotify fanotify 是一个较新的Linux内核功能用于监控文件系统事件。它类似于 inotify但提供了一些额外的功能和更大的灵活性。使用 fanotify 需要编写特定的程序代码来利用其API。 使用 fanotify 的基本步骤 要使用 fanotify 来实现对某个文件或进程的监控你需要编写一个 C 程序因为 Linux 中的 fanotify 接口是通过系统调用提供给用户空间的。 以下是使用 fanotify 的基本步骤 初始化 fanotify 通过调用 fanotify_init 函数来初始化一个 fanotify 实例。这个调用会返回一个文件描述符用于后续的所有 fanotify 操作。 标记Mark监控的文件或目录 使用 fanotify_mark 函数来指定你想要监控的文件系统对象如整个挂载点或特定路径。你可以指定对哪些事件感兴趣比如文件被访问FAN_ACCESS、文件被修改FAN_MODIFY等。 读取事件 使用 read 系统调用来读取 fanotify 文件描述符获取发生的事件。每个事件都会以 fanotify_event_metadata 结构返回从中你可以获取到事件的详细信息包括被操作文件的路径。 处理事件 根据读取到的事件信息进行相应的处理。例如你可以记录下哪些进程访问了监控的文件。 关闭 fanotify 实例 使用完毕后通过关闭文件描述符来结束 fanotify 会话。
示例代码 以下是一个简单的 fanotify 示例代码片段展示了如何初始化 fanotify并监控整个文件系统的写入操作 #include stdio.h #include stdlib.h #include fcntl.h #include sys/fanotify.h #include limits.h #include unistd.hint main(void) {int fd;fd fanotify_init(FAN_CLOEXEC | FAN_CLASS_CONTENT, O_RDONLY);if (fd 0) {perror(fanotify_init);exit(EXIT_FAILURE);}if (fanotify_mark(fd, FAN_MARK_ADD | FAN_MARK_MOUNT,FAN_MODIFY, AT_FDCWD, /) 0) {perror(fanotify_mark);exit(EXIT_FAILURE);}// 这里需要添加代码来读取和处理事件// …close(fd);return 0; } 展示了如何设置 fanotify 来监控根目录 (“/”) 下所有挂载点的修改操作。 在实际使用中你需要根据自己的需求来调整监听的路径和事件类型并添加逻辑来读取和处理事件数据。 选择方法 如果需要详细的审计跟踪包括哪个用户、哪个进程推荐使用 auditd。 如果只需要简单地监视文件或目录变化inotifywait 是一个简单易用的选择。 对于需要高级功能和灵活性的场景可能需要考虑使用 fanotify 并自行编写程序。