我在另一个城市有一台家用台式机,还有一台带到校园的笔记本电脑,两者都运行 ubuntu 22.04.4。我想建立从笔记本电脑到台式机的 ssh 连接以检索和写入文件。
我今天之前从未使用过 ssh。正如测试一样,我建立了 ssh 连接并使用 rsync 通过本地网络实现我想要的效果。但要通过互联网执行此操作,我必须在桌面上设置端口转发。
现在假设我使用基于公钥的身份验证在我的家庭台式机和笔记本电脑之间建立 ssh 连接。端口 22 转发到家庭桌面,并启用 ufw,桌面上只允许使用端口 22。这台笔记本电脑将在我校园的公共网络中使用。是否存在任何可能造成安全风险的漏洞、疏忽等?例如,如果有人要获取我家庭桌面的公共IP?
这个问题太宽泛了。新的安全漏洞随时可能被发现。保持所有计算机更新,以便尽快将错误修复应用到您的计算机。
公共IP地址是“公共”的。也就是说,任何人都可以访问它。黑客通常使用脚本或程序自动检查一系列公共 IP 地址,以查看是否有任何端口打开。当他们找到开放端口(例如 22)时,他们可能会尝试使用常见用户名(例如 pi、root、admin、administrator 等)和泄露的密码列表进行登录。
如果有人想专门针对您的桌面,他们可能会采取不同的方法。此类攻击的范围取决于攻击者及其拥有的资源。
安全措施
fail2ban
1.路由器设置(不是真正的安全步骤)
看来您知道如何从路由器转发端口。该链接适用于可能需要帮助的其他用户。
您可以在路由器上打开一个高的非标准端口并将其转发到桌面的22端口。持续的攻击者将绕过此措施,但它可以阻止随意的黑客(及其脚本)。要设置端口转发,请参阅如何通过 Internet 从外部访问家庭 ssh 服务器?
这还可以减少身份验证错误日志并填满计算机的存储空间。
2. 启用基于公钥的身份验证并禁用基于密码的身份验证
这是使用 ssh 的更安全的方式。它使用私钥-公钥对。私钥保留在建立 ssh 连接的受信任计算机中。在这种情况下
Laptop
。公钥转到Desktop
。一旦密钥就位,您将在 ssh 服务器中禁用基于密码的身份验证Desktop
。如果您在未确保基于密钥的身份验证正常工作的情况下禁用基于密码的身份验证,则 ssh 将无法工作,因为无法对远程用户进行身份验证。首先生成私钥-公钥对
Laptop_user@Laptop
。这需要在每个用户和每台通过 ssh 连接到另一台计算机的本地计算机上完成。在终端中输入:这会生成比 RSA 更新、更安全的密钥。如果您需要 RSA 类型密钥,请输入:
该过程将提示您输入密码。Enter如果你不想打也可以打。如果您确实输入了密码,则每次 ssh from 时都会要求您输入
Laptop
密码Desktop
。如果您使用密码,则不应与正常登录所用的密码相同。为了获得更好的安全性,请使用独特且复杂的密码。接下来,您需要将公钥从 复制
Laptop
到Desktop
。在终端中Laptop
输入:Desktop_user
系统会要求您输入in的登录密码Desktop
。如果您想要通过 ssh 访问家庭 LAN 中的其他计算机,Laptop_user@Laptop
则无需创建新的密钥对。使用上述命令将 的公钥复制Laptop_user@Laptop
到其他远程计算机中的其他用户帐户。一旦公钥成功复制到帐户
Desktop_user
,Desktop
请再次尝试 ssh:Desktop
现在您应该无需Desktop_user
密码即可进入。此时,可以使用密码或您生成的公钥来登录。您可以通过在 中创建一个新用户(或使用现有的第二个用户)来测试这一点Laptop
,例如Laptop_usera
。在此阶段,无需密码Laptop_user@Laptop
即可Desktop_user@Desktop
使用公钥进行 ssh 访问。另一方面,Laptop_usera@Laptop
需要使用Desktop_user
ssh的密码Desktop_user@Desktop
。下一步是禁用基于密码的身份验证。您可能想在本地终端中执行此操作
Desktop
。使用以下命令创建一个新文件/etc/ssh/sshd_config.d/
然后添加以下行:
使用Ctrl+O保存更改,使用Ctrl+X退出编辑器。
最后,通过以下命令使用新设置重新启动 ssh 服务器:
现在仍然
Laptop_user@Laptop
可以使用公钥在没有密码的情况下进行 ssh 访问。另一方面将获得拒绝ssh 的权限。Desktop_user@Desktop
Laptop_usera@Laptop
Desktop_user@Desktop
3.安装并配置防火墙
防火墙软件有很多,其中一些很难配置。我建议你安装
ufw
命令调用的“不复杂的防火墙” :要仅从家庭 LAN 内打开端口 22,请使用以下命令:
此防火墙设置
Desktop
允许家庭 LAN 外部的任何人使用 ssh 连接到Desktop
。如果您知道您只能从校园访问桌面。找出您的校园用于学生 WiFi 网络的外部 IP 地址范围。然后,您可以删除 ufw 常规“ssh”规则并创建一个新规则,仅允许端口 22 从该地址范围访问您的桌面。
4. 安装
fail2ban
如果有人多次尝试访问您的桌面但失败,fail2ban 实用程序会暂时禁止 ssh 访问。
默认设置应该没问题,但您可以根据需要更改它们。请参阅如何阻止 ssh 机器人尝试以 root 身份通过 SSH进行一些修改。
运行fail2ban几周后,您应该检查它的日志并查看登录尝试来自何处。然后您可以调整设置以进一步强化保护。希望这可以帮助
即使第一次尝试失败,黑客使用的脚本也可能会继续尝试不同的用户名/密码组合。这会使您的身份验证失败日志文件变得越来越大。 Fail2ban 阻止了这一点。
这个想法是建立多层保护,以便尽早停止弱攻击并减少潜在的攻击面。