首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 fpm(2)

精通 fpm(2)

修改 SUID 许可在运行 fpm 之前,确定您希望实现的安全级别。例如,如果您希望实现中级安全级别,您首先需要预览 SUID 修改会影响到的文件,这些文件位于:/usr/lib/security/fpm/data/med_fpm_list。
然后运行 fpm 预览,了解实现中级安全策略后的情况,如下所示
1
2
3
4
5
6
# fpm -l medium -p
chmod 0555 /sbin/helpers/jfs2/backbyinode
chmod 0550 /sbin/helpers/jfs2/diskusg
chmod 0555 /sbin/helpers/jfs2/restbyinode
..
..




输出显示了新修改过的文件许可,也就是指出哪些文件移除了 SUID 位和生成的新许可。由于是在预览模式中运行,因此没有发生任何修改。如果对将移除 SUID 位的文件满意,您可以继续处理并对它们执行真正的移除操作:
1
2
3
# fpm -l medium
..
..




一个或多个文件已经是安全的。因此,当前的许可可能不匹配默认许可。如果您需要返回到运行该命令之前的许可快照,那么运行命令:/usr/bin/fpm -l default -f /var/security/fpm/log/12062011_17:48:35 fpm 将继续移除 SUID 许可。
如果希望获得详细输出,也就是说,类似于使用预览选项时的输出,那么使用 v 参数。
现在可以真正地从文件中移除它们的 SUID 位。在 fpm 输出中,注意用于恢复所作的任何变更的命令。初始设置位于一个输出文件中,如上面的例子所示。
接下来,查看一些从其中真正移除了 SUID 位的文件。
1
2
# ls -l /usr/sbin/chdev
-r-xr-x---    1 root     system        27496 Mar 22 2011  /usr/sbin/chdev




最后,确定在使用 fpm 时您的安全级别为中级,只需运行以下命令。
1
2
# fpm -s
Medium level security.




下一个任务是进行重复测试,确保您的应用程序和操作环境没有受到 SUID 变化的影响。
恢复如果实现了中级安全级别后发现效果并不理想,只需对文件许可执行恢复操作。日志文件位于 /var/security/fpm/log 目录中。
日志文件内容的格式为:
1
<suid octal permission to restore> < full path/file-name> <current octal permission>




如下所示为日志文件的样例输出,供您参考。
1
2
3
4
5
6
7
# cat 12062011_17:48:35
4550 /usr/sbin/cfgmgr 0550
4550 /usr/sbin/chcod 0550
4550 /usr/sbin/chcons 0550
4550 /usr/sbin/chdev 0550






通过使用前面的中级安全级别修改生成的日志文件,我们可以恢复到此前的时间点。使用 -f 选项并指定安全级别为默认级别:
1
# fpm -l default  -f /var/security/fpm/log/12062011_17:48:35




接下来,通过查看已恢复的许可文件确认修改。
1
2
# ls -l /usr/sbin/chdev
-r-sr-x---    1 root     system        27496 Mar 22 2011  /usr/sbin/chdev




接着,查看安全级别的状态。它将说明为自定义,因为已经从此前的备份中恢复了 SUID 列表。
1
2
# fpm -s
Customized level security.




虽然 AIX 提供了一个列表,其中指定了针对不同安全设置需要包含的文件,但是您可以进一步修改来包含或排除特定的文件。我去掉了在中级安全级别文件 /usr/lib/security/fpm/data/med_fpm_list 中包含的许多 SUID 程序,并以此作为我的标准设置。这样做非常适合系统管理员的角色。
要将 SUID 恢复到出厂默认值(即刚刚安装 AIX 时的 SUID 设置),使用下面的命令:
1
# fpm -l default




然后,确认新安全级别的状态。
1
2
# fpm -s
Default level security.




自定义 SUID 修改要向列表添加自定义的文件,即包含应用程序和其他系统 SUID,您有几个不同的选择。
  • 创建一个列表,其中包含将要移除 SUID 的文件的名称。
  • 创建一个列表,其中包含将要恢复 SUID 的文件的名称。
在 /usr/lib/security/fpm 目录中,有一个称为 custom 的子目录,在该子目录中又包含以下目录:defaultmediumhigh
如果您需要恢复到原来的 SUID 程序设置,您也可以包含额外的文件,其中可能包括您的 bespoke 或应用程序 SUID。文件的格式为:
1
<suid octal permission to restore> < full path/file-name>




