Min*_*hôi 1 linux root permissions
所以我想知道是否有可能创建一个 Linux 系统,而没有任何(或几乎没有)以超级用户/root 身份运行的用户空间进程,并且其他进程没有(或几乎没有)提升权限的方法?
有哪些技术解决方案可以用来实现它?这会有什么技术缺陷?
虽然删除超级用户是不切实际的,但为了root安全起见,可以限制用户的访问权限。
我将包括一些摘录,但全部复制会得到一个很大的答案,所以我只给出要点:
以下是管理员可以进一步确保禁止 root 登录的四种不同方式:
更改根外壳
为了防止用户直接以root身份登录,系统管理员可以在/etc/passwd文件中将root账户的shell设置为/sbin/nologin。
使用任何控制台设备 (tty) 禁用 root 访问
为了进一步限制对 root 帐户的访问,管理员可以通过编辑 /etc/securetty 文件在控制台禁用 root 登录。该文件列出了允许 root 用户登录的所有设备。如果该文件根本不存在,则 root 用户可以通过系统上的任何通信设备登录,无论是通过控制台还是原始网络接口。这是危险的,因为用户可以使用 Telnet 以 root 身份登录到他们的机器,Telnet 以纯文本形式通过网络传输密码。
禁用 root SSH 登录
要防止通过 SSH 协议进行 root 登录,请编辑 SSH 守护程序的配置文件 /etc/ssh/sshd_config,并更改以下行:
Run Code Online (Sandbox Code Playgroud)#PermitRootLogin yes阅读如下:
Run Code Online (Sandbox Code Playgroud)PermitRootLogin no使用 PAM 限制对服务的 root 访问
PAM 通过 /lib/security/pam_listfile.so 模块在拒绝特定帐户方面提供了极大的灵活性。管理员可以使用此模块引用不允许登录的用户列表。要限制对系统服务的 root 访问权限,请编辑 /etc/pam.d/ 目录中目标服务的文件,并确保身份验证需要 pam_listfile.so 模块。
所有部分都有更多我遗漏的信息,但如果您感兴趣,可以让您进一步阅读。
selinux可以root通过修改service/executable/port/etc的selinux上下文来整体拿走权限。不过,这是一个很大的话题,所以我将链接 RHEL 文档,而不是深入研究:https : //access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/指数
对于一个真正残酷的例子限制,运行selinux在enforcing和尝试:semanage login -a -s user_u root。
这会将标准用户权限分发给 root 用户(假设它甚至可以运行,我不确定,因为我目前没有机器可以变砖),并限制它执行任何“root”之类的操作.
然而,这可能会阻止init和一系列服务的启动,因此可能需要大量其他selinux配置来允许这些服务作为其他用户运行(这可能非常安全,并且非常难以维护,因为会危及一个服务不会给其他人任何访问权限)。