Skip to main content

安全和保障

进入数字世界并参与加密项目的冒险可能是令人兴奋的,但遵循最佳安全实践是至关重要的。 以下是关于安全保障的一般指南,包括确保服务器和家庭个人电脑安全的基本措施。 你遵守这些做法有助于Autonomys网络的稳定,当然还有助于社区加密资产的安全。

安心享受 Autonomys 之旅!

钱包安全

  • 确保您的密码足够长,使用大写和小写字母、数字和特殊字符的组合。 11个字符的密码通常使得暴力攻击几乎不可能 。 作为参考,请查看这个 密码暴力破解次数说明表。 然而,单靠强密码不足以提供完整的保护。

  • 避免使用通用或易于猜测的单词或字母组合。 以及您在线数据的一部分,或重新使用您现有的任何密码。

弱密码示例:

S0methin9C00l!

强密码示例:

^p$O_~a!4h{G'9C*
  • 请考虑使用密码管理器来生成复杂的密码并安全地存储它们。 有很多可用的密码管理器。 确保您选择的密码管理器以加密形式存储数据,拥有强大的密码生成器,好评如潮,并有持续更新的历史。 例如,一些被广泛认可的选择包括KeePass、Bitwarden、1Password、LastPass、Dashlane和Keeper。 然而,在做出决定之前,进行自己的研究和参考评级至关重要。

  • 尽可能启用 2FA(双因素身份验证)来提高帐户的安全性。 这种额外的保护层需要第二个验证步骤,例如除了密码外,还需要手机应用程序或硬件令牌的一次性密码。

  • 不要分享您的 12 字助记词或私钥。

  • 到目前为止,硬件钱包是存储私钥最安全的方式。 与线上交易所和钱包不同的是,硬件钱包会将密钥离线存储,并防止潜在的恶意软件或攻击企图。 最流行的的硬件钱包是 LedgerTrezor

  • 通过离线安全存储或加密云存储备份您的钱包。 这可以保证您在设备丢失、损坏或被盗时找回资金。 有许多加密云存储服务可供使用,例如 Tresorit、pCloud、Sync.com、SpiderOak 和 Mega(排序不分先后)。 不过,请务必进行自己的研究。

  • 保持所有软件最新版本。

  • 请谨慎使用公共 Wi-Fi。

社区安全

请记住

Autonomys 团队成员永远不会向您发起直接消息。

如果您收到未经请求的消息,最好忽略它,阻止发件人,并立即向我们的“scam report 诈骗报告”频道报告该事件。

谨防网络钓鱼攻击。 不要点击我们论坛、Discord或Telegram中的链接,除非这些链接是由我们团队中值得信赖的成员分享的,比如大使或工作人员。 骗子会制作模仿正规网站的欺骗性链接,因此在点击任何链接之前,建议仔细检查消息的发送者(在所有提到的平台上)。 一般情况下应该信任项目团队成员、大使或声誉好的农民。

服务器安全

SSH RSA密钥安全身份验证

让我们来了解一些基本知识。

SSH 是一个网络协议,用于安全远程访问计算机系统、云端基础设施、安全文件传输(SFTP)和隧道。 这是系统管理员和开发人员的基本工具。 SSH 使用 Diffie-Hellman 算法实现安全连接,并使用密码或 SSH 密钥对等验证方法。

SSH 连接建立

当客户端发起 TCP 连接时,服务器会以支持的协议版本和公开主机密钥做出响应。 双方使用 Diffie-Hellman 算法协商会话密钥,以确保通信安全。 此会话密钥会加密整个会话。

用户身份验证

在设置会话加密后,用户认证就开始了。 密码验证需要安全地传输用户的账户密码。 SSH 密钥对由公钥和私钥组成,是一种推荐的身份验证替代方法。 客户端向服务器发送密钥对 ID,服务器会检查是否有匹配的公钥。 服务器用公钥加密一个随机数,然后发送给客户端,客户端用私钥解密。 客户端使用解密后的数字和共享会话密钥计算 MD5 哈希值,并将其发送回服务器进行验证。

RSA 加密

在 RSA 中,加密和解密使用不同的密钥:加密密钥是公开的,解密密钥是私有的。 用户根据两个大质数和一个辅助值创建公钥,同时对质数保密。 信息可以用公钥加密,但只有知道质数的人才能解密。

SSH 和 RSA 共同提供安全、经认证和加密的连接,以保护敏感信息。 为了增强安全性,虽然可以用密码创建一个 SSH 密钥。

创建 RSA 密钥对

要允许在您的服务器上进行PublicKey 身份验证, 以超级用户的身份执行:

vi /etc/ssh/sshd_config

PubkeyAuthentication no --> PubkeyAuthentication yes

systemctl restart ssh

在家用电脑上创建 RSA 密钥:

ssh-keygen

你将得到两个密钥:

$HOME/.ssh/id_rsa 你的RSA私钥,保存在本地电脑上。

$HOME/.ssh/id_rsa.pub 您要发送到服务器的 RSA 公钥。

将 RSA 密钥传输到服务器:

sudo ssh-copy-id -p 12345 user_name@server-ip-addres

此工具专门设计用于将 SSH 密钥复制到远程服务器。 它能自动处理远程服务器上的密钥位置和权限,使操作更加方便。 如果您更改了端口,请使用 "-p" 选项来指定非标准端口。

如果您以前创建过密钥,请不要覆盖它! 因为您将无法使用以前的密钥进行身份验证。 但你可以把它们放在其他地方,然后再生成。

将RSA公钥传输到远程服务器的其它方式:

如果您在之前创建了密钥并将其存放在其他地方, 您可以使用rsync指定密钥路径从任何其他地方复制公钥内容到authorized_keys

sudo rsync -e "ssh -p 12345" ~/.ssh/user2/id_rsa.pub USER@SERVER_IP:~/.ssh/authorized_keys

使用 -p 选项指定非标准端口

这条命令将在服务器上创建一个.ssh目录(如果已经存在则跳过),并将密钥添加到authorized_keys文件的末尾:

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

如果目录已存在,-p 选项会让工具跳过错误

手动传输公钥文件并将其添加到远程服务器上的authorized_keys文件中。 您可以打开 id_rsa.pub key 并复制粘贴它的内容到 authorized_keys 文件的末尾:

echo public_key_string >> ~/.ssh/authorized_key
note

请确保你有 '~/.ssh' 目录的 700权限和 'authorized_keys' 的600权限

测试安全连接

ssh username@your-server-ip-addr

使用别名简化SSH连接管理

通过创建别名,管理连接可以更简单和愉快! 在~/.ssh目录(密钥所在目录)中创建一个名为 “config ”的文件,只需在其中添加你的服务器或同一服务器的其他用户,如下面的示例。 您可以随意添加。

Host Farm                    # Any word can be used here as an alias (for ex. "autonomys" or "Farm")
HostName 123.123.123.123 # Use you server's IP
Port 12345 # your custom port
User username # User for login (for a rescue system this must be root, change it later)

缩进不重要。使用4个空格缩进是用来提高可读性的

尝试使用终端中最简单的语法连接:

ssh subspace

系统将询问你是否允许连接。 回复为'yes'.

替换 SSH 端口

默认情况下,SSH (Secure Shell) 监听 22 端口 。 这广为人知,并且可以成为自动化攻击的目标。 通过更改 SSH 端口,你会使攻击者更难猜测 SSH 正在监听哪个端口,从而降低自动攻击的风险。

note

首先,请确保您没有启用 UFW。 如果你启用了,请为目标端口添加一条规则:

sudo ufw allow 12345/tcp        #这是一个示例,指定您的端口
  • 更改端口
sudo vi /etc/ssh/sshd_config
#Port 22 -> Port 12345 # 指定一个自定义的 SSH 端口,范围为 1025 至 65534
sudo systemctl reload sshd # 使更改生效。

从家用电脑上检查新端口

ssh -p 12345 user@localhost # 指定您的端口

现在您可以使用加密连接在非标准端口登录到您的服务器,而无需输入任何凭据!

配置 SSHD 配置文件的基本建议

以root身份,编辑 sshd_config:

vi /etc/ssh/sshd_config
  • 允许公钥身份验证:
    PubkeyAuthentication no --> PubkeyAuthentication yes

  • 限制密码访问:
    PasswordAuthentication yes --> PasswordAuthentication no

  • 缩短输入凭证的时间窗口:
    (如果验证过程未在此时间内完成,服务器将终止连接)
    LoginGraceTime 120

  • 限制 root 登录
    PermitRootLogin yes --> PermitRootLogin no

  • 指定允许通过SSH连接的用户
    AllowUsers user1 user2

重新加载守护进程以使更改生效:

systemctl reload sshd
  • 重启您的系统以确保一切都能按预期运行。

完整的 SSH 手册:SSH Academy

作为安全措施, 谈谈分区。

作为一项安全措施,值得一提的是为关键目录分配单独分区的做法,如 /boot、/var、/tmp 和 /home(在某些情况下)。 这有助于分离系统文件、日志、临时文件和用户数据,从而提高系统稳定性和安全。 但这里也有一些不利因素:

  • 如果一个分区空间不足,而另一个分区有未使用的空间,可能无法轻松重新分配磁盘空间。
  • 分别监控和维护每个分区,包括备份、权限
  • 有一个独立的 /tmp 分区可能会导致创建和删除临时文件时增加磁盘 I/O
  • 如果/home 分区是单独的, 迁移到新服务器或升级操作系统可能需要采取额外步骤,以确保用户数据和配置的正确迁移
  • 如果一个分区发生故障或损坏,使用独立分区会增加数据丢失的风险

Autonomys 中的分区建议将在左侧标签菜单的 “分区和挂载文件系统 ”部分介绍。

升级中...

升级软件包

虽然 Linux 发行版会定期发布安全补丁,以解决软件包中的已知漏洞,但在服务器上安装每一个可用的更新并不总是有意义的。 不必要的更新可能会引入不需要的功能或更改,在某些情况下,甚至可能导致系统不稳定。 如果您已经自定义或修改了您的服务器的配置或软件,升级可能会覆盖这些更改或冲突。

因此,必须在全面了解每个软件包的功能和查看其更新日志的基础上做出升级决定。

查看特定包的更新日志:apt changelog <package_name>

升级 Kernel

虽然内核更新时常出现错误修复和安全补丁, 新的内核版本可能会引起新的 bug 或兼容性问题。 不是每个内核更新都是必要或紧迫的。 某些更新可能会提供渐进的改进或附加功能,这些功能对您的特定使用情况来说可能并不重要。 重要的是在决定更新内核之前评估收益和潜在风险。

升级发行版

Pros:

  • 访问新功能
  • 软件兼容性
  • 安全更新
  • 长期支持 (LTS)

缺点:

  • 可能存在兼容性问题
  • 配置更改
  • 可能有新的 bug (可以通过降级错误包解决)。

因此,在理想情况下,无论在哪里都有必要阅读更新日志,了解需要什么和为什么需要,并全面评估升级的必要性。 当然,在大多数情况下,在普通(办公室)条件下,一切都应该是正常的。

访问版本说明:

只需在Ubuntu 主页上使用搜索功能。

UFW

根据 UFW 规则的排序(“拒绝 ”规则应在前,“允许 ”规则在后),新的 “允许 ”规则可以简单地添加到现有规则的末尾。

您现有的规则
...

sudo ufw allow 30333 comment 'Node port'
sudo ufw allow 30433 comment 'Node DSN port'
sudo ufw allow 30533 comment 'Farmer port'

现在,您可以放心地继续安装 Node 和 Farmer。