如何云端搭建门罗币的全节点,手机钱包也可以链接自己的全节点(上)
关于2020年底到2021年初的网络攻击
有些门罗币的粉丝也许并不知道,数年来,某些组织一直在持续攻击和试图破坏门罗币的主网,手段之多,攻击技术之复杂,远超普通人想象。
而他们的最新攻击是通过持久的Sybil和Eclipse攻击破坏门罗币网络,该攻击大约自2020年10月17日,门罗计划网络升级之前就一直在默默进行。而事实也证明,他们的攻击并不是出于某种善意,因为攻击者并没有通过任何渠道披露代码或以负责任的方式帮助改善门罗币网络,但这对Monero整个社区来说,却是一个我们共同提高知识水平和加强理解p2p网络的绝佳机会。
那些杀不死我们的,会让我们更加强大。
首先先给大家吃一颗定心丸,对门罗币的攻击,并不能造成资金损失,也不可能造成任何隐私破坏,其效果,用通俗的话理解,可以认为,有人故意给你打骚扰电话,让真正想联络你的人联络不到你,或者攻击你朋友的电话线,让你打不进去。而这种出力不讨好的攻击,可又比骚扰电话厉害的多。
具体来说,本次攻击的核心是运行自定义客户端的恶意节点群,这些节点托管在OVH和Digital Ocean上约130个IP地址上。这些节点通过向正常节点发送垃圾信息,恶意拥堵有效节点。
已知的攻击手段包括以下攻击
Disproportionately Gaining Network Share
Injecting Peer Lists of Malicious Nodes
Block Height Mirroring
Spying on Transactions
Wallet DoS via Block Height +2
Transaction DoS via Dropping Stem-Phase Transactions
Node DoS via out-of-memory crash
以上七点,分别是七种主要的攻击方式,因为篇幅这里就不展开讲解每一种的原理,这也不是本文的重点,感兴趣的小伙伴可以看文末,我资料的来源。
private ?
数次升级和攻防应对
攻击的起源日期尚不清楚,但在实施改进蒲公英协议Dandelion ++之前,它已被设计出来。从2020年10月17日的升级开始,攻击也逐渐暴露出来,以下是整个门罗币社区对攻击者的数次攻防时间表
2020-10-14-Monero v0.17.1.0发布
2020-10-17 -Monero网络通过包括Dandelion ++和CLSAG在内的硬叉升级到v0.17
2020-10-18-由于恶意节点丢弃交易而无法成功发送交易的用户迅速增加
2020-10-18-实施PR6916以增加节点数量,减少恶意节点的影响
2020-10-20-一些报告由于所有对等节点显示的链上数据不正确而无法成功同步
2020-10-21-Monero v0.17.1.1发布2020-10-27-实施PR6939以降低在一个IP地址后面运行多个节点的效率
2020-11-02-PR6961的实施允许将黑名单传递给monerod(例如selsta的block.txt)
2020-11-03-实施PR6971以使用特制数据包避免DoS矢量2020-11-03-实施PR6973以缓解由恶意节点丢弃交易引起的交易DoS
2020-11-05-攻击者公开宣布攻击
2020-11-05-实施PR6983以防止在IPv6地址中隐藏IPv4节点
2020-11-10-用户注意到钱包不会同步,因为恶意节点报告的块高度为实际高度+2
2020-11-12-PR7018的实现是通过在Dandelion ++干的阶段避免选择攻击者节点来进一步提高Dandelion ++对报告错误高度的恶意节点的抵抗力
2020-11-16-Monero v0.17.1.3发布2020-11-18-实施PR7025以在交易发送时间方面进一步改善Dandelion ++对恶意对等方的处理
2020-11-26-Monero v0.17.1.5发布2020-12-02-实施PR7055以进一步缓解行为不端的同步
2020-12-04-实施PR7072以防止恶意节点向大型对等方列表发送垃圾邮件
2020-12-05-实施PR7081以允许将受禁主机从monerod简化传递到fail2ban等
2020-12-08-Monero v0.17.1.6发布2020-12-12-建议PR7135作为+2高度问题的长期解决方案,提出要求大多数节点进行升级
2020-12-13-PR7138已实现以允许使用基于DNS的恶意节点阻止列表(类似于PR6961)
2020-12-14-Monero v0.17.1.7发布
2020-12-24-用户首先注意到使用大型精心制作的网络数据包对具有裸露p2p端口的节点进行DoS攻击,导致内存不足节点崩溃
2020-12-26-实施PR7188解决+2高度问题,直到PR7135投入使用并通过
2020-12-26-实施PR7190以解决节点DoS攻击媒介
2020-12-30-Monero v0.17.1.8发布
目前已经有众多解决方式被合并到主代码库里,具体地址在下面,开源社区就是每个人都可以贡献代码和设计门罗,被其他人审计和确认后,就可以在门罗币主网实施。具体过程参见我们的代码库,有能力的程序员也可以提出自己的想法和改进措施。https://github.com/monero-project/monero/pulls?q=is%3Apr
本地节点应对策略
对于大多数程序员来说,以下缓解攻击的方法其实都很熟悉,因为它们是通用的,适用于任何排除p2p网络中恶意节点攻击的方法:
一,运行自己的节点并保持最新
不懂的看这里,我没有翻译,信息来自,门罗outreach推广组
二,如果您在运行自己的节点,请确保更新到包含上述所有缓解措施的最新版本,v0.17.1.8或更高版本
三,利用Tor或i2p等匿名网络中继交易,不懂的看这里https://github.com/monero-project/monero/blob/master/docs/ANONYMITY_NETWORKS.md
四,使用–ban-list标志屏蔽地址看这里https://gui.xmr.pm/files/block.txt(可在此处找到由selsta管理的有问题IP的列表)
或
看这里https://github.com/monero-project/monero/pull/7138
五,
–enable-dns-blocklist标志(如果使用v0.17.1.8 +)来禁止已知IP地址攻击者无法连接到您的节点
尽管在v0.17.1.8之后明确禁止该禁令列表,但仍建议使用该禁令列表,这样可以避免一些麻烦和恶意节点的负担。
另外值得注意的是,针对于门罗币主网的攻击手段,对其它p2p网络而言,都是可能的,也就是其它币也是会遭受同样的攻击效果。而值得庆幸的是,与其他大多数加密货币网络相比,门罗币中的攻击者要捕获的数据要少得多,因为门罗币交易会默认隐藏发送者,接收者和交易金额。而我们的社区成员又强大太多太多,截至到我今天截稿,2021年1月13日,门罗币活跃的全节点有1600多个,和攻击前几乎没有变化,说明在如此复杂的攻防中,我们的节点数量没有被卡掉,没有变得中心化,而我们中国社区维护的节点,xmr.getmonero.cc:18081 node1.getmonero.cc:18081 node2.getmonero.cc:18081 node3.getmonero.cc:18081也一直在同步,没有掉链子。
由于篇幅问题,运行个人全节点的上集,到此为止,接下来就是个人如何在服务器上搭建门罗币全节点的教程了,以后大家轻钱包可以链接自己的节点了。
参考文献 Reference
本文参考了大量资料,其中最值得感谢的是国外社区的Sethismmons以下是他的联络方式IF you can read English then you can check the original articleRun a Monero Node (Advanced)
Twitter – @sethisimmons
Keybase – sethsimmons
Email – sethsimmons@pm.me