非固定 IP 专线实现仅公司访问管理后台并内网部署堡垒机、gitlab

2022-12-07 14:49:36 +08:00
 tsfq007

背景:事发公司属于无专职运维人员公司,近期有现象表明由于可能存在的弱密码或漏洞,导致该公司后台数据及代码泄露。经了解,该公司所有服务及代码仓库都部署在云上,同时,为节约成本,该公司宽带无公网 IP ,无防火墙设备。

一、紧急措施

1 、创建管理后台云主机专用的安全组,管理后台所在的云主机重置新的弹性 IP ,并在安全组中将公司此时的公网出口 IP 加入 80 端口的白名单;

2 、创建通用安全组,并在安全组中,所有线上系统的云主机的将公司此时的公网出口 IP 加入 ssh 端口的白名单;

3 、创建 gitlab 专用安全组,同时,gitlab 服务器重置新的弹性 IP ,22 和 80 端口在安全组中将公司此时的公网出口 IP 加入白名单;

二、初步恢复手段

目的:由于出现之前的严重情况,后续该公司希望所有云上主机等运维只能通过公司内网进行,并提供远程接入公司网络的服务。

需要的资源:( 1 )性能处于中流的台式机设备一台;( 2 )公司业务量最大的区域的同一 VPC 网络下购买一台最低配的云主机,带宽方面先期按流量计费,使用非弹性公网 IP ,带宽计费方式后期根据情况进行调整;

1 、为不泄露相关信息,本文中,云主机公网 IP 设定为 11.11.11.11 ,VPC 内网 IP 为 172.16.0.143 ;该云主机创建后,我在上面部署了 frps ,并新建了专用安全组,保证 bind_port 已经开放,并保证后续要用到的 8000 端口不开放访问;配置如下,token 、端口和 dashboard 相关信息都是随机填写:

