V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
black11black
V2EX  ›  问与答

谈一下 ssh 加密的问题,个人观点,不需要证书

  •  
  •   black11black · 2021-01-03 07:30:54 +08:00 via Android · 869 次点击
    这是一个创建于 1180 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这两天首页看见好几个问 ssh 安全相关的帖子,分享一下我所知的安全知识吧,都比较基础,但应该也有不知道的朋友。有不对的地方大家也多批评指正。

    现在公网上的服务器,基本都处在 24 小时被扫描水平中。很多初识 linux 的朋友没干过的一件事是打开 var/log,打开仔细看看就知道了,即使没被人盯上,一天几万扫描正常。所以构建一个有基本防护性的远程机器应该是程序员入门,不说是必修课了,基本算预科吧。以下几个基本观点

    1 、Linux 本身不具备默认的安全防护机制。大家都知道 linux 登录,如果密码错误的话会等待一段时间才给提示的,给人一种心理暗示是他不会被人暴力破解。导致我当年从最开用 linux 之后过了很长时间,才知道 linux 原来默认可以无限试密码,而且没有任何辅助屏蔽机制。

    2 、基于上一点,linux 面对的首要安全威胁是暴力破解。尤其在局域网环境当中,尤其是当对方使用 gpu 这类工具进行暴力尝试的时候。起码我个人就听说过一些 gpu 用程序,名字不说了,如果你的机器使用的是弱密码(仅包含大写字母,小写字母,数字,且长度小于等于 10),在局域网内(如果网关方面没有特殊处理的话)我有很大把握,今天要你的口令,当天就能拿到。

    3 、安全对策方面,我在看之前帖子里,很多人说用证书登录。实不相瞒,我至今不会使用证书登录,也没有机器是用证书管理的,全部都是密码登录。因我一直感觉证书登录配置非常麻烦,在机器间切换也颇不易。

    4 、在暴力破解的对策方面,众所周知的是随着密码包含内容量上升,其破解时间会成几核倍数上升,所以最基本的安全策略是强密码。

    5 、安全配置方面,个人意见是要做到平衡,也就是不要搞极端,配置简单也是很重要的。个人推荐新机器进行如下安全配置,和理由:

    A 、不需要修改 ssh 端口,理由为不易管理,调多了端口号,会和架微服务搞出一大堆端口号一样让人分辨不清。且即使修改端口,也只是一定程度上针对算力的对策而已,只能一定比例地减少被扫描量。

    B 、禁用 root 用户登录。这么做有两点好处,其一是使用自建用户,相当于几何倍增加暴力破解复杂度(同时,可以随脑携带)。其二为,禁用 root 后,root 设弱密码其实也无所谓了,执行 sudo 命令时可以少打字。

    C 、不使用证书登录,使用强密码即可。

    D 、安装 fail2ban,保留默认配置。我早年使用 f2b 的时候还喜欢改改配置,后来发现按默认配置,也需要百亿台机器破解百亿年,似乎是完全不需要担心的时长。。

    E 、大概这么多就完事了,足以保证高枕无忧,其他的我感觉都没必要。有安全常识的人都应该知道,安全系统里最容易出问题的是人,第二容易出问题的反正不会是 linux 。部署服务方面,我个人部署经验中,遇到过网上下载 php 框架本身带毒的,遇到过 python 搭服务被拿下的(框架 tornado)
    9 条回复    2021-11-19 10:37:17 +08:00
    dingwen07
        1
    dingwen07  
       2021-01-03 07:42:42 +08:00 via Android
    为什么不使用 SSH Key 登录?
    phdh71
        2
    phdh71  
       2021-01-03 08:06:05 +08:00 via iPhone
    傻逼有点脑子的人就不会说出 C
    imnpc
        3
    imnpc  
       2021-01-03 08:11:25 +08:00   ❤️ 1
    一个 key 解决掉 99%的问题
    treblex
        4
    treblex  
       2021-01-03 08:22:11 +08:00 via iPhone
    反正我不用密码登录,你用吗,这年头谁用密码登录呀🤪

    一般用服务商的网页终端,google 的体验最好,阿里云的也还行,宝塔的最方便

    亚马逊初始化机器的时候就可以设置证书,挺方便的,所以比较常用命令行
    devld
        5
    devld  
       2021-01-03 08:37:48 +08:00 via Android
    我都是直接禁掉密码登录,从来没出过问题
    iamwho
        6
    iamwho  
       2021-01-03 08:47:49 +08:00
    冷知识:
    随便搜索一个教程,配置 ssh key 和了解 ssh config 五分钟都不需要。
    codehz
        7
    codehz  
       2021-01-03 09:21:59 +08:00 via Android
    (小知识:ssh 的认证模块是可以自己设计的,比如你还能在 x509 的 PKI 证书登录的基础上用 Yubikey 做二步认证)
    (小知识 x2:使用 port knocking 方案可以显著减少垃圾日志的出现)
    以及用 gpu 破解 ssh 密码是不可能的,即使密码登录,ssh 也没有泄漏任何关于密码本身的信息,不能通过计算拿到密码
    nfroot
        8
    nfroot  
       2021-01-03 11:30:47 +08:00
    我也不喜欢证书,不方便携带,设置的时候不能直接复制粘贴……

    如果密码没有长度限制的话,直接强密码确实能解决一切问题。

    但是据说早期的系统,密码再长,效果和短的差不多,搞不懂。。。。其实本质上证书也是强密码,只是长度更长而已。
    justaname
        9
    justaname  
       2021-11-19 10:37:17 +08:00
    @nfroot 实际上如果密码永不复用的话强密码确实足够了,除了分发跟证书没本质区别。但问题是人脑记忆的强密码不太可能不复用,如果借助第三方软件存储密码的话第三方软件本身就会成为最大的安全隐患
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1046 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:08 · PVG 03:08 · LAX 12:08 · JFK 15:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.