如何保护 $HOME/.ssh

2022-03-18 11:17:20 +08:00
 0o0O0o0O0o
/t/841188

以普通用户权限运行的程序也可以读取修改它们,有什么简单的操作可以避免这一点吗?
6346 次点击
所在节点    Linux
51 条回复
villivateur
2022-03-18 11:24:21 +08:00
配置好 SELinux
pengtdyd
2022-03-18 11:26:51 +08:00
$HOME 就是当前用户目录,当前用户当然有权限操作自己的文件了
adeweb
2022-03-18 11:29:20 +08:00
避免不了,但可以在生成 ssh key 时加上 passphrase
guang19
2022-03-18 11:29:36 +08:00
你是想让普通用户没有权限操作自己的文件吗?
adoal
2022-03-18 11:37:44 +08:00
#1 提的 SELinux 是个好办法,不过这玩意不太容易上手
Sinow
2022-03-18 11:41:15 +08:00
owner 改成 root ,sudo 访问
codehz
2022-03-18 11:41:20 +08:00
这时候一定会有相关的 xkcd
https://xkcd.com/1200/
paxnil
2022-03-18 11:41:34 +08:00
chattr +i
0o0O0o0O0o
2022-03-18 11:44:15 +08:00
> 配置好 SELinux
> #1 提的 SELinux 是个好办法,不过这玩意不太容易上手
SELinux 可能有点太复杂了,而且不知道会不会影响需要调用 ssh 的程序。

> owner 改成 root ,sudo 访问
理由同上,会影响别的程序以普通用户权限运行
codehz
2022-03-18 11:47:07 +08:00
Linux 实际上没有什么好办法防止相关问题,通常能获得你 shell 访问权限的约等于能做除了帮你开机之外的任何事了(
包括偷密码,即使找不到提权漏洞,也可以轻易安装 shell 记录器 ( codehz/bashrc-backdoor )

本来 snap 算是一个好的隔离解决方案,但是实际情况是鲜有软件开启沙箱功能(
0o0O0o0O0o
2022-03-18 11:52:01 +08:00
@codehz 我是非常赞同这种观念的,我只是想尽量无感地给大部分程序设置一个屏障

我打算本地用 docker 跑一个简单的跳板机来做这件事
dzdh
2022-03-18 11:53:11 +08:00
前提是 你的 user/.ssh 不允许当前的用户进行编辑和修改只能通过 root 修改。

否则这是个伪命题,或者你的需求不明确。

apparmor 可以满足需求,所属用户属于$USER 但是不能主动 R/W(如 cat/sed)但是又可以被 SSHD 读取使用。
codehz
2022-03-18 11:54:08 +08:00
@0o0O0o0O0o 反了,得把其他程序放容器里才有效果(
0o0O0o0O0o
2022-03-18 12:11:51 +08:00
@codehz #13 那样好像就不是很无感了,私钥文件放在 docker 容器内,普通用户不提权或者不利用漏洞无法访问到
codehz
2022-03-18 12:14:42 +08:00
@0o0O0o0O0o ( docker 运行不是得 root 权限吗(然后你是不是还想无密码 sudo ?)
或者说把用户加到 docker 组(然后技术上就是 root 了)
pelloz
2022-03-18 12:17:14 +08:00
linux 正确的使用方式不是每个应用都专门给一个用户吗
0o0O0o0O0o
2022-03-18 12:21:26 +08:00
@codehz 该容器一直保持运行而不是 alias ,用户不加 docker 组,所以操作 docker 容器需要提权。

容器运行 sshd 服务来“转发”ssh 连接。
0o0O0o0O0o
2022-03-18 12:23:15 +08:00
@pelloz 很正确...但 Linux Desktop 这样用感觉有点难...
yin1999
2022-03-18 12:28:31 +08:00
systemd 有 DynamicUser ,可以创建临时用户给程序使用,如果不用写文件,配合 LoadCredential 来加载需要特定用户权限才能读取的文件还是挺不错的,可以试试(临时运行而不是长期运行的服务,可以使用 systemd-run )
0o0O0o0O0o
2022-03-18 12:32:39 +08:00
@yin1999 同#18 ,我在云服务器上是用这些 systemd 的加固方案的,但是在本地桌面这样用可能就很不方便了

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

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

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

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

© 2021 V2EX