fo 之 bp 安全升级小贴士

嘿~大家好~fo 已经上市快一个月咯。不知道大家玩得如何呢。
讲真的,我做 bp 这小半个月也是经历了不少,比如说半夜被拉起来做多签,去南京找响马大叔面基。总之,感受颇多吧。
今天我想和大家讲一下 bp 在安全方面的一些升级手段。
1. 出块节点和 rpc/history 节点分离。
第一点是最为重要的,作为 bp,你的出块节点应该关闭除了 ssh 接口之外的所有的公开接口。
bp 所需要提供的 rpc/history 服务,请另外启动额外的全节点来工作,这样可以保证一定程度的安全隔离和稳定的出块效率。

2. 出块节点,请做好主备切换准备。
出块节点,也尽量做贮备,请额外启动一台服务器做数据同步,如果出块节点挂掉之后,可以快速的启动这个备用的出块节点进行恢复。核心就是保证至少有两台机器上有全量的数据。虽然只有小半个月的数据,但同步一个全量的数据真的非常的缓慢了。

3.rpc 配置 https 服务,如果愿意配置 nginx 反向代理的话,端口也应该直接走 80/443
这个也蛮简单的哦。不要怕一步一步来就好。
a. 选好自己的二级域名,比如奶哥的就是 api.fibosgenesis.com,把这个二级域名指向你的 rpc 服务器的。
b. 用这个二级域名去申请一个免费的证书。我这里用的是腾讯云代理的 TrustAsia 证书,大家也可以去选其他的,比如著名的https://letsencrypt.org 总之,按照流程申请就好了。
c. 看看自己启动 rpc 的时候的端口,我的建议改成 127.0.0.1:8870,因为这样,就只能是本机 ip 访问 8870 端口了,不要写 0.0.0.0 哦,这样的话,相当于是任何 ip 都可以访问该端口了。
d. 配置 nginx,这里我直接贴图了.

server {
  listen 80;
  server_name api.fibosgenesis.com;
  location / {
  proxy_pass http://localhost:8870;
  proxy_redirect default;
  }
}
server {

  listen       443;
      server_name  api.fibosgenesis.com;
      ssl                  on;
      ssl_certificate   /path/api.fibosgenesis.com_bundle.crt;
      ssl_certificate_key  /path/api.fibosgenesis.com.key;
      ssl_session_timeout  5m;
      ssl_protocols  SSLv2 SSLv3 TLSv1;
      ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
      ssl_prefer_server_ciphers   on;
      location / {
        proxy_pass http://localhost:8870;
        proxy_redirect default;
      }
  }

注意三个地方,
第一是 ssl_certificate 和 ssl_certificate_key,这里分别填你的证书的 crt 和 key,不要搞反咯。
第二是 location,我们本地启动的服务是在 8870 端口,你当然也可以把 rpc 启动在其他端口,那在这里改成其他端口就好。
第三是 server_name,这里是告诉 nginx,遇到这个域名的,请给代理到下面的服务,也就是 localhost:8870,也就是我们 rpc 的服务。

4. 注册 producerjson。
这里有份 rock 节点写的详细参考,不贴代码了,电梯直达:https://github.com/fibosRocks/producerjson

5. 小红花
当你做完这一切之后,你可以到http://www.fibos123.com/#!/monitor/pointer 查看自己的服务状态,如果一切正常,你就会和奶哥一样,得到一个大大的赞。
44b46ba13ee84c4d824fb94015dd0944_image.png

ps:慢雾的大佬,有一份更加抽象的版本:https://github.com/slowmist/eos-bp-nodes-security-checklist 大家快去看呀~
好咯,就写到这里了,如果有问题,大家可以在留言区提问给我,我都会尽量解答的。爱你们,奶哥留。

pps:更新一下,有小伙伴说自己开启了 ssl 但是没有拿到小红花,那是因为你没有打开 history 插件哦。参考下面的代码来 history 功能吧。

fibos.load("history", {
    "filter-on": "*"
});
fibos.load("history_api");

ppps: 再更新一下,有人遇到以下的错误。

Details: 3060101 database_guard_exception: Database usage is at unsafe levels

database free: 134217088, guard size: 134217728

 {"f":134217088,"g":134217728}

请用以下代码扩大你 db 默认的 size

fibos.load("chain", {

 "chain-state-db-size-mb": 8192,

});