设置用户 ID (setuid) 程序是 UNIX 站点上最常用的程序之一。 调用 setuid 程序的进程会自动获得 setuid 程序所有者的身份。 如果 setuid 程序所有者是 root,则任何常规用户通过调用 setuid 程序都会自动成为超级用户。 当 setuid 程序启动时,该进程可执行超级用户可以执行的任何操作,因此,确保 setuid 程序准确执行应完成的操作而不执行任何其他操作非常重要。 setuid 程序中的后门或 shell 授予用户访问系统中任何内容的权限。
CA Access Control 使用 PROGRAM 类保护 setuid 和 setgid 程序。 完成安装之后,默认情况下 CA Access Control 允许执行任何程序。 在数据库中定义受托程序后,您可以更改 CA Access Control 的行为,从而禁止执行 setuid 或 setgid 程序,除非将该程序定义为受托程序。 例如,要允许 /bin/ps(进程状态程序)作为 setgid 程序运行(应完成的操作),可使用以下 selang 命令:
newres PROGRAM /bin/ps defaccess(EXEC)
CA Access Control 将 /bin/ps 程序注册为受托程序。 然后,CA Access Control 计算其 CRC、inode 号、大小、设备号、所有者、组、权限位、上次修改时间以及其他数字签名(此项可选),并将这些信息存储在数据库的 PROGRAM 类的记录中。
Watchdog 会定期检查该程序的 CRC、大小、inode 和其他特性。 如果其中的任何值已更改,Watchdog 会自动要求 seosd 从受托程序列表中删除该程序,并且拒绝对它的访问。 这确保不会有人通过修改或移动 setuid 程序而滥用该程序。 注意,newres 命令示例中的权限允许所有用户(包括未在数据库中定义的用户)运行 /bin/ps 命令。
未受托的 setuid 程序可能是基于 UNIX 的操作系统的最危险的安全漏洞。 通过使用受托程序的访问规则,安全管理员可以将 setuid 限制为仅供已经过确保完整性的测试和检查的特定受托程序使用。 但是,任何用户都不能自动启动受托的可执行程序;访问规则必须指定已授权访问该 setuid 程序的明确用户和组。 例如,下面一组 selang 命令仅授权 System Department 用户(sysdept 组)执行 /bin/su:
newres PROGRAM /bin/su defaccess(NONE) authorize PROGRAM /bin/su gid(sysdept) access (EXEC)
使用星号 (*) 可以指定在数据库中定义的所有用户。 例如,要允许定义到 CA Access Control 的所有用户可执行 su 命令,请输入以下命令:
authorize PROGRAM /bin/su uid(*) access(EXEC)
该说明也适用于 setgid 可执行文件。
您可以使用 nr 和 er 命令在 PROGRAM 类中注册 setuid 和 setgid 程序。 可以使用类似方法在 PROGRAM 类中注册一些重要的非 setuid 和 setgid 程序。 为这些程序定义一个 FILE 规则,阻止未经授权的用户对它们进行升级。 如果要允许执行取消受托的程序(在升级后,将执行该程序而不重新托管),请将 blockrun 属性设置为 no。
要将 blockrun 属性的值设置为 yes,可使用以下 editres/newres 命令:
er program /bin/p blockrun
要将 blockrun 属性的值设置为 no,可使用以下 editres/newres 命令:
er program /bin/p blockrun-
在默认情况下,对于在 PROGRAM 类中注册的所有程序,blockrun 属性均设置为 yes。 您可以使用 seos.ini 文件中的 SetBlockRun 标记更改该属性。 有关详细信息,请参阅 seos.ini 文件说明。
| 版权所有 © 2011 CA。 保留所有权利。 | 就该主题发送电子邮件至 CA Technologies |