-
安全产品
-
-
-
一种Linux系统下实时监控用户权限变化的方法
发布时间:
2019-12-27
来源:
作者:
访问量:
218
当Linux系统被攻击者攻破后,往往会在系统中注入隐藏的系统账户以进行后续的破坏性攻击,通过监控系统中的用户及用户权限的变化,可以及时发现黑客的入侵行为,进而阻断后续的攻击。
Linux操作系统会为每个用户的身份分配唯一用户标识,用户可属于多个用户组。系统的每个用户都有唯一的用户名和与之对应的整数型用户ID(UID)。系统中的密码文件/etc/passwd为每个用户都定义了一行记录,除了上述两项信息外,该记录还包含如下信息。
-
组ID: 用户所属第一个组的整数型组ID
-
主目录: 用户登录后所居于的初始目录。
-
登录shell: 执行以解释用户命令的程序名称
/etc/passwd 记录完整格式: 用户名:密码(X):UID(用户ID):GID(组ID):注释字段:超始目录:shell程序。
出于管理的目的,特别是为实现对资源的共享访问,将多个用户分组是常见的做法。例如当多个用户需要对同一个文件做修改时,就可以把它们编为同一组,以允许组内的所有成员修改此文件。
Linux系统中的普通文件会根据文件属主,文件所属的组及其他用户来分配权限。每一类用户可授予的权限如下:
-
Read: 可阅读文件的内容
-
Write: 可更改文件的内容
-
Execute 可以执行文件
通过修改文/etc/passwd文件中用户UID或组ID,可以使得用户原本无法访问或执行文件变得可访问或可执行,从而使用户具备本不应该拥有权限。通过实时监控/etc/passwd文件的变动,可以及时发现新建用户,改变用户权限等行为,通过判断是否为正常的创建用户及用户权限更改,能够及时发现黑客的入侵行为。Linux内核从2.6.13开始支持inotify特性,它能够监控文件系统,并及时向应用程序发出相应的事件信息,比如文件的读/写/删除等操作。Inotify支持的事件包含以下几种:
IN_ACCESS 文件被访问
IN_ATTRIB 文件元数据改变
IN_CLOSE_WRITE 关闭为了写入而打开的文件
IN_CLOSE_NOWRITE 关闭了以只读方式打开的文件
IN_CREATE 在受监控目录内创建了文件/目录
IN_DELETE 在受监控目录内删除文件/目录
IN_DELETE_SELF 删除受监控目录/文件本身
IN_MODIFY 文件被修改
IN_MOVE_SELF 移动受监控目录/文件本身
IN_MOVED_FROM 文件移出到受监控目录之外
IN_MOVED_TO 文件移入受监控目录
IN_OPEN 文件被打开
IN_IGNORED 监控项为内核或应用程序移除
当内核监测到相应的事件时,发产生相应消息,其消息的格式如下:
-
wd 用于标识监控的文件或目录
-
mask 用于识别发生的事件
-
cookie 用于识别有关联关系的事件,譬如目录内的文件重命名
-
len name 字节数
-
name 当受监控目录中有文件发生事件时,name字段返回一个以空字符结尾的字符串,以标识文件。若监控对象自身发生事件,则不使用name字段,此时len为0。
从监控的事件上看,既可以监控/etc/passwd文件本身,也可以监控/etc/目录,再对监控的信息做过滤,对/etc/passwd文件消息做处理。直接监控/etc/passwd文件只需要处理针对/etc/passwd文件本身消息,但是有些编辑器在修改文件的时候,会移动原文件,创建新的临时文件,修改完成后再把临时文件重命名原来的文件。所以直接监控/etc/passwd文件,需要处理移动,重命名,文件被删除等种种事件,导致事件处理逻辑复杂。而监控/etc/目录时,只需要对事件中name为passwd的消息进行处理,从而避免了各种移动,重命名,删除等复杂事件处理逻辑,但由于会接收整个目录消息,导致接收事件较多,程序效率较低。此处为了便于描述,故采用监控/etc/目录方法,当需要考虑资源限制时,最好直接监控/etc/passwd文件。监控/etc/目录时,程序主体运行逻辑如下:
天地和兴
上一条:
下一条:
相关资讯

关注我们