我正准备将我的服务器暴露在互联网上,并希望尽可能地保证安全。我采取了隐蔽措施来确保安全,例如更改默认端口 22,确保禁用 root 登录,并查看谁可以登录。最后一部分让我有点担心:
我知道任何指向 /bin/false 或 /usr/sbin/nologin 的登录都会被拒绝或立即退出。所以我知道不用担心这些。但是,运行以下命令时:
cat /etc/passwd | grep -v /bin/false | grep -v /usr/sbin/nologin
我得到以下输出:
root:x:0:0:root:/root:/bin/bash
sync:x:4:65534:sync:/bin:/bin/sync
will:x:1000:1000:will,,,:/home/will:/bin/bash
我一直在尝试查找同步的用途或工作原理,但无济于事。我假设从远程登录到用户“同步”可能没有入口点,但是……这是什么?我需要做些什么来确保它不存在安全风险,它有什么用处?
答案1
Unix 和 Linux SE 上有这个问题:为什么 Debian 将用户的登录 shell 设置sync
为/bin/sync
?
唯一的答案已获得赞同、接受,且作者声誉很高。答案指出:
这记录在
/usr/share/doc/base-passwd/users-and-groups.txt.gz
:同步
用户的 shell
sync
是/bin/sync
。因此,如果将其密码设置为容易猜到的内容(例如“”),任何人都可以在控制台上同步系统,即使他们没有系统帐户。这确实是一个历史遗迹,我不希望
sync
现在以这种方式设置用户。在过去,拥有这样的用户很有用,这样那些可以物理访问控制台的人(例如在服务器机房或满是工作站的实验室中(如大学中常见的那样),关闭系统时(从恶意进程中恢复或只是使用工作站,如果工作站被其前一个用户锁定)可以降低数据丢失的风险。 Debian 之前的 Unix 系统往往有一个sync
用户和一个shutdown
用户,您可以使用该用户在不知道密码的情况下正确关闭系统root
。 (在我们的 Sun SPARCstations 上,我们只需STOPAboot
...)
在我使用的 Linux 操作系统 (Debian、Kubuntu) 中,用户在 中sync
拥有*
加密密码/etc/shadow
。请参阅man 5 shadow
:
如果密码字段包含某些不是有效结果的字符串
crypt(3)
,例如!
或*
,则用户将无法使用 unix 密码登录(但用户可以通过其他方式登录系统)。
所以没什么可担心的。这只是一个神器。现在你不能通过 SSH 登录sync
(试试看),除非你的设置被大幅改变(例如像这样:无需密码和 ssh-key 即可登录 SSH?)。