安全保障
冒险进入数字世界并参与加密项目可能会令人兴奋,但遵循顶级安全实践至关重要。这是安保和安全的一般指南,包括保护服务器和家用 PC 的基本措施。您遵守这些做法有助于子空间网络的稳定性,当然还有社区加密资产的安全性。
安心享受亚空间之旅!
钱包安全
- 确保密码足够长,将寄存器字母、数字和特殊字符组合在一起。11 个字符的密码将暴力攻击时间增加到通常不可能的限制。看一下密码粗暴时间说明表。但是,即使是复杂的密码也不是全部,这是适当保护所必需的。
- 避免使用常见或容易猜到的单词或字母组合,以及部分在线数据或重复使用任何现有密码。
弱密码示例:
S0methin9C00l!
强密码示例:
^p$O_~a!4h{G'9C*
- 请考虑使用密码管理器生成复杂的密码并安全地存储它们。有很多可用的密码管理器。确保您选择的密码管理器以加密形式存储数据,拥有强大的密码生成器,收到正面评价,并具有一致的更新历史记录。例如,备受推崇的选项包括 KeePass、Bitwarden、1Password、LastPass、Dashlane 和 Keeper。但是,在做出决定之前进行自己的研究并咨询评级至关重要。
- 尽可能通过启用 2FA(双因素身份验证)来提高帐户的安全性。除了密码之外,此额外保护层还需要第二个验证步骤,例如来自移动应用程序或硬件令牌的代码。
- 不要分享您的 12 个单词的助记词或私钥。
- 硬件钱包是迄今为止存储私钥的最安全方式。与在线交易所和钱包不同,硬件钱包离线存储密钥并防止潜在的恶意软件或黑客攻击。 最受欢迎的硬件钱包是 Ledger 和 Tresor。
- 通过安全地离线存储备份或加密的云存储来备份您的钱包。这保证了您可以在设备丢失、损坏或被盗的情况下收回您的资金。可以使用许多加密的云存储服务,例如 Tresorit、pCloud、Sync.com、SpiderOak 和 Mega(顺序无关紧要)。但是,请始终进行自己的研究。
- 使所有软件保持最新状态。
- 小心公共Wi-Fi。
社区安全
子空间团队成员永远不会与您直接发送消息。
如果您收到不请自来的消息,最好忽略它,阻止发件人,并立即将事件报告给我们的“诈骗报告”渠道。
对网络钓鱼攻击要谨慎。不要点击我们论坛、Discord 或 Telegram 中的链接,除非这些链接已由我们团队中值得信赖的成员(例如大使或工作人员)共享。诈骗者可以创建模仿合法网站的欺骗性链接,因此建议在点击任何链接之前仔细检查消息的作者(在所有提到的平台上)。信任通常应保留给项目团队成员、大使或声誉卓著的农民。
服务器安全
基于 SSH RSA 密钥的安全身份验证
让我们来了解一些基础知识。
SSH 是一种网络协议,用于安全远程访问计算机系统、云基础设施、安全文件传输 (SFTP) 和隧道。它是系统管理员和开发人员的基本工具。SSH 使用 Diffie-Hellman 算法进行安全连接和身份验证方法,如密码或 SSH 密钥对。
SSH 连接建立。
当客户端启动 TCP 连接时,服务器会使用支持的协议版本及其公共主机密钥进行响应。 双方使用 Diffie-Hellman 算法协商会话密钥,以确保安全通信。此会话密钥对整个会话进行加密。
用户身份验证。
建立会话加密后,开始用户身份验证。 密码身份验证涉及安全地传输用户的帐户密码。 SSH 密钥对(由公钥和私钥组成)是推荐的身份验证替代方法。客户端向服务器发送密钥对 ID,服务器检查匹配的公钥。 服务器使用公钥加密随机数,发送给客户端,客户端使用私钥对其进行解密。 客户端使用解密的号码和共享会话密钥计算 MD5 哈希,并将其发送回服务器进行验证。
RSA 加密。
在 RSA 中,加密和解密使用不同的密钥:加密密钥是公共密钥,解密密钥是私有密钥。用户基于两个大质数和一个辅助值创建公钥,同时对质数保密。消息可以使用公钥加密,但只能由知道质数的人解密。
SSH 和 RSA 共同提供安全、经过身份验证和加密的连接,以保护敏感信息。但是,为了增强安全性,可以创建带有密码的SSH密钥。
创建 RSA 密钥对
要允许在服务器上进行 PublicKey 身份验证,请以 root 身份运行:
vi /etc/ssh/sshd_config
PubkeyAuthentication no --> PubkeyAuthentication yes
systemctl restart ssh
在家用 PC 上创建 RSA 密钥:
ssh-keygen
您将获得两把钥匙:
$HOME/.ssh/id_rsa
用于保留在本地 PC 上的私有 RSA 密钥
$HOME/.ssh/id_rsa.pub
要发送到服务器的公共 RSA 密钥
将 RSA 密钥传输到服务器:
sudo ssh-copy-id -p 12345 user_name@server-ip-addres
此实用程序专门用于将 SSH 密钥复制到远程服务器。 它会自动处理远程服务器上的密钥放置和权限,使其更加方便。 如果已更改,请使用 flag 指定非标准端口。-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_keys
确保您具有目录的权限 700 和其中的权限 600~/.ssh
authorized_keys
测试安全连接
ssh username@your-server-ip-addr
使用别名简化 SSH 连接管理
通过创建别名,管理连接可以更简单、更愉快! 在目录(键所在的位置)中创建一个名为“config”的文件,只需将您的服务器或同一服务器的其他用户添加到其中,如下例所示。随意添加任意数量。~/.ssh
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 Autonomys
系统将询问您是否允许连接。回复“是”。
交替 SSH 端口
默认情况下,SSH(安全外壳)侦听端口 22。这是众所周知的,可以成为自动攻击的目标。通过更改 SSH 端口,攻击者更难猜测 SSH 正在侦听哪个端口,从而降低自动攻击的风险。
首先,确保您没有启用 UFW。如果这样做,请为所需端口添加规则:
sudo ufw allow 12345/tcp #this is an example, specify your port
- 更改端口
sudo vi /etc/ssh/sshd_config
#Port 22 -> Port 12345 # specify a custom SSH port within the range of 1025 to 65534
sudo systemctl reload sshd # for the changes to take effect
从homePC检查新端口
ssh -p 12345 user@localhost # specify your port
现在,您可以使用加密连接在非标准端口上登录您的服务器,而无需输入任何凭据!
配置 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 分区是单独的,则迁移到新服务器或升级操作系统可能需要执行其他步骤,以确保正确迁移用户数据和配置
- 如果一个分区发生故障或损坏,则具有单独的分区可能会增加数据丢失的风险
在 Subspace 中耕种的分区建议将在左侧选项卡菜单的“分区和挂载文件系统”部分中介绍。
升级。。。
升级软件包
虽然 Linux 发行版会定期发布安全补丁来解决软件包中的已知漏洞,但在服务器上安装每个可用更新并不总是有意义的。不必要的更新可能会引入可能不需要的功能或更改,在某些情况下,甚至可能导致系统不稳定。如果对服务器的配置或软件进行了自定义或修改,则升级可能会覆盖这些更改或与之冲突。
因此,必须根据对每个包的功能的透彻了解并查看其更改日志来做出升级决策。
要查看特定软件包的更改日志,请执行以下操作:apt changelog <package_name>
升级内核
虽然内核更新通常带有错误修复和安全补丁,但新内核版本可能会引入新的错误或兼容性问题。并非每个内核更新都是必要或紧急的。某些更新可能会提供增量改进或附加功能,这些功能对于您的特定用例可能不是必需的。在决定更新内核之前,评估其好处和潜在风险非常重要。
升级分发版本
优点:
- 访问新功能
- 软件兼容性
- 安全更新
- 长期支持 (LTS)
缺点:
- 潜在的兼容性问题
- 配置更改
- 可能有新的错误(可以通过降级有错误的软件包来解决)。
因此,理想情况下,在任何地方都有必要阅读更改日志,了解需要什么以及为什么,并全面评估升级需求。当然,在大多数情况下,在普通(办公室)条件下,一切都应该正常工作。
要访问发行说明,请执行以下操作:
只需使用 Ubuntu 主页上的搜索功能即可。
UFW公司
根据 UFW 规则的顺序(DENY 规则应在前,然后是 ALLOW 规则),可以简单地将新的“ALLOW”规则添加到现有规则的末尾。
your existing rules
...
sudo ufw allow 30333 comment 'Node port'
sudo ufw allow 30433 comment 'Node DSN port'
sudo ufw allow 30533 comment 'Farmer port'
现在,您可以放心地返回安装 Node 和 Farmer。