Chr*_*ris 10 security permissions sudo
我的老板自愿让我担任我们生产 redhat 服务器的系统管理员。他让我加强安保,避免rm -f *
不久前发生的类似事故。
现在,我们有 53 个用户 sudo-ing 进入机器,这是一个审计噩梦。我想知道是否可以只允许用户在一周中的特定日期访问。
例如,我可以让用户“Joe”仅在周二和周四登录,“Jane”仅在周日登录吗?可以etc/sudoers
自定义以允许这样做吗?
有没有更好的方法而不是使用 sudoers?
der*_*ert 21
sudo
通过 PAM 进行身份验证,就像 Linux 机器上的几乎所有其他内容一样。
所以你应该能够使用它pam_time.so
来做到这一点。
至少在 Debian 上,默认情况下,该模块未启用。您需要添加如下所示的行:
account requisite pam_time.so
Run Code Online (Sandbox Code Playgroud)
要么/etc/pam.d/sudo
只为 sudo 启用,要么/etc/pam.d/common-account
(在 pam-auth-update 块之后)为系统上的所有程序启用。
然后编辑/etc/security/time.conf
以设置您的限制。服务名称应该是sudo
. 例如,要让 Fredsudo
仅在周五下午 3 点到 5 点之间使用:
sudo;*;fred;Fr1500-1700
Run Code Online (Sandbox Code Playgroud)
(注意:我没有测试过这个。)
编辑:明确地说,我同意其他答案和各种评论者,您似乎有太多人以 root 身份运行太多命令,您确实需要解决这个问题。当然,如果他们可以成为 root,他们可以编辑 pam 配置...
Joh*_*nny 20
我会质疑为什么 53 个用户需要 sudo 来完成他们的日常工作——对于大多数用户(甚至是开发人员)来说,sudo 应该是一个罕见的例外,而不是一个有人会随便运行一个sudo rm -rf *
命令的例行程序。
您能否使用组权限(甚至更高级的 ACL)让人们访问他们完成工作所需的文件,也许使用一些 setuid 或 sudo 脚本或二进制文件让他们执行诸如重新启动服务之类的操作?(请注意,很难编写安全的 setuid/sudo 脚本,因此更要让诚实的人保持诚实)。
即使您可以将人们限制为每周一天的 sudo 访问权限,但一周内仍有 53 人具有 sudo 访问权限,因此它并不能真正帮助您解决核心问题。
就此而言,我会质疑是否有那么多用户需要访问生产服务器——你能将日志或他们需要的任何数据/文件发送到非生产机器吗?
小智 7
最简单的方法是使用 sudoers.d 目录(通过 containsir)进行配置。然后,您可以使用 cron 作业将每个用户的规则放置在您想要的目录中。
#includedir 指令可用于在 /etc/sudoers 中创建一个 sudoers.d 目录,您可以将 sudoers 规则作为规则的一部分放入其中。例如,给定:
#includedir /etc/sudoers.d
Run Code Online (Sandbox Code Playgroud)
sudo 将读取 /etc/sudoers.d 中的每个文件,跳过以“~”结尾或包含“.”的文件名。字符以避免导致包管理器或编辑器临时/备份文件出现问题。文件按排序的词法顺序进行解析。也就是说,/etc/sudoers.d/01_first 将在 /etc/sudoers.d/10_second 之前被解析。请注意,因为排序是词法的,而不是数字的,/etc/sudoers.d/1_whoops 将在 /etc/sudoers.d/10_second 之后加载。在文件名中使用一致数量的前导零可以避免此类问题。
请注意,与通过 #include 包含的文件不同,visudo 不会编辑 #includedir 目录中的文件,除非其中一个包含语法错误。仍然可以使用 ?f 标志运行 visudo 以直接编辑文件。
/etc/sudoers.d/joe 当您希望 joe 具有访问权限时会出现,您可以简单地删除该文件以取消访问权限。
归档时间: |
|
查看次数: |
3558 次 |
最近记录: |