例如,运行以下命令,在名为 mydefaults 的文件中包含两个自定义 SUID,称为 grab_db2_auditload_extract
1
2
3
4
5
6
# pwd
/usr/lib/security/fpm/custom/default

# cat mydefaults
4550 /usr/local/bin/grab_db2_audit
4550 /usr/local/bin/load_extract




我在本节演示的自定义流程也适用于其他安全级别。

如果恢复到默认 级别,那么当对 SUID 修改许可时,将包括该目录中的所有文件(假设格式均正确)。
1
2
3
4
5
6
# fpm -l default

...
chmod 4550 /usr/sbin/invscoutd
chmod 4550 /usr/local/bin/grab_db2_audit
chmod 4550 /usr/local/bin/load_extract




要对自定义 SUID 或任何额外的文件移除 SUID 位,创建一个文件,其中包含您需要移除它们的 SUID 位的文件的列表。文件内容的格式为:
1
< full path /file-name>




例如,在我的 mydefaults2 文件中,我可以包含下面的内容:
1
2
3
4
5
6
# pwd
/usr/lib/security/fpm/custom/med

# cat  mydefaults2
/usr/local/bin/load_extract
/usr/local/bin/grab_db2_audit




在 fpm 移除 SUID 之前,这两个 SUID 文件位于 /usr/local/bin 目录中:
1
2
3
4
5
6
7
# pwd
/usr/local/bin

# ls -lt |head
total 9512
-r-sr-x---    1 root     app1          30681 Dec 05 22:17 load_extract
-r-sr-x---    1 aixdev   app1          52697 Dec 05 18:08 grab_db2_audit




接下来,运行 fpm 以将安全级别修改为 medium。然后在运行 fpm 后确认安全级别的状态。查看自定义文件是否移除了它们的 SUID 位。
1
2
3
4
5
6
7
8
# fpm -l medium

# fpm -s
Medium level security.
# ls -lt |head
total 9512
-r-xr-x---    1 root     app1          30681 Dec 05 22:17 load_extract
-r-xr-x---    1 aixdev   app1          52697 Dec 05 18:08 grab_db2_audit




注意 ACL需要注意的是,在对访问控制列表 (ACL) 文件运行 fpm 时将会禁用 ACL 文件。但是 ACL 属性保持不变,这是因为对所处理的文件运行了一个八进制 chmod,它可以重新设置支持 ACL 的属性。在运行 fpm 之前,查看名为 load_extract 的 ACL 文件:
1
2
3
4
5
6
7
8
9
10
11
12
# aclget load_extract
*
* ACL_type   AIXC
*
attributes: SUID
base permissions
    owner(root):  r-x
    group(app1):  r-x
    others:  ---
extended permissions
    enabled
    deny     r-x     u:alpha




可以看到该文件启用了 SUID 和 ACL,用户 alpha 被拒绝了运行许可。此外,要确认该文件确实为 ACL,注意以下许可属性末端的 + 号:
1
2
3
# ls -lUt |head
total 9512
-r-sr-x---+    1 root     app1          30681 Dec 05 22:17 load_extract




如果我们要运行 fpm 并且它包含 load_extract 文件,那么 ACL 将被禁用。
1
2
3
4
5
6
#  fpm -l medium
# fpm -s
Medium level security.

# ls -lUt |head
-r-xr-x---    1 root     app1          30681 Dec 05 22:17 load_extract




在列表中,注意不再出现 + 号。fpm 重新设置了支持 ACL 的属性。我们可以通过对文件发出 aclget 命令确认这一点。
1
2
3
4
5
6
7
8
9
10
11
12
# aclget load_extract
*
* ACL_type   AIXC
*
attributes:
base permissions
    owner(root):  r-x
    group(app1):  r-x
    others:  ---
extended permissions
    disabled
    deny     r-x     u:alpha




一定要留意 ACL 的情况,并使用 acledit 命令重新启用它们。
结束语在我看来,使用 fpm 是一种非常好的实践。它可以进一步增强您的安全策略。然而,默认文件不一定适合所有情况。您需要针对自己的系统安全需求对默认设置进行修改。
返回列表