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

国内云服务器怎么做 ssh 安全防护

  •  
  •   Nazar1te · 2022-01-04 11:31:09 +08:00 · 6418 次点击
    这是一个创建于 1038 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前是几个云服用 wireguard 组了内网,然后 ssh 只允许 wireguard 网段访问

    如:

    Allowusers [email protected].*
    Allowusers [email protected].*
    Allowusers lighthouse@*
    Allowusers admin@*
    

    lighthouse 与 admin 分别是腾讯云和阿里云网页端的远程用户名。

    还有其他推荐的方法吗?

    42 条回复    2022-01-10 16:49:57 +08:00
    anonydmer
        1
    anonydmer  
       2022-01-04 11:42:05 +08:00
    我们的方法:
    anonydmer
        2
    anonydmer  
       2022-01-04 11:42:35 +08:00   ❤️ 1
    1. 只允许跳板机登录
    2. 跳板机要用 vpn 登录
    huangmingyou
        3
    huangmingyou  
       2022-01-04 11:45:01 +08:00
    禁用密码登陆,通过跳板机控制好证书
    mineralsalt
        4
    mineralsalt  
       2022-01-04 11:49:11 +08:00   ❤️ 1
    不要搞弱密码, SSH 非常安全, 不要庸人自扰, 随机一串大小写特殊字符的密码, 超级计算机出马都没用
    RangerWolf
        5
    RangerWolf  
       2022-01-04 11:49:27 +08:00
    @anonydmer VPN 有什么推荐的方案吗?
    @huangmingyou 想请教一下,跳板机怎么才算控制好证书?如果是多人协作呢?有推荐的方案吗?
    zlowly
        6
    zlowly  
       2022-01-04 12:00:39 +08:00   ❤️ 1
    同意 4 楼的。
    openssh 的真正有危害性的严重漏洞好像就那几个,打好补丁的情况下,强密码配合 fail2ban 即可,只要密码不泄露,就无需过多其他忧虑。
    另外个人认为其实大部分情况下做好管理的密码,比证书更安全。存放了证书的个人计算机,它的防护往往是更弱,漏洞更多的。
    tubowen
        7
    tubowen  
       2022-01-04 12:01:10 +08:00 via Android   ❤️ 1
    改默认端口,用公私钥对登录
    steptodream
        8
    steptodream  
       2022-01-04 12:04:07 +08:00
    @zlowly 证书也可以加密码啊, 莫非大家用证书都用的无密码模式。
    yaoyao1128
        9
    yaoyao1128  
       2022-01-04 12:09:59 +08:00 via iPhone   ❤️ 1
    禁止默认账户(云服务厂商的用户)
    实在需要登陆的时候 vnc 登陆
    善于使用安全组的话 关闭所有 ssh 的端口 需要的时候通过 api 或者页面再打开


    @zlowly 部分同意 但是密钥都能泄漏的场景密码一般也能得到 但是密码能获取的场景密钥不一定能得到 因为刚接触服务器的时候开 22 被一堆地址同时扫过 ssh 所以个人感觉加密的密钥才是相对安全的
    ragnaroks
        10
    ragnaroks  
       2022-01-04 12:10:46 +08:00   ❤️ 1
    禁止 root 远程登录,卸载 sudo ,需要提权时预先 su root 并使用定时更换的密码(我是 cron.daily 对当前日期取 sha1 设为密码)
    Nazar1te
        11
    Nazar1te  
    OP
       2022-01-04 12:21:42 +08:00 via iPhone
    @anonydmer 谢谢,只留一台跳板机入口确实是个好主意
    Nazar1te
        12
    Nazar1te  
    OP
       2022-01-04 12:23:29 +08:00 via iPhone
    @mineralsalt 主要是原来有一台计算云服被攻击用来挖矿了,当时那台机器开了公网 22 和 3306 ,密码也不算简单,所以想上 v2 来问下
    gesse
        13
    gesse  
       2022-01-04 12:23:47 +08:00   ❤️ 1
    修改默认端口+fail2ban+ssh 密钥对,难道还不够?
    Nazar1te
        14
    Nazar1te  
    OP
       2022-01-04 12:25:12 +08:00 via iPhone
    @zlowly 谢谢指导,没试过 fail2ban ,回去研究一下
    Nazar1te
        15
    Nazar1te  
    OP
       2022-01-04 12:29:16 +08:00 via iPhone
    @yaoyao1128 谢谢指导,ssh 端口全禁,通过页面打开稍微麻烦了点,api 可以考虑一下。另外请教下怎么看自己的端口有没有被扫过
    yaoyao1128
        16
    yaoyao1128  
       2022-01-04 12:42:51 +08:00 via iPhone
    @Nazar1te 扫端口不太了解了 我是看 ssh 日志和 fail2ban 的列表出现一堆……阿里云不太了解轻量 普通的云服务器安全组可以用 app 控制 api 的话 key 一定要保存好
    xuanbg
        17
    xuanbg  
       2022-01-04 13:02:25 +08:00
    IP 白名单
    iqoo
        18
    iqoo  
       2022-01-04 14:03:48 +08:00   ❤️ 1
    zlowly
        19
    zlowly  
       2022-01-04 14:26:30 +08:00
    @yaoyao1128
    @steptodream
    在我接触的环境里,空 passphrase 并不少见,弱 passphrase 暴力破解更是容易,当然这和各人安全防范意识相关。
    而且常常为了使用方便,都用各种 agent 先 load 私钥,理论上就存在可被窃取的安全隐患。
    安全木桶上短板越多越不安全啊。

    当然安全风险还是要自己根据自己环境评估的,在不和互联网联通的内部网络我就是用私钥的。
    yaoyao1128
        20
    yaoyao1128  
       2022-01-04 14:38:37 +08:00 via iPhone
    @zlowly 主要是 key 的话 攻击手段只能是针对现有正在使用的设备进行攻击 即使有了 key 也不能无差别的攻击 而密码的话 攻击点可以是多个 无差别攻击的人只需要随便尝试 而 key 丢失场景我觉得基本上是你电脑已经中招了 如果是用 agent 的话能想到窃取 key 的人一定能想到窃取密码和服务器地址 而不是被 agent 得到的话一般得到文件也不一定能知道密码和地址( ps 个人觉得 ssh 的 knownhosts 很不安全)
    adoal
        21
    adoal  
       2022-01-04 14:49:42 +08:00   ❤️ 3
    0. 保护好自己干活用的桌面机是一切安全的根本。
    1. 及时更新 /自动更新意义很大。
    2. 改端口号意义不大,只是降低被扫到的概率,对于防范入侵本身而言没有影响。
    3. 用公钥认证意义很大(其实不是证书,证书比这个复杂多了),另外公钥还可以另外加 pass pharse 再做到端的保护。
    4. 在多台服务器之间人工交互操作穿梭或者拷文件时,不要服务器上生成私钥做信任,要用-A 或者-J 通过最初始的 agent 认证。
    5. 高强度口令有一定意义(如果你不太能接受只允许公钥的话)。
    6. PermitRootLogin 关了有一定意义。
    7. 禁用 sudo 用 su 毫无意义而且可能适得其反,sudo 是可以配置很细的规则来限制访问的,而 su 就是一竿子到底。
    8. fail2ban / sshguard 有一定意义,不过其实那些试口令的肉鸡不太可能突破只允许公钥认证的设置,就是图个清静。

    不求全部认同,也不接受反驳。仅仅是自己的实践。
    CoderLife
        22
    CoderLife  
       2022-01-04 14:52:47 +08:00
    比较安全的, 后台做白名单
    yaoyao1128
        23
    yaoyao1128  
       2022-01-04 14:54:36 +08:00 via iPhone
    对了突然想起来以前用过后来觉得个人用意义不太大的一个功能 ssh 是可以进行 totp 二次认证的 安装一下谷歌验证器的 pam
    www.digitalocean.com/community/tutorials/how-to-set-up-multi-factor-authentication-for-ssh-on-ubuntu-20-04
    flexbug
        24
    flexbug  
       2022-01-04 15:00:29 +08:00
    用 fail2ban 拦截一下,在云防火墙那边给 22 端口设置白名单模式,只允许你们公司的 ip ,加上登录失败监控
    dangyuluo
        25
    dangyuluo  
       2022-01-04 15:06:04 +08:00
    国内服务器和国外服务器的安全防护有区别么?
    zlowly
        26
    zlowly  
       2022-01-04 15:11:57 +08:00
    @yaoyao1128
    我是这样想象网络攻击的(没做过黑产,纯猜测):
    如果我是攻击者,除非有内线有雇主目标明确之类,否则一般是全网撒网攻击。
    通过自动化工具来扫描、木马、邮件之类俘获大批机器,而这些机器哪些是有价值深挖的,就通过进一步批量植入木马,进行磁盘文件扫描,浏览记录扫描等等,过滤出有价值机器。
    而私钥文件太容易识别了,很容易被人针对。当攻击者知道自己掌握的的机器里有私钥文件,就有让他有进一步攻击的动机。因为个人机上的私钥,有可能管理着某个企业的大部分互联网资源,能榨取的价值显然比个人更高。
    Nazar1te
        27
    Nazar1te  
    OP
       2022-01-04 16:27:50 +08:00
    @yaoyao1128 谢谢,也是一种办法,正好手头有 canokey
    yaoyao1128
        28
    yaoyao1128  
       2022-01-04 16:39:12 +08:00 via iPhone
    @Nazar1te !那你可以直接用实体设备认证了 openssh 现在支持 u2f/fido 兼容的 key
    zong400
        29
    zong400  
       2022-01-04 16:41:00 +08:00
    ssh 按楼上老师的做法都很靠谱,服务器被攻破一般不是源于 ssh 而是其他不安全的端口漏洞被利用
    vicalloy
        30
    vicalloy  
       2022-01-04 16:47:31 +08:00
    1. 改端口几乎没有用,端口一下就给你扫出来了。
    2. private key 可以加 passphrase 做保护。用的时候加到 ssh-agent ,避免每次都要输入 passphrase 。注:mac 下将 passphrase 记到 key-chain ,然后 ssh-add -K 会自动 load private key
    xzysaber
        31
    xzysaber  
       2022-01-04 16:50:24 +08:00
    PasswordAuthentication no,这个也可以设置下,只公钥登录。
    ishalla
        32
    ishalla  
       2022-01-04 16:50:30 +08:00
    用 key 替代密码,感觉基本就够了
    alect
        33
    alect  
       2022-01-04 17:49:11 +08:00
    改端口+密钥登录一点儿事儿没有。
    morphyhu
        34
    morphyhu  
       2022-01-04 18:13:41 +08:00
    我们多加了一层。VPN--》 WINDOWS RDP -->JumpServer
    chiuan
        35
    chiuan  
       2022-01-04 18:39:11 +08:00
    只允许公司内网一台机子登录 跳板机 再登录

    其他设备都通过登录公司内网那台机子。例如通过 frp 登录内网机子。
    arischow
        36
    arischow  
       2022-01-04 19:55:28 +08:00 via iPhone   ❤️ 2
    https://goteleport.com/ 社区版也不错
    YouKnowIt
        37
    YouKnowIt  
       2022-01-04 20:07:12 +08:00
    @zlowly 一般不会针对你个人去搞你的个人计算机,用证书登录就行了。公网上的其实是一堆脚本小子瞎 jb 乱扫
    lovelylain
        38
    lovelylain  
       2022-01-04 21:37:39 +08:00 via Android
    防火墙禁用 ssh 端口,需要时通过其他方式启动 frp 进行中转。
    rastars
        39
    rastars  
       2022-01-04 21:46:03 +08:00
    高段位端口+ed25519 密钥登陆,注意保管好密钥,基本上没问题
    cwcc
        40
    cwcc  
       2022-01-04 21:58:01 +08:00   ❤️ 1
    其实国内还更安全一点,国外的服务器只要是个公网 IP ,基本上不换端口是 100 的扫描量,换了端口是 10 的扫描量(这里只做比较)。国内只要不是头铁,大厂上云服务器防止恶意登录措施还是挺齐全的,个人只要做好 SSH 强密码,证书登录,禁止 root 登录等常规措施就够了。

    高级玩法可以搭建蜜罐,搞假的 SSH ,骗字典。

    最佳实践方式和各大企业内网搭建方式一样,做到内外分离,规划网络拓扑,从根源、防火墙等层面对接入进行限制,做好关键薄弱环节的审计。
    iphoneXr
        41
    iphoneXr  
       2022-01-10 16:49:11 +08:00
    服务器没有公网 IP 只有私网 IP 的情况下 一般都比较安全!
    iphoneXr
        42
    iphoneXr  
       2022-01-10 16:49:57 +08:00
    目前我司的服务器基本都是 SLB 来做入口流量 SNAT 来做出口流量。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1017 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 21:58 · PVG 05:58 · LAX 13:58 · JFK 16:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.