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

ssh config 是否安全?

  •  
  •   patx 2020-06-20 22:22:02 +08:00 4990 次点击
    这是一个创建于 1945 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我在.ssh 目录下配置了 config 文件,

    里面包含了服务器主机名、用户名和私钥文件路径。

    如果我本地项目引入了恶意的依赖包,

    运行时读取了 config 文件内容、私钥文件,并被黑客利用,

    那么我服务器登录信息不是泄漏了?

    27 条回复    2020-06-22 15:30:46 +08:00
    lxk11153
        1
    lxk11153  
       2020-06-20 22:25:32 +08:00
    感觉这有点类似你加入一个 wifi 一样,如果 wifi 是黑 wifi,那你不就啥都被看到了吗?既然我选择连接这个 wifi 就代表我选择尽量相信它或者产生风险我也许能接受。
    codehz
        2
    codehz  
       2020-06-20 22:25:44 +08:00
    不仅如此,恶意软件包还能修改你的 shell 配置直接获得 root 权限(例如在 bashrc 里 alias sudo,替换成恶意的版本)
    Oysmart
        3
    Oysmart  
       2020-06-20 22:25:58 +08:00
    config 都泄露了,何来安全?
    litmxs
        4
    litmxs  
       2020-06-20 22:28:12 +08:00 via Android
    生成密钥的时候设置密码。
    sky96111
        5
    sky96111  
       2020-06-20 22:41:33 +08:00
    私钥非 root 不可读,ssh config 可以被读虽然不安全,倒也不至于直接被登陆
    guog
        6
    guog  
       2020-06-20 22:53:19 +08:00 via Android
    权限 400
    timothyye
        7
    timothyye  
       2020-06-20 22:53:26 +08:00 via Android
    密钥可以设置密码
    jiangzm
        8
    jiangzm  
       2020-06-20 23:07:44 +08:00
    那你就不要用.ssh/config 文件,怕这怕那的。


    我猜是你自己想做这个事,一般公开的依赖包不会做这么低级的事。
    indev
        9
    indev  
       2020-06-20 23:12:59 +08:00   1
    @timothyye 说得对,麻烦但是安全
    shunf4
        10
    shunf4  
       2020-06-20 23:38:32 +08:00
    用 Deno 吧,少年
    toaruScar
        11
    toaruScar  
       2020-06-21 01:12:29 +08:00
    可以考虑用 ssh 证书登陆。把签名了的密钥的有效期设成 1 天,然后每天重新签发私钥就行了。
    patx
        12
    patx  
    OP
       2020-06-21 01:38:36 +08:00
    @shunf4 我看了 deno 的特性,才问这个问题的 XD
    patx
        13
    patx  
    OP
       2020-06-21 01:41:03 +08:00
    @jiangzm 依赖包只是一个例子,用户安装的任何软件都能读.ssh 目录吧
    whitegerry
        14
    whitegerry  
       2020-06-21 02:22:46 +08:00
    config 放其他位置,改个名字一样用嘛,ssh -F path/trojan linux
    alphatoad
        15
    alphatoad  
       2020-06-21 07:05:10 +08:00 via iPhone   1
    私钥加密码,用你的发行版的密码管理器管理,可以无感
    yanqiyu
        16
    yanqiyu  
       2020-06-21 07:30:01 +08:00 via Android   1
    当然,用户自己凭本事安装的程序系统只能信任了。所以要保证软件来源可控。
    真要被恶意程序感染,恶意程序还能偷走 chrome 的保存的密码,这才叫灾难(
    ClericPy
        17
    ClericPy  
       2020-06-21 10:16:18 +08:00
    没有绝对的安全, 跳板机, LDAP 登录, 动态口令, 各种东西都敌不过一行代码漏洞
    expy
        18
    expy  
       2020-06-21 11:42:08 +08:00
    直接行恶意程序,当前账户有权限的文件都暴露了。
    codehz
        19
    codehz  
       2020-06-21 13:16:38 +08:00   1
    @sky96111 #5 是非当前用户不可读(不然 ssh 怎么读到的私钥),所以如果开发机上用同一个用户跑恶意程序还是能被偷走的
    dorentus
        20
    dorentus  
       2020-06-21 17:14:32 +08:00 via iPhone
    私钥加密码,或者放硬件模块中(比如 yubikey )
    byte10
        21
    byte10  
       2020-06-21 21:21:19 +08:00
    @lxk11153 黑 wifi 也不能拦截证书类协议。除非客户端不校验
    dingwen07
        22
    dingwen07  
       2020-06-21 23:48:09 +08:00 via iPhone   1
    私钥用 PGP 转,然后存储在无法导出的智能卡里,nitrokey 、yubikey 这种
    不过 Linux 如果不乱信任密钥恶意软件包进不来吧,包管理都是要验证 PGP 密钥的
    ruzztok
        23
    ruzztok  
       2020-06-22 09:34:57 +08:00
    私钥权限好像必须是 600,你查一下便知
    libook
        24
    libook  
       2020-06-22 10:25:04 +08:00
    Linux 的权限机制很强大也很灵活,所以安全与否全在于管理员制定什么样的策略。

    首先,权限最小化原则。任何应用程序都应该运行在一个特定的用户下,这个用户仅被授予应用程序运行所必须的权限,即便不小心在应用程序上引入了恶意代码,也因为没有事先授予权限而无法进行更高级别的破坏;影响也被限制在应用程序层面。

    一旦准许一个用户被 SSH 登入,那么只要它可以进入一个正常的 Shell,就拥有了这个用户的所有权限,但通常配置“是否准许一个用户被 SSH 登入”是需要高级权限的(比如 root ),那么完全可以禁止应用程序运行所使用的用户被 SSH 登入,可以使用另一个用户作为 SSH 登入专用的用户,然后将这个用户的权限限制在仅能使用 su 指令切换到其他用户,而 su 指令是需要输入切换的目标用户的口令才可以的,安全性有保证。同时建议在服务器上禁用或移除 sudo 指令。
    libook
        25
    libook  
       2020-06-22 11:07:36 +08:00
    SSH 只是一种远程连入的方式,而登录到一个用户是有很多种方法的,有正常的方法,也有利用漏洞越权操作的方法,所以最好彻底禁用运行应用程序的用户被登录,也就是说哪怕我从别的用户使用 su 指令要求切过去,甚至哪怕我走到机房里直接操作那台机器输入正确的账号密码,都不能直接登录这个受限用户(在不能登录到 root 用户改系统配置的情况下)。

    用户的登录是由系统底层来控制的,系统配置里会记录不同用户对应的默认 Shell 是什么,然后当用户登录成功的时候会自动启动相应 Shell 以便于用户操作,但如果系统里对应这个用户配置的 Shell 不是一个可用的 Shell (比如 /sbin/nologin ),那么即便用户登录成功了也无法操作。
    具体方法可以参考这个:
    https://www.thegeekdiary.com/unix-linux-how-to-lock-or-disable-an-user-account/

    Deno 只是个应用引擎,顶多带有一定的沙盒功能,Deno 的依赖包是直接暴露在 Linux 文件系统里的,不是放在 Deno 沙盒的文件系统中,而沙盒只能保证代码使用沙盒来执行的时候不会逃逸(越权),但无法保证代码不利用沙盒以外的机制运行,理论上恶意代码完全可以不依赖 Deno 来访问当前用户的所有权限(比如 Linux 系统层级的木马,利用系统的调用来自动运行,或者冒充正常程序引诱管理员运行)。
    如果确实有需要将代码与 Linux 系统进行隔离,可以使用具备文件系统隔离能力的方案,比如容器和虚拟机,所有代码都存在于 image 中,不会直接被系统或管理员调用,必须在容器或虚拟机里运行,而容器和虚拟机确保其不会逃逸。
    用容器和虚拟机还有一个好处,就是 image 可以在 CI 环境里构建,构建完成能够进行安全扫描,确保没有恶意代码再部署到服务器正式环境,这样也可以消除恶意代码在应用业务层上的破坏。
    warcraft1236
        26
    warcraft1236  
       2020-06-22 11:14:06 +08:00
    不是,你本地都起了恶意程序了,还怎么保证安全?

    我一直没搞明白,你自己的电脑已经被注入恶意程序了,怎么还能天真的认为本地数据是安全的呢?
    shellus
        27
    shellus  
       2020-06-22 15:30:46 +08:00   1
    如果它能读取到 ~/.ssh/config
    那么它也能读取到~/.bash_history 和 ~/.ssh/id_rsa
    你只担心~/.ssh/config 干嘛?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2636 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 10:04 PVG 18:04 LAX 03:04 JFK 06:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86