Re: [问题] 关于 linux user 转换的问题

楼主: gowrite (gowrite)   2020-10-22 00:07:40
各位好,
谢谢大家帮忙解惑我的相关问题,
但是可能是我的叙述不是很清楚,所以有些回答误会我的意思
关于我上一篇的问题是写说,我无法理解 sudo su - USER_NAME 这个指令的使用情境,
先来作个情境设定,
假设一个系统有 4 个帐号 (root , alice , bob , service)
1. root 没有设定密码,所以无法经由 root 帐号登录,
仅能经由 sudoer 使用 sudo su - root 来取得 root BASH
2. alice 为自然人帐号,并且在 wheel group 中,是拥有 sudoer 权限的帐号,
3. bob 为自然人帐号 (非 daemon 或 application service ),bob 非 sudoer
4. service 为 application 的帐号,非 sudoer
先说我对于 Linux 系统的使用理解,
帐号、权限分离是很好的做法,
所以每个服务,每个自然人都应该要有自己的帐号,
如此,谁可以做什么,谁做了什么,都应该一目了然,
(这边先排除 root)
我想像中的帐号管理是,
admin (sudoer) 当然拥有较高权限,
admin 可以创造帐号,以用于不同的服务管理
(例如: postgres 管理 postgreSQL service)
例如:
admin 创造了 postgres 服务的帐号,理当也知道 postgres 的密码,
所以需要管理 DB service 的时候,就用 postgres 的帐密登入,
管理完后,登出,
帐号、权限分离,很 OK
关于自然人帐号的部分,
alice 创造了 bob 的帐号,
bob 第一次登入的时候,创建了密码,
alice 可以使用他的管理者权限去增减 bob 帐号的权限,甚至把 bob 帐号删除,
但是 alice 不应该有可以伪装成 bob,以 bob 身份去做事情的权限,
因为 bob 是一个自然人,
如果今天 alice 是使用 bob 的帐密登入了 bob 的帐号,
那就是 bob 的密码外泄,alice 盗用密码,这很明确,没问题
但是 $ sudo su - bob ,这个指令是要用 alice 自己的密码登入 bob 的帐号,
alice 可以在 bob 不知道的时候,
以 bob 的名义去 create, read, update, delete, bob home directory 的任何档案
或者修改任何 bob 帐号权限可以修改的任何系统 configuration,
而 log 上都会显示成 bob 自己做的,
这不就是等同帐号盗用吗?
而重点是 bob 的密码还没有外泄,因为 alice 是用自己的密码登入的
当然我们都知道 root / admin 的权力至高无上,所以我们应该交给信任的人来作
假设我们信任的 administrator,他永远忠诚且不受情绪困扰,每日稳定工作,
但是 admin 的帐号有没有可能外泄?
随便想就有好几个情境,在实际资安上是有发生过的
1. hacker 取得 admin 的帐密,执行不法行为后,为了隐藏痕迹,则伪造或删除 log
2. 组织内的内鬼,想要做一些不法的事情,但又不敢用自己的帐号作,
所以就以 social engineering 取得 admin 帐号,
并且 $ sudo su - USER_A , 嫁祸给一个替罪羊来掩盖自己的痕迹
.... 等等,许多的方式
以上的资安问题,
不就是因为 $ sudo su - USER_NAME 所造成的吗?
再说现在资安的趋势就是 zero trust,
连内网都要加强防护,许多系统也都不设定 root
而为什么 linux 会允许这种指令,感觉就是 anti-security pattern
或者是说
Linux 系统应该改成,admin 可以转换成 service 的帐号,
但是不能转换成自然人的 user account
这样应该就会好很多
不知道各位前辈,可以指点解惑吗?
谢谢
※ 引述《gowrite (gowrite)》之铭言:
: 各位好,我是一个 Linux 自学的新手,
: 想问一个有关于 Linux 中在 BASH 作 user 转换的实际意义,
: 假设使用 centOS 系统中,
: 有三个 users (root , alice , bob)
: 其中 alice 在 wheel group 中 (意即 alice 可以使用 sudo 指令)
: 当 alice 登入系统,取得自己的 BASH shell 之后,
: 就可以使用转换 user 指令
: $ sudo su - bob
: 然后 alice 输入自己密码,就可以转换 user 变成 bob
: 就可以用 bob 的角色做事情,
: 这边就是我最搞不懂的部分
: 1. 为什么 Linux 系统会允许 user A 可以不需要 user B 的允许,
: 就让 user A 自己转换为 user B 去做事情?
: 这样跟帐号盗用的差别在那里?
: 2. 为什么 Linux 系统在 user A 转换成 user B 时,要输入的是 user A 的密码,
: 而不是 user B 的密码?
: 3. Linux 系统如此设计的意义是在哪里呢?
: 同样的东西在 windows,alice 则必须要在 logout 之后,
: 重新以 bob 的账号登入,并且是以 bob 的密码登入,
: 我一直搞不懂 Linux 为什么转换成别人的 user account 是用自己的密码
: 希望有熟悉 Linux 系统意义的前辈可以帮忙解惑,
: 谢谢
作者: kdjf (我抓得到什么呢?)   2020-10-22 00:18:00
既然alice不能被完全信任,干嘛给他sudo任意指令的权限?能sudo ALL=(ALL:ALL) ALL的人就是绝对信任的人,如果他不能完全信任就只给他sudo一部分系统工作的权限,像是alice (ALL) adduser这行就让alice可以用root的身份执行adduser,但不能sudo su bob
作者: Bencrie   2020-10-22 01:55:00
原 po 你说的东西再正常不过。admin 本来就能做任何事你要 security 就乖乖弄加密。gpg 学一下
作者: HMKRL (HMKRL)   2020-10-22 03:37:00
你拿到那个权限连整台server删光光都做得到了 纠结这个根本没意义 就算他今天不用bob的身份也能做完事伪造log你要真的辨识身份就像楼上讲的 搞加密 就像使用者密码admin也拿不到明文一样 不然加一堆限制只是增加管理麻烦
作者: Bellkna (柔弱气质伪少女)   2020-10-22 05:56:00
root啥事都不能做不就跟windows那个残废的admin一样= =要想怎么管好sudo权限 而不是纠结有人拿sduo去干坏事*sudo
作者: bitlife (BIT一生)   2020-10-22 08:59:00
我只能这样讲,如果你看过早期的工作站如sparc的SunOS,你的下巴大概就掉下来了.你现在看到的sudo是演进的结果,以前/etc/passwd没有shadow,mode是744,这代表任何user可以用crypt函数去暴力破解使用者密码(当然包含root),所以以前好的工作站管理员工作包含经常ps看一下有没有破解程式在背景执行. 后来才有逐步改进,shadow password,sudo等等真的如你所说这么危险的环境,又牵涉重大利益,自然不应该如同实验室工作站一般管理sudo su - <user> 是sudo和su组合出来的,sudo才是重点,你让一个人取得root权限,是实质需要还是管理不当? 还有取得root权限又分成只允许他执行特定工作和执行shell,能执行shell基本上就能做所有的事,sudo su (不管后面有没有加参数),就是执行root身分的shell,从第一代的internet worm,所有*nix的hacker所做的努力就是在目的机器上取得root的shell,所以问题应该是你为何要把一个root shell在未受监管的情况下给一个你不信任的人?我前一篇讲的作法都是在讲监管,有较好的监管,可不可信任是比较次要的问题,因为没办证明可信任,所以才需要监管监管也分成本等级,CIA等级(不可能任务1拉肚子那位)和一般中小企业等级自然不同,依牵涉到的利益大小付出不同的监管成本是非常合理的更正一下,上面那个mode是644才对
作者: chang0206 (Eric Chang)   2020-10-22 10:32:00
信任root 的部份,大家都说过了,我就不再多说,如果你要让A可以create user , 但不能 su ,你可以在sudoer中定义A 可以用sudo 来执行哪些指令,就可以避免A用su 去转换身份,如果这是你想的控管方式的话
作者: Gold740716 (项为之强)   2020-10-22 12:18:00
你可以把使用者的家目录加密,要登入时输入密码才会解密,这样大概就没问题了。你也可以把 root 帐号禁用,或把 root 执行 su 可以切换其它使用者的功能关掉。
作者: qwe753951 (滑倒)   2020-10-22 16:46:00
root就是这台电脑的神,有root权限的user A就把他当作神仙下凡吧
作者: mgdesigner (機槍設計師)   2020-10-22 19:25:00
sudo su 在电影骇客任务里常常出现
作者: oToToT (屁孩)   2020-10-23 01:43:00
重点其实是Linux还是有其他权限管控机制,例如让某个使用者可以创帐号等,不是只有变成root让大家恶搞而已。所以好的作法是不会让大部分使用者可以拿到完整root权限,而是会把部分的root权限下放给特定使用者
作者: m8403051 (大吉岭红茶)   2020-10-23 08:07:00
但是总归还是会有一个最高的 adm就算他不能变身成你的帐号, 他还是能修改所有的log所以能不能 su 需不需要密码只是个假议题

Links booklink

Contact Us: admin [ a t ] ucptt.com