V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wslzy007
V2EX  ›  信息安全

vps:一种安全访问 ssh 的方法

  •  
  •   wslzy007 · 2020-11-23 11:52:29 +08:00 · 10655 次点击
    这是一个创建于 1467 天前的主题,其中的信息可能已经有所发展或是发生改变。

    去掉前奏直接来:
    1 、在 vps 对应管理端在安全组中拒绝 22 端口访问
    2 、使用端口反弹工具进行反向连接访问

    • 访问路径:sshclient-》 proxy-〉 vps 反向连接隧道-》 vps localhost:22
    • 反向隧道工具有很多选择,按个人喜好。推荐一个自撸工具 sg:github.com/lazy-luo/smarGate

    如此可以做到:无法直接访问 vps,使用自己的代理可以访问

    第 1 条附言  ·  2020-11-24 00:33:39 +08:00
    附上自己的使用方式:
    1 、手机上有 proxy
    2 、vps 上启动 proxy 但只外连不监听
    3 、两个 proxy 最终会以 tcp 方式建立 p2p 隧道(通过第三方服务器协商地址)
    4 、电脑 ssh 客户端访问手机 proxy,通过隧道访问 vps 上 localhost:22
    ps:以透明代理方式访问,因此会在隧道中进行正常 ssh 握手(隧道为普通 tcp 连接)
    好处:
    1 、vps 上没有任何监听端口对外服务,除了 ddos 外,安全坚固
    2 、手机网络是私有网络,安全
    3 、带着手机,随时随地访问服务器
    81 条回复    2021-05-23 00:15:05 +08:00
    boris93
        1
    boris93  
       2020-11-23 12:27:48 +08:00 via Android   ❤️ 2
    but why?
    复杂密码,或者证书,已经可以实现足够的安全性
    还不够的话可以改掉端口,这就足以挡掉那些自动扫描脚本了
    wslzy007
        2
    wslzy007  
    OP
       2020-11-23 12:34:35 +08:00   ❤️ 1
    强密码证书类的挡不住软件漏洞

    其实这是个通用思路,关键是将私有服务器的公共访问私有化,等同于内网访问,提升安全级别
    deorth
        3
    deorth  
       2020-11-23 12:57:54 +08:00
    其实就是多加了一层认证手段
    我用类似的方法来访问 web/rdp/vnc 等弱密码保护的服务,但是 ssh 就没有用,原因同#1,ssh 安全性经过合适的配置后,已经够强了
    oxromantic
        4
    oxromantic  
       2020-11-23 13:00:15 +08:00
    实用性很低,不如只开放 22 端口给自己的 ip,别和我说这个也有漏洞,这个漏洞比你用反向隧道漏洞几率小多了
    Jirajine
        5
    Jirajine  
       2020-11-23 13:03:26 +08:00 via Android
    @deorth 你说的那些也没必要,只要 ssh 安全,其他的可以用 ssh 端口转发出来。
    sagaxu
        6
    sagaxu  
       2020-11-23 13:03:52 +08:00 via Android   ❤️ 3
    端口敲门了解一下
    boris93
        7
    boris93  
       2020-11-23 13:07:27 +08:00 via Android
    怕软件漏洞那就封锁所有入站连接吧
    别的东西也有漏洞
    wslzy007
        8
    wslzy007  
    OP
       2020-11-23 13:12:17 +08:00
    仁者见仁吧,安全的事,你要没摊上那永远就是别人的事。。。
    网络远程攻击 /渗透主要是钉的蛋壳上的缝,对于部分私有应用,完全可以只监听 localhost,去掉对外监听也就断了被攻击的路
    漏洞的事不谈也罢,毕竟过于触目惊心
    boris93
        9
    boris93  
       2020-11-23 13:19:43 +08:00 via Android   ❤️ 4
    @livid 看了眼楼主的发帖历史,有多个类似帖子提到他的 smarGate,是否算是推广?
    wslzy007
        10
    wslzy007  
    OP
       2020-11-23 13:23:37 +08:00
    @boris93 很久没推广了,简单工具而已,反正也不打算收费。大家忽略 sg 即可,只讨论安全
    wslzy007
        11
    wslzy007  
    OP
       2020-11-23 13:26:46 +08:00
    本帖是有感而发,源自“小米内网穿透事件”的帖子,对于个人而言比较推崇“内网”到“内网”的安全访问。
    locoz
        12
    locoz  
       2020-11-23 13:26:49 +08:00 via Android
    说白了这就跟用 zerotier 或其他 VPN 工具连接没啥差别,而且还更麻烦些
    wslzy007
        13
    wslzy007  
    OP
       2020-11-23 13:31:13 +08:00
    @locoz
    端口映射和类 vpn 工具是不同的,vpn 是网络二层打通,相当于直接开放子网,一般是采用 tun/tap 驱动。
    端口映射就是单纯的点到点的打通,看使用场景
    chengzi168
        14
    chengzi168  
       2020-11-23 13:31:55 +08:00 via Android
    忍不住小声问一句,SSH 是哪几个单词的缩写。。。
    deorth
        15
    deorth  
       2020-11-23 13:52:05 +08:00
    @Jirajine 之前用了一段时间的 ssh 转发端口,但是并不方便,需要针对每一个端口起一个 ssh 进程,还会经常断开。目前使用 v2ray 转发端口,web 类的服务则不需要转发端口,访问时走 socks5/http 代理即可,只需要在客户端侧的内网中有一个 v2ray 进程,还可通过旁路由+透明代理实现客户端机器无需配置,这都是 ssh 转发无可比拟的
    xuanbg
        16
    xuanbg  
       2020-11-23 14:12:02 +08:00
    白名单最安全,又简单。
    webshe11
        17
    webshe11  
       2020-11-23 14:12:12 +08:00 via Android
    @chengzi168 secure shell
    DoctorCat
        18
    DoctorCat  
       2020-11-23 14:16:05 +08:00
    你这个方案太麻烦了, 我目前在用 autossh + 腾讯云,足以解决问题。安全可以充分利用安全组策略,放你自己的 IP 白名单
    Maboroshii
        19
    Maboroshii  
       2020-11-23 14:16:33 +08:00
    proxy 被破了怎么办? 中间这么长一串不还是相当于透明代理么,不明白意义在哪。除非改成私有协议
    wslzy007
        20
    wslzy007  
    OP
       2020-11-23 14:20:14 +08:00
    @Maboroshii
    proxy 无对外服务端口,除非自身不稳定。这个无门槛,也可以自己写一个代理
    @DoctorCat
    ip 白名单不好做,客户端都是动态 ip
    luoleng
        21
    luoleng  
       2020-11-23 14:32:24 +08:00
    有点看不懂,proxy 无对外服务端口的话,还可以访问?
    wslzy007
        22
    wslzy007  
    OP
       2020-11-23 14:33:05 +08:00
    @luoleng 反向连接代理
    natashahollyz
        23
    natashahollyz  
       2020-11-23 14:41:25 +08:00
    改端口,秘钥,白名单,足够了。不需要那么复杂
    DoctorCat
        24
    DoctorCat  
       2020-11-23 14:48:41 +08:00
    @wslzy007 有安全组 API 呀,脚本执行更新,自动化。
    Mashirobest
        25
    Mashirobest  
       2020-11-23 14:55:42 +08:00 via Android
    不太需要,安全和便利很多情况下是相冲突的,我认为白名单加证书够我用了,太复杂我都懒得登上去🙃
    zro
        26
    zro  
       2020-11-23 14:59:00 +08:00
    我就暴露 VPN 端口,开机自动连接,如果连不上,再用网页端 SSH 上去查。。
    Te11UA
        27
    Te11UA  
       2020-11-23 15:14:01 +08:00
    大可不必,改端口用公钥就可以了
    Caan07
        28
    Caan07  
       2020-11-23 15:24:22 +08:00
    其实,改了端口,用公钥,禁止账号已经适用大部分人。因为如果真的是系统和常用软件的问题,沦陷的就不只是你了。

    其实限制 IP 也可以增加安全系数,但如果他不是固定 IP,又要增加难度了。
    firefox12
        29
    firefox12  
       2020-11-23 15:30:20 +08:00   ❤️ 1
    什么意思? 你本地 ssh client 连 proxy, proxy 搭建在那里? vps 上面? 通过 proxy 反向连 vps 的 127.0.0.1 ??
    doveyoung
        30
    doveyoung  
       2020-11-23 15:34:59 +08:00
    改端口,禁密码,加防火墙,求你来打我……
    当然不是说万无一失,只是攻击成本那么高,何必针对我一个小小主机呢,去搞大厂的不好吗
    VgV
        31
    VgV  
       2020-11-23 15:46:14 +08:00
    @Caan07 我以前也是改端口用公钥,再加限制 IP,用 sh 脚本 ping 某个指定域名得 IP 加白,比如花生壳,然后绑定在路由器上。。后来觉得太麻烦了,就只改端口用公钥了。
    opengps
        32
    opengps  
       2020-11-23 15:53:33 +08:00
    其实,我用过的最安全的,还是以前的物理机房时候的用 vpn 拨入内网再内网管控。只有对外业务端口是开放的,任何管理端口都用 vpn 拨入后才能走内网连接上
    注意我说的 vpn 不是帖子里常见的 vpn 的用法。
    jisibencom
        33
    jisibencom  
       2020-11-23 16:03:11 +08:00
    这种需要注册需要第三方的不可靠。
    hzqim
        34
    hzqim  
       2020-11-23 16:14:31 +08:00
    fail2ban+白名单。
    CSM
        35
    CSM  
       2020-11-23 16:17:46 +08:00   ❤️ 1
    楼主标题写反了 /doge

    ssh:一种安全访问 vps 的方法
    lbyo
        36
    lbyo  
       2020-11-23 16:27:59 +08:00
    msg7086
        37
    msg7086  
       2020-11-23 16:42:49 +08:00
    大公司有 VPN 做管控,小公司的话正常配置好的 ssh 就一把梭了。
    实在怕的话可以配置端口敲门。
    mytsing520
        38
    mytsing520  
       2020-11-23 17:07:27 +08:00
    为了安全考虑,我不会加个堡垒机么
    parametrix
        39
    parametrix  
       2020-11-23 17:18:41 +08:00   ❤️ 1
    防火墙白名单之类的方案不解决链路上的中间人攻击。

    各种改端口对一些机器扫描有作用,但对稍微认真点的攻击者没有意义,端口毕竟就那么多。

    整这些还不如老实把 SSH 配置好,私钥登陆并限制 root 账户。SSH 算得上是最被长时间广泛使用、审计的软件之一了,没有正确的私钥根本连链接都无法完整建立,安全性绝对不会输给流行浏览器 TLS 的实现。说白了 SSH 的密码学实践的可靠程度碾压各路 VPN,只要配置得当,我认为没有画蛇添足的必要。Github 全站仓库权限依赖 ssh,也没听说谁的仓库因为 ssh 漏洞出问题。
    ShuA1
        40
    ShuA1  
       2020-11-23 17:18:41 +08:00
    @wslzy007 软件漏洞直接 getshell 端口反弹
    eason1874
        41
    eason1874  
       2020-11-23 17:45:58 +08:00
    我的做法跟 #18 楼类似,通过安全组 API 自动设置白名单,连接的时候才打开端口,不连的时候连端口都不开,避免流量骚扰。
    andyliu24
        42
    andyliu24  
       2020-11-23 20:01:59 +08:00
    特定 IP 放行不行吗?为什么要反向隧道……
    l4ever
        43
    l4ever  
       2020-11-23 20:04:27 +08:00
    搞这么麻烦,
    port knocking 或者 2fa 不香?
    firefox12
        44
    firefox12  
       2020-11-23 20:06:10 +08:00
    我觉得他的想法是 ssh 的端口 外面用户可以连上不安全,所以放在 127 上面 然后利用 proxy 来连,ssh 是安全了, 你的 proxy 安全吗? 你的 proxy 被 ddos 了,你连 ssh 都没机会连了。ssh 的安全防护 在 proxy 上不得都来一次? 你的 proxy 的加密方式比 ssh 的好? 你和 proxy 的通讯又是一种裸奔。
    mxT52CRuqR6o5
        45
    mxT52CRuqR6o5  
       2020-11-23 20:10:45 +08:00
    直接设置白名单一样效果,根本不需要什么反弹工具
    mxT52CRuqR6o5
        46
    mxT52CRuqR6o5  
       2020-11-23 20:11:41 +08:00
    而且操作不好或者被攻击还会有无法访问的风险
    chengzi168
        47
    chengzi168  
       2020-11-23 20:17:51 +08:00 via Android
    @lbyo 看来没 get 到点。SSH secure shell,人家本来就是安全的 shell,自带一堆可以提高安全的工具,为啥还要自己造个轮子。
    smilingsun
        48
    smilingsun  
       2020-11-23 20:47:00 +08:00
    love
        49
    love  
       2020-11-23 21:23:35 +08:00 via Android
    先想想你的服务器数据有没有 ssh 0day 有价值
    K4
        50
    K4  
       2020-11-23 23:38:48 +08:00 via iPhone
    也就是说把“ssh 的安全风险”转嫁到了一个“端口反弹工具”上?你确定这个“端口反弹工具”比 ssh 还安全?
    K4
        51
    K4  
       2020-11-23 23:42:25 +08:00 via iPhone
    @mytsing520 把“ssh 的安全风险”转嫁到了一个“堡垒机”上?你确定这个“堡垒机”比 ssh 还安全?

    感觉这句话可以复制修改来怼好多评论🤦‍♂️
    K4
        52
    K4  
       2020-11-23 23:44:27 +08:00 via iPhone
    @CSM 👍😂
    imycc
        53
    imycc  
       2020-11-24 00:11:42 +08:00
    改端口,端口白名单只开放给堡垒机,堡垒机通过 VPN 连,VPN 和堡垒机的登录用 MFA 验证
    禁密码登录,生成私钥的时候强制用复杂密码(防止修电脑泄露)

    做到这样就足够了吧。担心 SSH 的漏洞还不如搞好服务器的白名单管理,别什么乱七八糟的服务都开到外网
    akira
        54
    akira  
       2020-11-24 00:22:50 +08:00
    以前也有过同样的想法。
    wslzy007
        55
    wslzy007  
    OP
       2020-11-24 00:25:45 +08:00
    @firefox12
    自己的使用方式是:
    1 、手机上有 proxy
    2 、vps 上启动 proxy 但只外连不监听
    3 、两个 proxy 最终会以 tcp 方式建立 p2p 隧道(通过第三方服务器协商地址)
    4 、电脑 ssh 客户端访问手机 proxy,通过隧道访问 vps 上 localhost:22
    ps:以透明代理方式访问,因此会在隧道中进行正常握手(隧道为普通 tcp 连接)
    好处:
    1 、vps 上没有任何监听端口对外服务,除了 ddos 外,安全坚固
    2 、手机网络是私有网络,安全
    3 、带着手机,随时随地访问服务器
    no1xsyzy
        56
    no1xsyzy  
       2020-11-24 01:05:56 +08:00
    @deorth 看下 ssh -D 选项,不需要 v2ray,直接走 socks5 代理
    GeruzoniAnsasu
        57
    GeruzoniAnsasu  
       2020-11-24 01:08:18 +08:00   ❤️ 2
    .................. 为什么总有人以为自己机子被日了是 ssh 的原因

    绝大多数入侵都不是从 ssh 进去的
    no1xsyzy
        58
    no1xsyzy  
       2020-11-24 01:19:24 +08:00
    建议学习 linus 定律:足够多的眼睛,就可让所有问题浮现
    拿大教堂与集市的比喻来说,名不见经传的业余人士构造的私有协议和私有实现基本就跟创建兄弟会差不多。
    yjd
        59
    yjd  
       2020-11-24 01:51:21 +08:00 via Android
    我没记错的话,几年前有个啥公司,就是公司员工凭据被盗,导致全被拿下。好像是方程组?
    你中间转发的代理机,web (如果有),客户端。可突破的点又不只一个
    secondwtq
        60
    secondwtq  
       2020-11-24 02:09:02 +08:00
    前段时间在 GitHub 上看到个项目: https://github.com/skeeto/endlessh
    大致思路是故意打开 22 端口,并且接受所有连接,但是不进行真实的数据交换,就在那拖着
    ruidoBlanco
        61
    ruidoBlanco  
       2020-11-24 06:15:23 +08:00   ❤️ 1
    闲得蛋疼。禁用密码登录,fail2ban,禁止 root 登录,我这么用了十几年屁事没有。
    mytsing520
        62
    mytsing520  
       2020-11-24 07:14:38 +08:00
    @K4 233333
    deorth
        63
    deorth  
       2020-11-24 07:35:37 +08:00
    @no1xsyzy 最早没有 shadowsocks 的时候大家都是用这种方法科学上网的,为什么发明了 ss/ssr,再到 v2ray,因为需求是在增长的。我现在的需求早就不是一个转发的 socks5 代理能解决的了(何况据说这玩意还容易导致你的 VPS 被墙,反正我是不敢多用)
    learningman
        64
    learningman  
       2020-11-24 09:12:19 +08:00
    @oxromantic 什么叫做自己的 IP 。。。家宽 IP 会换,如果是另外一台服务器的话,一是麻烦,二是那台忘记续费了两边一起炸
    no1xsyzy
        65
    no1xsyzy  
       2020-11-24 09:18:22 +08:00
    @deorth 淦,你说的是科学上网么……
    开 -R 和 -D 是为了 VPS 上监听 127.* 的服务啦……
    no1xsyzy
        66
    no1xsyzy  
       2020-11-24 09:21:13 +08:00
    @learningman 有一种方式 IP 变动就登控制台改安全组。
    deorth
        67
    deorth  
       2020-11-24 09:28:28 +08:00
    @no1xsyzy 我现在在客户端只需要起一个 v2ray,便可同时实现在外访问家里服务 /科学上网。
    owt5008137
        68
    owt5008137  
       2020-11-24 09:32:19 +08:00 via Android
    搞得好像 ssh 有漏洞,代理软件就没漏洞一样。
    wslzy007
        69
    wslzy007  
    OP
       2020-11-24 09:37:09 +08:00
    有明白人,也不缺杠精
    安全没有绝对,之前说过了,试图探讨一种针对私有资源通用的安全解决方案( ddos 攻击不讨论),重点就 3 个:
    1 、vps 主机关闭所有对外监听
    2 、在 1 )这个约束下想办法让自己能够访问
    3 、进一步思考如何保证只有自己能访问
    NilChan
        70
    NilChan  
       2020-11-24 09:44:15 +08:00 via Android
    服务提供商不是都提供 web console 吗?偏要干的话,关闭全部端口,只用 web console 就行了。
    Felldeadbird
        71
    Felldeadbird  
       2020-11-24 10:06:40 +08:00
    思路是不错,但是还不如做一台中转机。 用的时候才开启 中转机。然后内网连接 目标服务器。

    在刺激点,外网服务器反代内网目标服务器。 这样外网服务器就是被黑了。我换一台反代就可以了。
    moonfly
        72
    moonfly  
       2020-11-24 10:12:20 +08:00
    顺带歪个楼;
    虽然还没用过 lz 写的 SG 工具,但看到 lz 的功能介绍,让我想到了我前公司的一款产品;

    部署在客户内网的一台定制化 Linux 系统,不对公网开放任何端口;但 web 管理界面上提供原厂在线技术支持服务;
    客户点击发起远程支持后,系统底层就起一个 ssh 的反向 tunnel 连回到公司的服务器并获取一个 ticket,
    我们售后工程师通过这个 ticket 在公司的服务器上获取对应客户反向连接的随机分配端口号,直接 ssh 就可以登录客户内网的系统上处理问题了;

    所以我觉得 ssh 真的是又安全又强大;
    ssh -L 、ssh -R 、ssh -D 菜刀 3 连,简直是渗透神器!
    wslzy007
        73
    wslzy007  
    OP
       2020-11-24 10:27:18 +08:00
    @moonfly 思路上是契合的
    差异在于(同样的场景为例):
    1 、sg 无需在定制化 linux 中运行,任意一台内网设备即可。不依赖 ssh,仅仅单纯提供安全隧道
    2 、sg 无需获取 ticket,依赖用户登录会话进行识别,完整的用户间隔离
    3 、远程支持的随机端口是在客户端按需配置的,客户端为手机移动 app
    Tonni
        74
    Tonni  
       2020-11-24 11:20:57 +08:00
    我就是使用类似的思路来访问家里的网络的,内网里只通过 frp 暴露出来一个 aes-256-gcm 协议的 ss 代理,然后访问内网的请求都走这个代理。现在无论 clash 还是 surge 都支持通过域名访问特定的代理,比直接暴露服务出来安全多了。
    wslzy007
        75
    wslzy007  
    OP
       2020-11-24 11:51:30 +08:00
    @Tonni
    多了一层防护而已,毕竟还是将 ss 代理直接暴露公网了
    nmap
        76
    nmap  
       2020-11-24 11:51:36 +08:00
    换个思路吧:ssh 端口日常是关闭的,按需开放,比你那个简单可靠多了
    danc
        77
    danc  
       2020-11-24 14:00:59 +08:00
    @wslzy007 大佬碰到过 SSH 的漏洞没,只要你不设弱口令被人猜到,你听到谁的 SSH 被破掉了?
    kestrelBright
        78
    kestrelBright  
       2020-11-24 15:00:11 +08:00
    @nmap +1
    VgV
        79
    VgV  
       2020-11-24 19:33:57 +08:00
    @nmap 大佬这么一说,我就想起来了,我以前也搞过,/t/391395

    @wslzy007
    cwyalpha
        80
    cwyalpha  
       2020-11-25 10:49:38 +08:00 via iPhone
    ssh 就默认的 22 口令复杂点 加个 fail2ban
    主要的问题还是其他服务,netstat 看看开了哪些口对应哪些服务,还有没弱口令,定期修洞。
    impig33
        81
    impig33  
       2021-05-23 00:15:05 +08:00
    sshclient -> vps 酸奶 -> sshd
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 05:45 · PVG 13:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.