开源零信任SDP 环境的安装和搭建一:SDP controller

数据安全 数据安全 2482 人阅读 | 0 人回复

发表于 2023-3-26 14:25:38 | 显示全部楼层 |阅读模式

一、前言
现在Software Defined Perimeter(sdp)的概念越来越火,Waverley Labs的开源sdp项目是目前开源sdp的主流。因为在搭建环境的过程中,安装文档过于简单系统也有小bug,国内外的这方面资料很少且介绍的不详细,概念很新没有很多人实践过,基于这种种原因,所以在搭环境的走了很多弯路,所以想写这篇文章,供后面从事此方向的同学参考。

二、架构
我搭建的方案用了三台虚拟机:分别是客户端,控制器,和网关。**因为sdp controller没有配iptables的默认丢弃策略,按sdp的概念来说应该在控制器前面再配一个网关来阻止其他服务攻击sdp控制器的。为了简单起见我现在搭建的是最简单的方案。**加密方法我搭建时选的是对称加密,开源方案使用的是Rijndael+HMAC的方式,所有组件通信的方式使用了ssl协议。
sdp1.png

主要逻辑就是client 执行fwknop -n后,client先发送一个spa敲门包,然后从控制器读取下一次敲门所需的spakey和HMAC保存到本地配置文件中,控制器同步更新这两个秘钥到gateway。client下次敲门时会利用这次获取的spakey和HMAC.

三、环境搭建
提示:参考Waverley Labs Open Source Software Defined Perimeter Installation and Configuration
我的sdp controller 在ubuntu 20.04上搭建的,gateway和client在ubuntu 18上搭建的

我是在gateway上面开了个sshd服务默认22端口,client敲门,并访问gateway的ssh服务。
1、SDP controller
1、安装node.js环境。
2、安装npm
这两部很基础自行百度
3、git clone SDP Controller
4、npm安装依赖
5、安装mysql
6、将sdp.sql导入mysql
7、填写mysql中4个表的数据。sdpid,service,service_gateway ,sdpid_service
spdid 包括client、controller、gateway encrypt_key 和hmac_key不用填,后面会自动生成

1.bmp


这代表这个服务有哪些功能权限,比如第一条的意思就是服务2代表spdid为3的组件(我的是网关)开tcp的22端口。
2.bmp

权限表,授予spdid为1(我的是client)能够访问服务2的权限。即开tcp的22端口
3.bmp

列举有哪些服务
4.bmp



8、编辑 .config.js ,里面有数据库的账号密码啥的要配置,还有一个serverCert /serverKey 这个server指的就是controller,还有个caCert和caKey 这些的默认地址不对,看着改。
9、安装ssl
10、openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout ca.key -out ca.crt
这个会生成自签名证书,crt 和私钥key,这个ca.crt也要拷到每个机器中,注意:这条指令可能会报错,自行百度,少了个生成秘钥的种子数,得加一个参数使用默认的种子数。
11、node ./genCr edentials.js SDPID 这个sdpid就是spdid表中的id,要给每个东西都执行一次此命令,他会生成三个文件.crt .key 还有一个spa啥的 没用,crt 和key 要拷到对应的组件机器中,到时候配置文件中会填写。
这的两步是为了OpenSSL通信准备的,因为sdp的通信是通过ssl的方式,ssl需要ca证书和该证书签名的部件证书和私钥。这玩意我也不太懂,因为我不是搞密码的,大概是这个意思。
12、启动sdp 控制器。node ./sdpController.js,控制器默认会在5000上开个监听端口。

这个玩意的难点就是数据库填写和ssl。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则