[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
token = 123456

完成填写后用以下命令启动:

nohup ./frps -c ./frps.ini >/dev/null 2>&1 &

2 、在对方公司本地,台式机配置为 i5-7600 ,内存 16G ,SSD 为 512G ,符合目前需求。该台式机我无法成功安装 exsi ,为了尽快投入使用,我安装了 win10 ,并在上面安装了 Virtualbox 和 todesk (方便管理);

3 、在 win10 本地,我设置该机内网 IP 为 192.168.1.240 ,然后在上面部署 frps 和 frpc ,配置分别如下,同样,token 、端口和 dashboard 相关信息都是随机填写;

//frps.ini
[common]
bind_port = 8000
dashboard_port = 8500
vhost_http_port = 80
vhost_https_port = 443
dashboard_user = admin
dashboard_pwd = admin
token = 123456
//frpc.ini
[common]
server_addr = 11.11.11.11
server_port = 7000
token = 123456

admin_addr = 127.0.0.1
admin_port = 2000

[frptcp]
type = tcp
local_ip = 127.0.0.1
local_port = 8000
remote_port = 8000
use_encryption = true
use_compression = true

完成填写后在 cmd 中用以下命令启动:

C:\frp\frps.exe -c C:\frp\frps.ini
C:\frp\frpc.exe -c C:\frp\frpc.ini

完成填写后在 cmd 中用以下命令进行重载:

C:\frp\frpc.exe reload -c C:\frp\frpc.ini

4 、对方使用的域名以 aaa.com 为例,管理后台所在的云主机为 172.16.0.111 ,以此为例,在最后购买的云主机 172.16.0.143 进行操作;以上操作时,需要被连接的主机的端口在安全组对 frps 所在的云主机进行内网 IP (同一区域的 VPC )或外网 IP (不同区域或同一区域不通 VPC 网络)开放;

//frpcgs.ini
[common]
server_addr = 127.0.0.1
server_port = 8000
token = 123456

admin_addr = 127.0.0.1
admin_port = 2000

[adminssh]
type = tcp
local_ip = 172.16.0.111
local_port = 22
remote_port = 10000
use_encryption = true
use_compression = true

[adminweb]
type = http
local_ip = 172.16.0.111
local_port = 80
custom_domains = admin.aaa.com
use_encryption = true
use_compression = true

完成填写后用以下命令启动:

nohup ./frpc -c ./frpcgs.ini >/dev/null 2>&1 &

后期如果是添加或删除等更改,可以使用以下命令 reload ,无法对 frpc 进程杀了重启;

./frpc reload -c ./frpcgs.ini

完成后 admin.aaa.com 的解析切换到 192.168.1.240 ,并删除管理后台所在的云主机的弹性 IP ;

5 、在 Virtualbox 新建一个 Other Linux ( 64-bit )的虚拟机,配置为 2 核 4G ,最大存储为 100G ,安装 centos7 ,安装完后,网络设置为桥接,IP 配置好 IP 为 192.168.1.241 ,完成后使用以下命令自动完成 jumpserver 的安装:

curl -sSL https://github.com/jumpserver/jumpserver/releases/download/v2.16.3/quick_start.sh | bash

jumpserver 完成安装和配置后,添加云上主机时,图标 1 中填入 192.168.1.240 (本地 frps 所在的 IP ),端口填入代理回来的端口号;

6 、在 Virtualbox 新建一个 Other Linux ( 64-bit )的虚拟机,配置为 2 核 4G ,最大存储为 100G ,安装 centos7 ,安装完后,网络设置为桥接,IP 配置好 IP 为 192.168.1.242 ,完成后安装 gitlab ,设置完后将代码导入。由于本文使用的是台式机,无硬盘安全保证,在目前的情况下,在对方公司制度上要求每周第一个工作日备份一次镜像,然同时复制到两个不同的移动硬盘中,以防设备损坏造成代码丢失;

7 、在 Virtualbox 新建一个 Othe 的虚拟机,配置为 1 核 1G ,最大存储为 5G ,安装爱快。爱快安装完成后,在虚拟机界面开放 WEB 的 WAN 口访问,并将 eth0 绑定给 WAN1 ,并将 WAN1 的 IP 设置为 192.168.1.243 。完成以上操作后,设置回公司的 OPENVPN ,将如图红框标注的部分设置为 TCP ,这样操作的原因在于目前国内运营商存在对 UDP 过分 Qos 的情况;

在本地 frpc 所在的 win10 上,增加以下配置,配置完成后重载 frpc ,并将配置中的目标端口 TCP 55555 在云端 frps 的安全组中对公网开放;

[adminssh]
type = tcp
local_ip = 192.168.2.243
local_port = 1194
remote_port = 55555
use_encryption = true
use_compression = true

需要注意的是,从爱快上下载的 OPENVPN 配置,需要改变红框标注的 remote 的配置,按实际情况填写;

三、后期规划方案

规划原因:目前的方案只是解决了棘手的问题,但由于台式机相对不稳定的特点,建议后期迁移到真正的服务器上;

需要增加的设备:( 1 )一台服务器,装 exsi ,硬盘 raid1 ;( 2 )购买一台迷你主机,上面装爱快,做为软路由;

后期规划:( 1 )去掉本地的 frps ,在云端部署 openvpn ,用软路由接入;( 2 )将回公司的 VPN 迁移到软路由上;( 3 )剩下的虚拟机全部迁往服务器做虚拟化。

2069 次点击
所在节点    分享创造
14 条回复
perfectlife
2022-12-07 15:06:30 +08:00
直接云上部署个 vpn 本地连接使用呗,真是只能公司内网用 回家后就不访问了,尤其是公司没固定 ip
tsfq007
2022-12-07 15:28:48 +08:00
@perfectlife 这样的缺点是云服务器还是没办法统一管理;然后减少非技术人员的使用难度
perfectlife
2022-12-07 15:56:04 +08:00
@tsfq007 打了很多还是删了,只因看到第一行没运维, 请个运维吧 ,没运维 开发那不是八仙过海各显神通 ,安全的最大问题是人不关别的啥事
zealic
2022-12-07 16:15:23 +08:00
我选 Wireguard
defunct9
2022-12-07 17:34:22 +08:00
罗里吧嗦一大套,是来 show 技的么
ltruntu
2022-12-07 17:37:52 +08:00
拉个公网办公的 ip 不就好了
ltruntu
2022-12-07 17:42:10 +08:00
堡垒机 git 都部署在云上 公网端口关闭,只允许 frp 走 本地去连 就走 frp 代理一下不就好了 写那么多谁来看
adoal
2022-12-07 17:42:27 +08:00
这是在纵容事发公司后续依然不重视运维
lower
2022-12-07 17:49:02 +08:00
我以前负责的项目也出现过类似的事情,
我加了很多操作的跟踪行为日志,蹲了好几个晚上,终于抓到可疑的账号和 IP 了。。。。
公司法务根据这些信息,把离职的前员工诈出来承认了😂
kiddingU
2022-12-07 18:21:25 +08:00
@perfectlife 没固定 IP 问题也不大吧,DDNS 就行了
ishalla
2022-12-07 20:56:19 +08:00
我想说 frp 这种产品真的敢用在 enterprise solution 里啊。。
过得了 compliance 、security 和 qa 三堂会审?
yujizmq
2022-12-08 01:35:14 +08:00
@ishalla “无专职运维人员”,规模应该不大,也许并不在意这点
当然,我也不建议在企业环境用 frp 之类的工具。
billytom
2022-12-08 05:42:09 +08:00
这种事情,一看就应该是 VPN 的范畴了,拆东墙补西墙,最终问题只会越来越多
perfectlife
2022-12-08 12:43:47 +08:00
@kiddingU 可以但是我认为企业没必要用 ddns ,个人用用也就算了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX