在过去的 6 年中,我们已经了解到大量使用户失去对其账户控制的方式,其中一些更复杂的账户接管技术集中在用户存储其 API 密钥的方式的漏洞。根据您的账户设置和 API 密钥的权限,账户上的大多数功能都可以执行,包括提取资金和通过操纵性交易行为转移利润。
如果您正在开始使用 BitMEX,或者您想提高您现有账户的安全性,我们希望您会发现我们总结的这些重要提示对您有帮助。
确保您的环境安全
-
在任何地方使用二步验证(电子邮件、交易所账户)。
-
按优先顺序排列:U2F, Yubikeys, TOTP 认证
-
不要使用短信认证
-
-
在您的电脑上使用一个强大的密码
-
使用密码管理器,如 1Password, KeePass, LastPass
-
-
加密您的硬盘驱动器
-
Windows: BitLocker
-
MacOS: FileVault
-
Linux: LUKS/CryptFS
-
-
对您的备份进行加密
-
考虑在您的网络上安装硬件防火墙(IDS/IPS)。
-
如果使用 MacOS,考虑使用强大的外发流量过滤器,例如 Little Snitch。
-
如果在公共网络上访问您的账户,请使用 VPN 服务
构建和配置您的账户
-
先用testnet.bitmex.com测试网
-
我们的测试网(Testnet)环境提供与 bitmex.com 主环境相同的特点和功能。主环境中相同的交易规则、账户设置和限制在我们的测试网环境中被复制,但不使用真实资金。我们强烈建议使用以下功能,看看它们如何与您的程序互动。
-
https://testnet.bitmex.com/app/addresses -提现确认设置。将地址添加到您的地址簿中,可以更快地进行转账和提现。
-
白名单/提现锁定 - 您可以配置您的提现设置,只允许提现到一组指定的钱包地址。请联系 support@bitmex.com,我们的客服团队将为您安排。这对企业用户特别重要,因为企业需要在交易员和负责资金管理的人之间进行职责分工。
-
账户关联 - 链接允许用户创建一个共享所有权的账户组,资金可以在组内即时转移而不产生链上网络费用。每个用户可以拥有的账户数量有限制,也有其他限制,但请联系support@bitmex.com,我们的团队将为您解决这个问题。
-
编写您的软件
-
阅读现有文件,了解终端和规则的解释
-
请确保将您的证书文件添加到 .gitignore 中。
-
如果您不小心把凭证推送到了 GitHub,请尽快使用https://www.bitmex.com/app/apiKeys 删除API 密钥,并检查您的账户历史。
-
这是定义一个严格的 CIDR 区块(IP 范围)的另一个很好的理由,您的 API 密钥可以从这里使用,这样即使泄露也很难被滥用。
-
-
编写测试。在您的代码中使用断言。如果支持,使用linter 或 typechecker。
-
考虑实施独立的风险限额,如果这些限额因任何原因被突破,就记录、警告或关闭您的交易应用程序。一个没有共享源代码的独立代码库总是更好的,因为任何与您的交易系统共享代码或数据的风险系统都可能存在导致您首先违反限额的相同错误。
-
在崩溃或其他重大意外事件中,考虑让您的代码取消所有未结订单。
-
BitMEX 通过一个基于时间的自动机制,支持 "取消连接 "式的安全功能。
-
-
购买或租用一个服务器
-
我们建议在 AWS eu-west-1 启动一个服务器,以获得与交易所的最低延迟连接。我们不提供主机托管,所以如果延迟对您的交易策略很重要的话,在同一个 AWS 区域是最好的选择。
-
对于大多数应用,t3.nano 或 t3.micro就足够了。
-
如果您使用可突增性能的实例,密切监测可用的 CPU 积分或启用 "T3 无限"。如果您的积分用完了,您可能会有严重的延迟问题。
-
较大的实例有更好的网络容量。如果您要从许多来源摄取大量的数据,请考虑这一点。
-
锁定您的服务器
-
在连接到您的服务器时使用 SSH 密钥,并禁用密码验证。
-
安装自动安全更新。
-
安装 ufw(不复杂的防火墙),只打开您需要的端口。
-
如果您知道您的服务器只和BitMEX的服务器沟通,您可以大大锁定出站端口。我们偶尔会改变我们服务器的 IP 地址,所以您需要考虑到这一点。
-
-
为服务器上的常见动作设置电子邮件提醒,如 SSH 登录、交易进程重启等,这样您就能随时了解服务器在做什么。不要忘记监控您的电子邮件。
-
考虑使用一个命令记录器,将在您的服务器上运行的所有命令发送到外部,以达到审计和监视的目的。
-
考虑为您的应用程序设置不可更改的储存器。
生成 API 密钥
-
每个自动化工具只生成一个 API 密钥。如果您有许多系统使用 API 密钥,就给它们各分配一个。
-
给您的 API 密钥命名。
-
对您的应用来说,给您的 API 密钥以尽可能少的权限。例如,您应该为外部审计和/或第三方投资组合跟踪软件的目的生成只读密钥。
-
在 "CIDR "字段中指定一个单一的 IP 地址,后面跟着 /32,以确保您的密钥不能从您的服务器以外的任何 IP 使用。
-
如果您移动了服务器,请用一个新的严格的 CIDR 块和一个新的名字重新生成 API 密钥。
-
不要在开发机和生产机之间共享 API 密钥。
处理 API 密钥和其他密码
-
将密钥/密码存储在磁盘上的一个有严格权限的文件中,只有将运行软件的用户可以阅读。让您的程序在启动时读取该文件。
-
如果使用储存器,请使用卷装载。
-
-
为什么不使用环境变量?
-
您的应用程序使用的每个附属关系也可以访问环境。
-
由您的应用程序产生的子进程可以读取环境(例如 curl、imagemagick 等)。
-
如果您的应用程序崩溃了,它可能会为调试目的而记录环境,这可能会暴露您的密码。
-
由同一用户或根用户启动的任何其他应用程序可以读取这些环境变量。
-
-
如果您必须使用环境变量,可以考虑在您的应用程序中加入一个 AES 密钥,然后用该密钥加密/解密密码。这并不是 100% 的安全,但它提高了利用的门槛。
-
理想情况下,使用像Vault这样的密码管理器。
如果您怀疑有泄漏,该如何处理
如果您怀疑您的 API 密钥或账户以任何方式被泄露,请立即与我们的客服团队联系。他们将能够锁定您的账户,确保您的资金安全并帮助调查。
另外, 您应该:
-
删除或禁用任何可疑的泄漏的 API 密钥
-
更改您的密码
-
检查您的账户历史
我们希望上面的一些建议能对您和您的团队有所帮助。如果我们遗漏了什么,或者您有任何建议,请随时联系我们的客服团队或您的客户开发代表,我们将很乐意进行调查。