过程控制

过程控制

假设我有一个文件,并且该文件的权限发生了变化。我想要记录、报告甚至要求对该文件的所有更改进行身份验证(即使以 root 身份)。也就是说,我不希望在没有先征得我的许可的情况下以任何方式更改此文件,并且我想要有关请求更改的进程、用户、时间、内存分配的详细信息。任何试图访问该文件的行为都必须报告。

在 Windows 中我使用严格进程控制来实现这一点。如何在 Linux 中实现这种级别的进程控制?

答案1

对该文件的所有更改都要求身份验证(即使以 root 身份)

我觉得这是不可能的。绝对不是完全防水的。超级用户是系统上的上帝。


要监视文件或文件夹,可以使用以下命令:

sudo apt-get install auditd    # if not already installed

sudo auditctl -w <path_to_file> -p w -k <filter_key>
sudo ausearch -k <filter_key>

例子:

$ sudo auditctl -w /etc  -p w -k etc
$ sudo touch /etc/test
$ sudo ausearch -k etc
----
time->Tue Apr 21 15:40:36 2015
type=CONFIG_CHANGE msg=audit(1429623636.816:8542): auid=4294967295 ses=4294967295 op="add_rule" key="etc" list=4 res=1
----
time->Tue Apr 21 15:40:45 2015
type=PROCTITLE msg=audit(1429623645.648:8547): proctitle=746F756368002F6574632F74657374
type=PATH msg=audit(1429623645.648:8547): item=1 name="/etc/test" inode=136296 dev=08:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
type=PATH msg=audit(1429623645.648:8547): item=0 name="/etc/" inode=131073 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
type=CWD msg=audit(1429623645.648:8547):  cwd="/"
type=SYSCALL msg=audit(1429623645.648:8547): arch=c000003e syscall=2 success=yes exit=3 a0=7ffd8f419d9d a1=941 a2=1b6 a3=691 items=2 ppid=7399 pid=7400 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=4294967295 comm="touch" exe="/bin/touch" key="etc"

man auditctl

-p [r|w|x|a]
      Describe  the  permission  access  type that a file system watch
      will trigger on. r=read, w=write, x=execute, a=attribute change.
      These  permissions  are  not  the standard file permissions, but
      rather the kind of syscall that would do this kind of thing. The
      read & write syscalls are omitted from this set since they would
      overwhelm the logs. But rather for reads  or  writes,  the  open
      flags are looked at to see what permission was requested.

答案2

答案3

在文件上设置不可变属性将有助于防止对其进行任何更改。至于监控 - 您可能可以通过多种方式实现它,首先是一些 shell 脚本验证大小、校验和、修改时间或您认为有用的任何其他内容,最后是一些更复杂的完整性检查解决方案,如 tripwire 或目前推荐的任何解决方案。然而,对于一个文件来说,这可能有点过头了。(并且不确定 tripwire 目前是否真的有点过时 - 如果需要监控更改,寻找这种解决方案可能还是不错的)

但这可能还没有穷尽所有选择。:)

相关内容