遇到 3 家公司不允许了,前两家是员工个位数的小作坊,搭建 gitlab 的人技术菜,我可以理解。
但是现在入职了中厂,有专门的的运维部门,运维人也不少,也不允许 ssh ,只能密码链接。
觉得无法理解,是有什么安全问题吗?
1
ericgui 2022-10-21 13:18:02 +08:00 21
还是菜呗
|
2
perfectlife 2022-10-21 13:18:25 +08:00
感觉用 ssh 协议访问 gitlab 应该没啥问题吧
|
3
greatghoul 2022-10-21 13:19:20 +08:00 via Android
的确不理解。有没有懂行的来讲一讲。
|
4
estk 2022-10-21 13:20:03 +08:00
我觉得应该 ssh ,而且账号必须开两步验证
|
5
edis0n0 2022-10-21 13:21:59 +08:00
1. SSH 不能加 SSL ,如果没有通过其它渠道公布 host key 可以被中间人攻击,即使是在内网
2. 可能是像 vsftpd 给 chroot 标记不安全的那种原因 反正我配的 GitLab 也不允许 SSH 连接,攻击面能少一个是一个 |
6
cheerxl 2022-10-21 13:23:21 +08:00
确实无法理解,我基本都用 ssh
|
7
mooyo 2022-10-21 13:25:25 +08:00
我觉得是菜...
|
8
yfugibr 2022-10-21 13:28:50 +08:00 via Android
是直接屏蔽了 22 端口的话,可以试试 443 端口的 ssh
|
9
answerhuang 2022-10-21 13:30:16 +08:00
去年公司做等保正要遇到过, 等保会扫描公司服务器, 扫到 gitlab 服务的 22 端口开了, 责令整改, 所以只能关掉了.
|
10
breadykidliu OP @edis0n0 soga
@yfugibr 试了```ssh -T -p 443 [email protected].**.com```但是返回```ssh: Could not resolve hostname ssh.git.**.com```是 443 也不允许的意思吗? |
11
breadykidliu OP @edis0n0 ssh 不行那 gpg 呢?
|
12
zhuweiyou 2022-10-21 13:38:51 +08:00
我们也不能用 SSH,据说是为了限制 IP 访问.
但 SSH 应该也有办法解决吧? (不了解) |
13
yfugibr 2022-10-21 13:42:22 +08:00 via Android
@breadykidliu 看着是没解析到域名?你们正常域名就是 ssh.* 的吗
|
14
yfugibr 2022-10-21 13:43:51 +08:00 via Android
@breadykidliu 另外如果是搭建的时候就没开 ssh 那就没办法了
|
15
e1o 2022-10-21 13:46:48 +08:00
我们公司一开始是可以 ssh 的,后来关掉了 ssh 只让用 http ,我也没搞懂
|
16
breadykidliu OP @yfugibr 正常是 git.**.com ,```ssh -T -p 443 git@git.**.com```请求返回 ```ssh_exchange_identification: Connection closed by remote host```那应该是是不行了- -
|
17
skull 2022-10-21 13:49:18 +08:00 3
当你的电脑被入侵了之后就不一样了
|
18
icyalala 2022-10-21 13:49:57 +08:00
中厂是什么概念?我经过的几个厂都是 ssh
|
19
breadykidliu OP |
20
ck65 2022-10-21 13:59:52 +08:00 1
就是 IT 技术不到位而已,不用研究太深。我们从 5 人团队起步,没听说过不能用 ssh 这类话题,人多起来之后为了安全加了一道 engineering vpn ,git 机器放内网,非常轻量。
|
21
liuidetmks 2022-10-21 14:05:34 +08:00
ssh 不是比密码更安全吗
|
22
jwangkun 2022-10-21 14:10:02 +08:00 2
SSH ,需要放开服务器的 ssh 协议给所有人,对于安全团队来说,绝对是不被允许的,在放开 git 的同时,也放开了远程登录的入口,风险太大了,理解一下安全人员吧,而且又不是不能用,为什么要公司为了将就你的习惯增加公司风险
|
23
mrzx 2022-10-21 14:13:01 +08:00 16
宝马总公司 IT 总部这里依然是建议不使用 ssh.
但的确开放出来了,并且对一个 ip 的 ssh session 做了限制。 是宝马内部的 gitlab. 一个是宝马内部网络很复杂,有很多专线网络互通采用 nat.你一个人把一整个分公司那可怜的 5 个 ssh session 给占满了,别人就用不了 另外一个问题是安全考量 你们觉得是因为菜才禁用,那是以你们程序员的视角来看的。。。运维人员反而觉得你们更菜,连基本的运维安全角度都没有考虑过,只觉得从自己单方面使用便利不便利的角度来看待事物。。。 |
25
cco 2022-10-21 14:17:28 +08:00
因为主管网络策略的部门不允许 ssh 连接。所以只能通过 https 去访问了,其实和菜没关系。我们测试环境和生产是同样的安全等级,你敢信- -。
|
27
neroxps 2022-10-21 14:18:24 +08:00
猜测是安全策略好做吧?所有 SSH 外部流量均拒绝?
|
28
f6x 2022-10-21 14:20:45 +08:00 4
@jwangkun git 的 ssh 根本不是服务器 login 的 ssh, 各自独立的. 端口一般都设成不一样的.
https 的 ssl 并不会比 ssh 的 ssl 安全, 都是一样的算法. 菜就是菜 |
29
anubu 2022-10-21 14:25:33 +08:00
#9 说的是一种可能。我司碰到过,等保扫描规则认为开放 22 就是不安全,从技术上解释也没有意义,规则就这么定的,这条就是不合格。
当然,可以开通非标准端口 ssh ,但也有额外沟通成本,可能就关掉省事吧。 |
30
redial39 2022-10-21 14:31:36 +08:00
@f6x 现在最辣鸡的安全设备,也不是按端口去封..按协议封是常态,都是按流量特征去识别的,而且大部分检测只要测到 22 都会被通告,对运维人员来讲
开,大概率被安全通报 针对客户端 ip 开,网络安全流程麻烦 还不如关了 |
31
SteveRogers 2022-10-21 14:33:34 +08:00 via iPhone 26
作为某大厂、安全策略实施者,我来终结此贴:因为 ssh 审计成本大,需要专门配置解密器,才能限制上传和下载两个权限。而 https 目前解密技术成熟、高效,可以快速识别。就是这么简单。别的地方不说、我这里最近半年就查到 10 起代码上传违规、不管起来、还不得上天?
|
32
weizhen199 2022-10-21 14:33:54 +08:00
因为 22 口是重点检测,大部分时候被一刀切了
|
33
Nitroethane 2022-10-21 14:37:42 +08:00 via iPhone
我记得可以在 git 的配置文件里指定用户名和密码,配置好之后不用每次输入了
|
34
shanyuhai123 2022-10-21 14:39:24 +08:00
@weizhen199 可以改端口的
|
35
int0x03 2022-10-21 14:41:46 +08:00 2
|
36
iyaozhen 2022-10-21 14:42:42 +08:00
感觉相反呀 只允许 ssh
因为 https 帐号密码更不安全,ssh 走 kinit 认证 |
37
zhhww57 2022-10-21 15:12:47 +08:00
sshd 又不是不能开两个,分别两个配置文件,然后那个用来做 git 的做好权限隔离
|
38
weeei 2022-10-21 15:24:54 +08:00
GitHub 建议 HTTPS ,没啥特别的原因,只是 HTTPS 相对来说更容易部署和防火墙不用做额外策略。
|
39
dog82 2022-10-21 17:12:57 +08:00
github 配 access token 就挺麻烦的
|
40
buppter 2022-10-21 17:12:59 +08:00
我们公司恰好相反,只能用 ssh
|
41
littlewing 2022-10-21 19:40:50 +08:00
应该是不让开放 22 端口
|
42
hefish 2022-10-21 19:54:40 +08:00
我搭的 gitlab 也不开 ssh ,http 也不开,为了安全。 提交都是用移动硬盘复制给指定的人然后合并的。
|
44
Nitroethane 2022-10-21 21:25:10 +08:00 via iPhone
@SteveRogers 很好奇是怎样的代码违规?能举个例子吗
|
45
SekiBetu 2022-10-21 21:28:54 +08:00
可能设了一些安全机制
|
46
adoal 2022-10-21 21:57:43 +08:00
劳动异化就变样了。专职安全岗位的人对安全的考虑,跟有安全意识、安全理念和安全技能的其他岗位(比如开发)是不太一样的。他们不但要从技术上考虑系统的“正常”安全加固,还要跟各种没有安全意识和能力的其他人员搏斗,要去补木桶的最短板,因此经常会采取一些在非安全岗位但有安全能力的技术人员眼中很没必要的沙雕措施。更何况,这是他们的岗位,所以除了对技术之外,也要(甚至更多地)考虑成本 /收益核算,考虑性价比,也包括考虑怎样给自己增加 KPI (哪怕会给业务运行或者技术开发带来一定的麻烦)。
|
47
adoal 2022-10-21 22:00:19 +08:00 1
安全岗位也不过是一口饭而已。照本宣科的大有人在。
|
48
JohnBull 2022-10-21 22:23:26 +08:00
上面信誓旦旦的几位谁能给我解释解释,为什么用 http 就能防止把公司代码传到外网?
|
49
swulling 2022-10-21 22:27:20 +08:00 via iPhone
@JohnBull 公司所有终端设备上装 root ca ,然后安全设备做中间人攻击,分析 https 内容是否有公司代码上传到 github 之类。ssh 协议直接防火墙 ban 掉。
|
50
JohnBull 2022-10-21 22:37:10 +08:00
@swulling 这种外网安全需求应该从外网访问的策略上限制啊,为什么让大家用 ssh 上传到公司自己的服务器也不行呢,这就叫懒政
|
52
GTim 2022-10-21 23:10:17 +08:00 1
因为,大部分人都不知道 git-shell 这东西。
|
53
swulling 2022-10-21 23:13:27 +08:00 via iPhone
|
54
Inn0Vat10n 2022-10-21 23:20:18 +08:00 2
在阿里集团 gitlab ssh/http 都支持,没有限制,自己选择
|
56
IvanLi127 2022-10-22 01:17:57 +08:00 via Android
@jwangkun Git 服务的 SSH 协议很危险吗?这货不是不支持远程登录进终端么,为啥说风险大?求科普
|
57
dnsaq 2022-10-22 01:39:09 +08:00 via iPhone
@IvanLi127 个人觉得安全性两种方式都一样,但是安全这个东西是个硬指标。最小化权限原则,就和企业服务器不允许对外开放 ssh 一样,能不开就不开。既然 gitlab 已经提供了 http 的方式就没必要再多开一个了。任何做法没有对与错,也无需大厂比较,自己爱咋用咋用。 觉得内网就安全的我只能说太年轻了,尤其是没做隔离的情况。 说人家菜的我只能说傻逼
|
58
ladypxy 2022-10-22 06:33:30 +08:00 via iPhone
无他,菜。
SSH 也可以配合 yubikey 之流做认证,完全不需要担心 ssh key 泄漏后的安全问题 |
59
liximomo 2022-10-22 08:53:55 +08:00 1
如果是安全原因,那么 github.com 是不是早就应该被黑客干烂了?
|
60
darklinden 2022-10-22 09:01:36 +08:00
gitlab 可以设置其他端口 ssh 访问啊,都不知道吗?不让用 22 可以换别的
而且 git 账户 ssh 是低权,ssh 远程登录也是不开放的 |
61
fox0001 2022-10-22 09:16:54 +08:00 via Android
是不是怕用户使用 ssh 登录 gitlab 服务器?
|
62
asuraa 2022-10-22 09:25:45 +08:00
我们公司就跟你们不一样 我们禁止密码连接 只允许 ssh 连接
|
63
James369 2022-10-22 09:41:44 +08:00
在我看来,90%的代码都是没用的,不要把代码看得那么值钱的样子,值钱的不是代码而是产品
|
64
nanmu42 2022-10-22 10:02:53 +08:00 via iPhone
Gitlab 的 ssh 本身的安全性还是挺有保障的,没有 shell ,我分析过,写了一篇文章:
当你 git push 时,Gitlab 上发生了什么? https://nanmu.me/zh-cn/posts/2022/what-happens-on-gitlab-when-you-do-git-push/ |
65
SteveRogers 2022-10-22 10:10:40 +08:00 via iPhone
|
66
SteveRogers 2022-10-22 10:12:03 +08:00 via iPhone
@nanmu42 企业安全不会考虑技术上的绝对安全,只考虑相对、关键好管控,能轻易抓到违规才是安全人员的职责
|
67
SteveRogers 2022-10-22 10:13:18 +08:00 via iPhone
@JohnBull 内网确实要允许,是安全人员偷懒了
|
68
libook 2022-10-22 10:14:15 +08:00 via Android
HTTPS 是 HTTP 外套 TLS/SSL ,协商的时候大体上是:客户端接收服务器公钥和签名,根据客户端上的 CA 证书来验证服务器可信(认证),然后使用服务器公钥发送客户端的公钥和数据,服务器用服务器私钥解密再用客户端公钥加密数据返回,客户端用客户端私钥解密。
SSH 是 Secure Shell ,协商的时候大体上是:客户端接收服务器公钥,然后看本地是否记录过,未记录再提示用户验证是否可信(认证),然后客户端生成对称秘钥,用 Diffie - Hellman 算法在不直接传输秘钥的情况下、以服务器公钥加密相关参数的形式然后服务器自己把这个对称秘钥算出来,然后双方通过这个临时对称秘钥加密通信。 总体来说只要验证身份阶段把好关、秘钥和算法足够强、私钥不泄露,两种方式都是十分安全的。 关于 SSH 端口,其实可以分开运维用端口和 Git 端口,一种简单方式是把 Git 服务部署在 Docker 等隔离环境中,内部配置 SSHD 仅允许 git 用户访问 git-shell ,需要运维则登录到宿主机再使用 Docker 的 exec 指令打开 shell 操作。SSH 不使用 22 端口,用户也可以在客户端配置 remote 的时候指定其他端口。 有的企业可能规定不允许记住登录状态,比如配置公钥自动登录这种就不符合要求,但其实可以打开两步验证,实际上现在等保会要求两种及以上验证方式同时使用。 个人认为题主的情况要么是因为其他原因,要么是运维人员水平有限,要么是安全负责人员懒政。 |
69
SteveRogers 2022-10-22 10:14:53 +08:00 via iPhone
|
70
SteveRogers 2022-10-22 10:16:59 +08:00 via iPhone
@James369 所以阿里、腾讯相对宽松一些、互联网的安全主要防攻击、对内部人员的行为不会太严,他们主要聚焦核心算法、或极少数核心代码、对大部分人设置红线。
|
71
SteveRogers 2022-10-22 10:17:41 +08:00 via iPhone
@darklinden 流量识别、你换啥端口都一样、我们后台看到的都是 ssh 协议
|
72
leonshaw 2022-10-22 10:49:46 +08:00 1
前面有说了,SSH 没有 PKI 支持,需要额外的 host key 信任机制。大家 ssh 的时候有几个会注意 finger print 的?
|
73
wangyzj 2022-10-22 11:06:58 +08:00
只用 https 对基础设施运维扩展长期是有好处的
对于流量监控审计也更方便 当然,不上规模的企业也不用考虑这些 |
74
ho121 2022-10-22 11:41:23 +08:00 via Android
盲猜是网关屏蔽了所有生产环境的 22 端口,gitlab 是只是顺带屏蔽了,而不是故意不开 gitlab 的 ssh
|
75
darklinden 2022-10-25 10:01:30 +08:00
@SteveRogers 我前面回复的是禁用 22 端口的问题。
为了拆所有的包看于是自定义证书然后只允许 https ?有路由不知道是 git 服务器的 ssh 连接,有记录不知道是 git 服务器的提交,所有代码提交都要安全部门过一遍,安全部门可以拿到所有的代码和更改?有种东厂西厂的感觉了 |
76
SteveRogers 2022-12-27 08:40:20 +08:00 via iPhone
@darklinden 22 禁用主要是不方便识别。公司出去的流量必须拆包识别出来、防止打包带走的行为的。
|