如何保护 $HOME/.ssh

2022 年 3 月 18 日
 0o0O0o0O0o
/t/841188

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

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

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

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

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

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

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

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

https://study.congcong.us/t/841221

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

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

© 2021 V2EX