如何在 web terminal 中限制用户的一些行为?

2020-07-11 13:25:50 +08:00
 zhoudaiyu
我们的容器平台有个在 web 端进入到 pod 里的功能,其实跟在阿里云 web 页面连虚拟机一个意思。现在想禁止一些危险的操作,比如 mv rm cp sh bash 等,我的思路是连 pod 时,直接 alias 禁止一些危险操作,后来发现可以通过使用绝对路径绕过去,比如 /use/bin/rm xxx 这样就可以绕过 alias rm=“echo denied”。最好这种限制对容器没有侵入,比如不要改 /etc/profile 或者.bash_profile 等,而且最好退出容器这个限制就消失,不要影响别的用户。大家有啥思路?
2097 次点击
所在节点    问与答
14 条回复
visitant
2020-07-11 13:48:13 +08:00
为什么不每个用户起个新的容器
ipwx
2020-07-11 13:52:16 +08:00
每个用户新的容器。。?
zhoudaiyu
2020-07-11 14:14:12 +08:00
@visitant
@ipwx 资源浪费啊 有时候就是去容器里看日志
ipwx
2020-07-11 14:32:52 +08:00
setuid setgid? 好像这俩 posix 调用可以从 root 进程降权。
aapeli
2020-07-11 14:40:35 +08:00
定制一个 shell
zhoudaiyu
2020-07-11 14:40:43 +08:00
@ipwx 进去的时候是就是普通用户,但是还是能乱搞出一些问题,虽然说容器可以随时销毁重建吧,但是也是有可能搞事情
zhoudaiyu
2020-07-11 14:41:30 +08:00
@aapeli 是有这样的想法,但是涉及到改造有些麻烦
dingwen07
2020-07-11 15:13:08 +08:00
破坏的骚操作可多了 比如限制了删除那就重定向覆盖
所以可以试试看从保护文件入手 限制权限和配置 ACL 之类的 而不只是阻止用户
zhoudaiyu
2020-07-11 15:19:41 +08:00
@dingwen07 确实要玩骚的太难防了 TAT,太灵活了主要是
abowloflrf
2020-07-11 15:39:10 +08:00
一个思路,进入容器不直接在那个容器里启 shell 进程,而是在同一节点新启动一个容器然后指定要 attach 到目标容器的哪些 namespace,还可以另外指定运行 user 等,达到一些隔离或者权限限制的目的。当然还要看你具体需求,进入容器的需求和具体限制什么操作。
tolerance
2020-07-11 17:26:55 +08:00
搞个不存在危险指令的容器(容器里把 mv 、rm 、cp 这些删除),用户登录启动这个容器
rmb1222
2020-07-11 17:51:42 +08:00
只要是正常的 shell 都无解 就算你把 bin 下的文件全删了 echo 一个 busybox 就能直接复活。。。
zmxnv123
2020-07-11 20:14:27 +08:00
构建一个没有这些执行文件的镜像?
melkor
2020-07-12 08:54:12 +08:00
@zhoudaiyu 如果只是看日志,那就提供看日志的页面好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689158

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX