验证节点安全性和可用性方面

  • 2019-07-24 15:18
  • 3T比特
20190511053803-5cd65fbb05f12-678x184.jpg

在本文中,我将讨论验证节点的安全性和可用性方面的两个主题。我知道这里提出的技巧只涉及POS认证节点“安全性和可用性”的冰山一角。但是,我发现它们对于为测试用例提供最低安全性和可用性非常有用。

保护验证节点

通过Internet公开区块链或加密服务可能会吸引攻击者试图攻击您的系统。因此,最好准备采取任何措施来降低受到危害的风险。

在运行我的polladat验证节点时,我观察到大量攻击者试图强制使用我的ssh密码。

我做的第一件事就是安装SSHGuard。那么什么是SSHGuard?正如Andrew Schartzmeyer在他的博客中描述的那样:

Sshguard监视服务器的日志记录活动。当日志显示某人正在攻击时,sshguard将采取适当措施来防止攻击。

在我们的例子中,我们使用它来保护我们的SSH端口。安装过程非常简单。默认情况下,它将开始检查Ubuntu服务器上的/var/log/auth.log(记录SSH攻击等)。

在Ubuntu服务器上运行以下命令以安装SSHGuard,它将使用iptables作为系统防火墙。 Iptables是一个用于配置和管理内核netfilter模块的程序。 Apt-get update apt-get install -y sshguard

当sshguard阻止任何恶意用户(通过阻止其IP地址)时,它使用sshguard链。准备sshguard链并确保在检测到新的传入连接时触发链,最后重新启动sshguard。

Iptables -N sshguard Ip6tables -N sshguard Iptables -A INPUT -j sshguard Ip6tables -A INPUT -j Sshguard服务sshguard重启

在下面的示例中,sshguard在四次登录尝试失败后开始阻止尝试,并在攻击者继续攻击时逐渐增加阻止时间。

20190511053803-5cd65fbb05f12.jpg

要查看阻止的IP地址,请运行以下命令:

Iptables -nvL sshguard

20190511053803-5cd65fbb1ba4e.jpg

通过这种简单的设置,您可以确保您的敏感sshd端口免受试图入侵系统的愚蠢攻击者的攻击。

polkadot验证节点的进入端口

polkadot验证器需要哪个端口。验证节点是否需要三个入站端口:

30333用于Peer2Peer协议的端口; 9933 for RPC; 9944用于WebSocket(WS)通信;

理想情况下,身份验证节点将仅公开这三个端口以及允许您登录系统的sshd端口。

polkadot验证节点的出端口

关于保护和验证程序出站端口的一些想法。如security.stackexchange线程中所述 http://security.stackexchange.com/questions/24310/why-block-outgoing-network-traffic-with-a-firewall

传入流量阻止仅阻止未经请求的流量到达您的内部网络。但是,如果您在内部计算机上收到恶意软件(通过运行不受信任的可执行文件或利用漏洞),您仍然会受到攻击。

阻止传出流量有助于防止恶意软件连接到命令和控制服务器或清除数据,从而限制损坏。

因此,在生产验证程序节点中,这可能被认为是关键的,但请注意:

在高度安全的环境中,出站过滤的想法似乎是一个自然过程。然而,这是一个非常大而复杂的问题。

为了说明这一点,我通过分析验证节点的通信模式进行了快速练习。

为此,我使用了优秀的工具Wire Shark。

“Wireshark是世界上最重要和最广泛使用的网络协议分析仪。它允许您在微观层面上了解网络上发生的情况,这是许多商业和非营利性公司,政府机构和教育机构的事实。 (通常是合法的)标准。“

为了获取WireShark输入文件,我必须在我的验证器节点上运行tcpdump命令.

[email protected]:~#tcpdump -w dump.out -i venet0 -c 1000 -vvv tcpdump:监听venet0,链接类型LINUX_SLL(Linux熟), 捕获大小262144字节1000个数据包捕获1125个数据包 由内核丢弃的过滤器0数据包接收

并将其加载到Wire Shark中。如下面的截图所示。验证节点是否使用大量出站端口。

20190511053803-5cd65fbb436fa.jpg

预计这将考虑到Validator将使用Peer2Peer通信方案与其他网络中的45个认证节点通信。

为了保护出站端口,考虑底层P2P库的工作原理(考虑保护测试节点)超出了本文的范围。

但是,值得一提的是,支付卡行业数据安全标准只要求提供信用卡(也是某种验证者)的组织这样做。

PCI DSS要求1.2.1侧重于组织限制流量的入站和出站流量的策略和过程,这对业务来说是绝对必要的。 PCI要求1.2.1规定“限制持卡人数据环境所需流量的入站和出站流量,并明确拒绝所有其他流量。”PCI要求1.2.1的目标是将流量限制为仅需要。所需的协议,端口或服务,并提供所需ELE的业务原因。

那么在生产环境中运行Polkadot Validator节点的最低要求是什么。

那么让我们切换到本文的第二个主题。

提高验证节点的可用性

我在7x24模式下运行Validator POC-2节点并尝试最小化切割(因为我的节点不可用)。

尽管如此,该过程将不时收到终止信号,导致该过程开始。

20190511053803-5cd65fbb556db.jpg

为了自动执行此任务并最小化减少概率,我编写了一个每分钟执行一次的小型cron作业脚本。

要触发的脚本(monitorValidator.sh)将检查polladot进程是否未运行

#!/斌/庆典 时间戳() { 日期+“%Y-%m-%d%T” } a=$(/bin/netstat -tulpn | awk'{print $ 7}'| grep polkadot | wc -l) 如果测试$ a=“0”那么 Echo“$(timestamp): Polkadot Validator Down”>> /var/log/run.log /root/.cargo/bin/polkadot -name $ POLKADOT_NAME_POC2 -validator -key $ POLKADOT_KEY_POC2&>> /var/log/run.log 网络

要安装crontab,请执行以下命令

(/usr/bin/crontab -l; echo“* * * * * bash -l -c '/root/monitorValidator.sh>/dev/null 2>& 1'“)|的/usr /斌/crontab的

如果验证程序进程仍在运行,则每60秒进行一次检查,否则将重新启动。

在公开报告中,为了协调在Web3空间中工作的团队的协作,一个问题是“为polkadot创建和运行节点集群服务”(http://github.com/w3f/web3 collaboration/issues/43),这将是地址可用性问题。

Cosmos比Polkadot更成熟,它涵盖了许多主题,包括:

20190511053803-5cd65fbb62274.jpg

·提供Sentinel节点架构,这是一个减轻GAIA/COSMOS Hub网络验证程序节点上DDOS的基础架构示例。

“为了缓解这个问题,在云环境中部署了多个分布式节点(前哨节点)。由于易于扩展,很难影响验证者节点。在DDOS攻击期间可能出现新的哨点节点并且可以使用八卦网络集成他们进入交易流程。“

·Tendermint HSM密钥管理系统(KMS)

“旨在与GAIAD服务一起部署的轻量级服务(理想情况是在单独的物理主机上),提供以下功能:

·高可用性访问验证程序签名密钥; ·即使验证过程受到影响,也要防止双重签名; ·硬件安全模块存储验证程序密钥,可在主机损坏后使用“

这就是今天的方式,至少在验证程序的表面上,您已经完成了确保和提高可用性的第一步。

在安全性和可用性方面,看看polkadot如何随着时间的推移而发展将会很有趣。

作者:Felix Kuestahler

头条推荐
图文推荐