http://www.www.tnmanning.com

HashQuark 部署 Factom ANO 安全方案参考

Factom网络中的节点分为三类:Federated Node、Audit Node与Follower Node。其中,Federated Node 负责在大发3d账本中记录交易数据,Audit Node 则只有读取的权限,负责检查和校验 Federated Node工作的合法性,并在必要时替换出现问题的 Federated Node,以确保全网的安全和稳定;Follower Node 作为普通节点,能够接收外部用户的数据上链请求并转发给 Federated Node。Federated Node 和 Audit Node 统称为 Authority Node, 二者都可以得到系统代币奖励。

HashQuark研究团队联合慢雾安全团队针对 Factom ANO 的安全部署做了一些思考,主要针对以下问题:

· 总体架构
· DDoS 攻击防范
· 入侵攻击防范
· 节点软硬件宕机防范

· 重要配置操作离线签名


总体架构

HashQuark 部署 Factom ANO 安全方案参考

由于现阶段每一个Authority Node Operator (ANO) 可以运营两个节点,所以该架构图展示了 Authority Node A 以及 Authority Node B。

通过查阅当前 Factom 网络 ANO 节点部署的地理位置以及所选用的云服务厂商,HashQuark研究团队推荐选择除 AWS 和 Google 之外的云厂商在亚洲的机房进行部署,从地理位置及云服务平台两方面增强 Factom 网络的去中心化能力。

DDoS 攻击防范

为了应对可能的 DDoS 攻击影响节点记账,将 Authority Node 部署在内网中,利用Follower Node 进行同步区块和验证交易,且这两个 Follower Node 的公网IP可不对外公开,以免同时遭遇 DDoS 攻击。

通过部署同样的Master Authority Node 和 Standby Authority Node 进行热备,当 Master 节点故障时启动 Standby 节点。此外,在 Federated Node 需要进行软件升级时,为避免节点变为 offline 状态,可借助 Standby Node 方便地进行 brainswap 操作,保证整个大发3d网络的稳定性。

同时搭建日志监控平台进行收集、分析和可视化处理,监控所有节点服务器的CPU负载、磁盘IO 、网络IO、进程数等系统健康程度关键指标。

入侵攻击防范

一、保持主机服务单一,只启动节点相关进程,避免一机多用;

二、防止全网扫描定位私密的 Follower Node,修改同步端口 8108 至全网最大存活数量的端口 80、443 或 22,以有效地抬高攻击者定位成本;

三、关闭不相关的其他服务端口,只开放对应需要的端口,并在第三方云服务上定制严格的安全规则(云服务商控制台和操作系统防火墙都需要设置此项);

四、更改 SSH 默认的 22 端口,配置 SSH 只允许用 key(并对 key 加密)登录,禁止密码登录,并限制访问 SSH 端口的 IP 只能为我方运维 IP;

五、在预算充足的情况下,推荐部署优秀的 HIDS(或参考开源的 OSSEC 相关做法),及时应对服务器被入侵。

节点软硬件宕机防范

一、通过异地机房部署进行机房灾备
二、对电房电源进行备用冗余
三、库存高损耗的关键硬件进行备份冗余
四、每个 Authority Node 部署 Master 和 Standby

重要配置操作离线签名

第一次创建节点身份信息及密钥时,自行从源码编译 serveridentity 工具,在离线安全环境下生成安全密钥与fullidentity.sh 后再拷贝至在线安全环境执行,并妥善保存生成的Private keys,其中 level 4 秘钥为最高安全等级。

当需要设置或更新 coinbase address 与 node efficiency 重要配置时,自行从源码编译 factom-identity-cli 工具,在离线安全环境下生成执行脚本,再拷贝至在线安全环境执行。

配置细节

Authority Node 在加入官方的 Docker Swarm 之前,从官方Github下载主网的安全证书添加在/etc/docker/daemon.json 中,并使用 non-root 账号启动 Docker服务,防止通过 Docker 提权获取服务器权限。

Authority Node 需要开放的白名单端口:
- TCP/UDP端口 2376 开放给Factom官方 52.48.130.243 & 18.203.51.247 用于与Docker Swarm Master进行加密通信
- TCP/UDP端口2222 开放给Factom官方 52.48.130.243 & 18.203.51.247,用于 Swarm 在 Authority Node 启动的 filebeat container通信
- 同步区块TCP端口 8108开放给 Follower Node,并且定制配置项 MainSpecialPeers为这些 Follower Node
- RPC服务TCP端口8088 开放给Factom官方 52.48.130.243 & 18.203.51.247,用于调试
- Control Panel监控页面TCP端口8090 开放给Factom官方 52.48.130.243 & 18.203.51.247,用于异常监控

Follower Node 需要开放的白名单端口:
- 端口8108对公网开放用于同步区块

从官方 GitHub 下载主网配置文件 factomd.conf 和安全证书,以及从官方 Docker hub 下载的镜像都需要确保安全,防止被篡改。

对外提供 RPC 服务的节点,通过开放8090端口,同时加上 TLS 证书及账号密码保护验证。

对每个节点的 Control Panel 监控页面8090端口,仅允许在内网环境通过VPN访问,并且在将配置项ControlPanelSetting设置为 readonly。

关键词: HashQuark  Factom  

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。