V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
unt
V2EX  ›  Linux

关于禁 Root 登录的一些疑问

  •  
  •   unt · 2023-03-14 13:57:00 +08:00 · 1439 次点击
    这是一个创建于 407 天前的主题,其中的信息可能已经有所发展或是发生改变。
    配置没问题,我都配置好了,自己账户的私钥也配好了。

    问题:
    1. 由于是多用户操作,每个用户都是管理员,避免管理起来碍手碍脚,给了所有用户 root 权限,su 切换的时候也设成了免密码,这种情况下,我泄露个人账号和泄露 root 账号有啥区别?既然泄露了,那就不会只泄露一个密码吧,用户名也肯定泄露了。设成 su 免密切换会不会反而更不安全。

    2. 公钥私钥怎么理解,公钥必须在用户根目录下吗,可不可以集中管理,放在同一个文件夹。 可不可以多个私钥对应一个公钥。客户端换设备怎么办,直接把原来的私钥拷贝过去还是重新生成一个,每次重新生成的话公钥是不是也要对应重新配置。

    3. 禁 root 登了,云服务商登录检修时填授权账号的时候怎么填
    5 条回复    2023-03-14 18:38:55 +08:00
    msg7086
        1
    msg7086  
       2023-03-14 14:12:20 +08:00
    1. 以下为个人观点,不接受反驳,不承担责任,仅供参考。

    如果服务器本来就是只会为了管理而登录,并且所有登录的账户都有提权权限,且不需要审计,每个人的公钥也都保证安全的情况下,直接用 root 没什么问题。

    列举一些通常会提到的反例:
    如果你日常有非管理的登录需求,且怕自己手滑用 root 账号炸鸡,请用个人账户+sudo 。
    如果你需要审计每个人的登录记录,请用个人账户+sudo 。
    如果你需要更方便地收回权限,请用个人账户+sudo 。

    否则直接 root 登录操作即可。

    2. 公钥是跟着账户走的,意思是如果某个账户下有公钥,你也有对应的私钥,你就可以登录到这个账户。所以不能放在同一个目录下,因为这样就无法确定公钥能登录哪个账户了。(如果所有人都用 root ,那就放在 /root/.ssh/authorized_keys 就行了。)
    客户换设备可以重用私钥,也可以重新生成一个。理想情况是每设备一私钥,但是安全性和便利性每个人可以自己取舍。
    adoal
        2
    adoal  
       2023-03-14 14:22:11 +08:00
    1. 理想情况下是用 sudo 或 doas ,并且详细配置具体被授权的用户可用什么命令(然而很容易不小心配错,让用户有更大的权限),不提倡用 su ,因为 su 太粗放了
    2. OpenSSH 的 sshd.conf 可以配置 AuthorizedKeysFile 参数来指定用户的可登录公钥文件位置,甚至可以用 AuthorizedKeysCommand 来指定运行一个外部程序来获取用户的可登录公钥文件,这样可以把可登录公钥放在 LDAP 等外部数据库里,集中管理并动态替换。一个私钥对应多个公钥是不可能的,但是可以一个用户配置多个可登录公钥。
    3. 各云厂家的策略不同。印象里 GCP 是生成了一个维护专用的密钥对,你不要删掉它即可。
    unt
        3
    unt  
    OP
       2023-03-14 14:35:31 +08:00
    @msg7086 谢谢
    unt
        4
    unt  
    OP
       2023-03-14 14:35:38 +08:00
    @adoal 谢谢
    libook
        5
    libook  
       2023-03-14 18:38:55 +08:00
    1. 安全是于效率相互矛盾的,安全多一些,效率也就多牺牲一些。以等保的安全要求为例,管理员、操作员、审计员得三权分立,管理员负责管理账号和分配权限,操作员负责进行实际操作,审计员负责审计前两者的行为。权限分配应当遵循最小原则,每个用户仅能执行自己权限范围内的操作。所以要么是仅少数的管理员角色可以使用 root 、其他用户仅能使用普通账号,要么是有额外的堡垒机记录每个用户的详细操作以供审计。

    2. 密钥对指的是 SSH 密钥吧?私钥保存在每个用户的终端上,不向其他人公开;公钥发到服务器 SSHD 指定的目录下,通常是用户自己的 home 目录下。应该可以通过配置 SSHD 来实现集中管理,通过配置 sshd_config 中的 AuthorizedKeysFile 字段,指定某个统一的目录,然后使用 u%之类的指定每个用户的子目录。不能将所有 key 直接扔到同一个目录里,因为那会使得所有人都可以使用自己的私钥登陆任何用户。有需要也可以配置 AuthorizedKeysCommand 来使用如 LDAP 之类的机制来获得公钥。具体可以去看 sshd_config 的手册。

    3. 我了解阿里云是让用户提供账号密码去登陆检修,不可能租户自己禁止自己用 root 吧,一般都是专人管理。

    一般来讲,sudo 是使用用户自己的密码来提权,su 是使用对应账号(如 root 账号)的密码来切换账号;如果你在多人操作的服务器上使用 su 让大家切换到 root ,也就意味着每个用户都知道 root 的密码;如果使用 sudo ,也就意味着用户自己的账号密码泄漏了等同于 root 密码泄漏。各有优缺点。

    通常建议的方案是,使用堡垒机来自动管理和使用每个用户在每台服务器上的 SSH 密钥对,仅一名超管拥有堡垒机的配置权限,1 个或多个审计员有堡垒机日志的读取权限,每个操作员按照指责范围被配置允许访问哪些服务器的哪些账号,每台服务器仅接受堡垒机 IP 的登录请求。具体到服务器上,可以为个别账号设定免密码切换至 root ,也可以在堡垒机直接使用 root 账户登陆服务器。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4531 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:05 · PVG 12:05 · LAX 21:05 · JFK 00:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.