我想阻止用户看到其他系统用户。我已经阻止使用 hidepid=2 挂载选项列出 /proc 的进程,阻止列出其他用户的主目录,但他们仍然可以通过执行“getent passwd”或“cat /etc/passwd”来查看用户所在的位置。
“chmod 640 /etc/passwd /etc/group”安全吗?什么可能会破坏?运行 Ubuntu 20.04 或 22.04。
答案1
根据您的评论:
这是一个托管许多网站的网络服务器 - 用户名/组名称包含允许识别服务器上正在运行的网站的名称。即用户名可以是“example.com”或“example.tld”(或类似的,可以计算出完整的域名)。由于这些站点运行类似的软件 - 如果一个站点由于某些漏洞而遭到黑客攻击 - 攻击者可以枚举服务器上运行的站点并使用相同的漏洞感染它们。隐藏简单列出域的功能使攻击者更难,并为网站所有者提供更多时间进行更新。
我想说你想要做的是通过默默无闻提供某种(差的)安全性。
如果攻击者入侵了网站,他们很可能会获得 root shell,因此 1) 整个服务器都会受到损害,2) 获得特权访问权限后,他们无论如何都可以获得完整的用户列表。
最重要的是,限制系统配置文件的权限始终是一个坏主意。你永远不知道什么(以及何时)会崩溃。
答案2
到目前为止,这些都打破了:
“ls -l” - 显示 uids/gids - 没什么大不了的(至少对我来说!)
OpenSSH 的 ssh 命令 - 即:
$ ssh [email protected] -v
No user exists for uid 1166
$ echo $?
255
它甚至不尝试建立连接!
有一个解决方法 - 使用替代 SSH 客户端,例如 dropbear (dbclient):
$ dbclient [email protected]
dbclient: Warning: failed to identify current user. Trying anyway.
(...connection succeeds...)
- 颠覆(使用 ssh):
$ svn st -u
No user exists for uid 1166
svn: E170013: Unable to connect to a repository at URL ...
解决方法 - 编辑 /etc/subversion/config,[tunnels] 部分 - 并使用 dropbear 的 dbclient,而不是 OpenSSH 的 ssh:
# ssh = $SVN_SSH ssh -q -o ControlMaster=no --
ssh = $SVN_SSH dbclient -q -o ControlMaster=no --
- 使用 OpenSSH 的 ssh 的其他软件 - 类似的解决方法应该有帮助
答案3
/etc/passwd
并且/etc/group
两者都有权限
-rw-r--r--. 1 root root
这意味着所有者 = root,组为 root。
因此chmod 644
,删除世界可读能力中的任何一个都会破坏系统......对于不在根组中的任何进程或服务,它们不应该在根组中(希望出于明显的原因),将无法从根组中读取信息那些文件有关uid和吉德可能是最大的两个。整个 Linux 操作系统都在 uid 和 gid 上运行,以及什么帐户有什么……这并不是您需要担心的真正安全漏洞。
https://stackoverflow.com/questions/9887247/what-are-ideal-etc-passwd-file-permissions
- 现代 UNIX 系统中的敏感数据保存在 /etc/shadow 文件中。
- /etc/passwd 中的内容不是敏感数据。
但是我认为这是一个很好的问题,从某种角度来看,如果您有任何理由禁止用户通过简单地在/etc/passwd
.那么您是否也不想阻止以ls -l
这种方式获取用户信息呢? 是否存在使用 LDAP 的潜在解决方案,其中此类 LDAP 帐户不会出现在/etc/passwd
?*