背景:事发公司属于无专职运维人员公司,近期有现象表明由于可能存在的弱密码或漏洞,导致该公司后台数据及代码泄露。经了解,该公司所有服务及代码仓库都部署在云上,同时,为节约成本,该公司宽带无公网 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 )剩下的虚拟机全部迁往服务器做虚拟化。
1
perfectlife 2022-12-07 15:06:30 +08:00
直接云上部署个 vpn 本地连接使用呗,真是只能公司内网用 回家后就不访问了,尤其是公司没固定 ip
|
2
tsfq007 OP @perfectlife 这样的缺点是云服务器还是没办法统一管理;然后减少非技术人员的使用难度
|
3
perfectlife 2022-12-07 15:56:04 +08:00
@tsfq007 打了很多还是删了,只因看到第一行没运维, 请个运维吧 ,没运维 开发那不是八仙过海各显神通 ,安全的最大问题是人不关别的啥事
|
4
zealic 2022-12-07 16:15:23 +08:00
我选 Wireguard
|
5
defunct9 2022-12-07 17:34:22 +08:00
罗里吧嗦一大套,是来 show 技的么
|
6
ltruntu 2022-12-07 17:37:52 +08:00
拉个公网办公的 ip 不就好了
|
7
ltruntu 2022-12-07 17:42:10 +08:00
堡垒机 git 都部署在云上 公网端口关闭,只允许 frp 走 本地去连 就走 frp 代理一下不就好了 写那么多谁来看
|
8
adoal 2022-12-07 17:42:27 +08:00 via iPhone
这是在纵容事发公司后续依然不重视运维
|
9
lower 2022-12-07 17:49:02 +08:00
我以前负责的项目也出现过类似的事情,
我加了很多操作的跟踪行为日志,蹲了好几个晚上,终于抓到可疑的账号和 IP 了。。。。 公司法务根据这些信息,把离职的前员工诈出来承认了😂 |
10
kiddingU 2022-12-07 18:21:25 +08:00
@perfectlife 没固定 IP 问题也不大吧,DDNS 就行了
|
11
ishalla 2022-12-07 20:56:19 +08:00
我想说 frp 这种产品真的敢用在 enterprise solution 里啊。。
过得了 compliance 、security 和 qa 三堂会审? |
12
yujizmq 2022-12-08 01:35:14 +08:00 via Android
@ishalla “无专职运维人员”,规模应该不大,也许并不在意这点
当然,我也不建议在企业环境用 frp 之类的工具。 |
13
billytom 2022-12-08 05:42:09 +08:00 via Android
这种事情,一看就应该是 VPN 的范畴了,拆东墙补西墙,最终问题只会越来越多
|
14
perfectlife 2022-12-08 12:43:47 +08:00
@kiddingU 可以但是我认为企业没必要用 ddns ,个人用用也就算了
|