AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1516164
Accepted
volticus
volticus
Asked: 2024-06-02 00:19:00 +0800 CST2024-06-02 00:19:00 +0800 CST 2024-06-02 00:19:00 +0800 CST

在台式机上进行端口转发与笔记​​本电脑建立ssh连接时有哪些注意事项?

  • 772

我在另一个城市有一台家用台式机,还有一台带到校园的笔记本电脑,两者都运行 ubuntu 22.04.4。我想建立从笔记本电脑到台式机的 ssh 连接以检索和写入文件。

我今天之前从未使用过 ssh。正如测试一样,我建立了 ssh 连接并使用 rsync 通过本地网络实现我想要的效果。但要通过互联网执行此操作,我必须在桌面上设置端口转发。

现在假设我使用基于公钥的身份验证在我的家庭台式机和笔记本电脑之间建立 ssh 连接。端口 22 转发到家庭桌面,并启用 ufw,桌面上只允许使用端口 22。这台笔记本电脑将在我校园的公共网络中使用。是否存在任何可能造成安全风险的漏洞、疏忽等?例如,如果有人要获取我家庭桌面的公共IP?

ufw
  • 1 1 个回答
  • 226 Views

1 个回答

  • Voted
  1. Best Answer
    user68186
    2024-06-02T02:06:44+08:002024-06-02T02:06:44+08:00

    问:是否存在任何可能造成安全风险的漏洞、疏忽等?

    这个问题太宽泛了。新的安全漏洞随时可能被发现。保持所有计算机更新,以便尽快将错误修复应用到您的计算机。

    例如,如果有人要获取我家庭桌面的公共IP?

    公共IP地址是“公共”的。也就是说,任何人都可以访问它。黑客通常使用脚本或程序自动检查一系列公共 IP 地址,以查看是否有任何端口打开。当他们找到开放端口(例如 22)时,他们可能会尝试使用常见用户名(例如 pi、root、admin、administrator 等)和泄露的密码列表进行登录。

    如果有人想专门针对您的桌面,他们可能会采取不同的方法。此类攻击的范围取决于攻击者及其拥有的资源。

    安全措施

    1. 路由器设置
    2. 启用基于公钥的身份验证并禁用基于密码的身份验证。
    3. 安装和配置防火墙
    4. 安装fail2ban

    1.路由器设置(不是真正的安全步骤)

    看来您知道如何从路由器转发端口。该链接适用于可能需要帮助的其他用户。

    您可以在路由器上打开一个高的非标准端口并将其转发到桌面的22端口。持续的攻击者将绕过此措施,但它可以阻止随意的黑客(及其脚本)。要设置端口转发,请参阅如何通过 Internet 从外部访问家庭 ssh 服务器?

    这还可以减少身份验证错误日志并填满计算机的存储空间。

    2. 启用基于公钥的身份验证并禁用基于密码的身份验证

    这是使用 ssh 的更安全的方式。它使用私钥-公钥对。私钥保留在建立 ssh 连接的受信任计算机中。在这种情况下Laptop。公钥转到Desktop。一旦密钥就位,您将在 ssh 服务器中禁用基于密码的身份验证Desktop。如果您在未确保基于密钥的身份验证正常工作的情况下禁用基于密码的身份验证,则 ssh 将无法工作,因为无法对远程用户进行身份验证。

    首先生成私钥-公钥对Laptop_user@Laptop。这需要在每个用户和每台通过 ssh 连接到另一台计算机的本地计算机上完成。在终端中输入:

    ssh-keygen -t ed25519
    

    这会生成比 RSA 更新、更安全的密钥。如果您需要 RSA 类型密钥,请输入:

    ssh-keygen -t rsa -b 4096
    

    该过程将提示您输入密码。Enter如果你不想打也可以打。如果您确实输入了密码,则每次 ssh from 时都会要求您输入Laptop密码Desktop。如果您使用密码,则不应与正常登录所用的密码相同。为了获得更好的安全性,请使用独特且复杂的密码。

    接下来,您需要将公钥从 复制Laptop到Desktop。在终端中Laptop输入:

    ssh-copy-id [email protected]
    

    Desktop_user系统会要求您输入in的登录密码Desktop。如果您想要通过 ssh 访问家庭 LAN 中的其他计算机,Laptop_user@Laptop则无需创建新的密钥对。使用上述命令将 的公钥复制Laptop_user@Laptop到其他远程计算机中的其他用户帐户。

    一旦公钥成功复制到帐户Desktop_user,Desktop请再次尝试 ssh:

    ssh [email protected]
    

    Desktop现在您应该无需Desktop_user密码即可进入。此时,可以使用密码或您生成的公钥来登录。您可以通过在 中创建一个新用户(或使用现有的第二个用户)来测试这一点Laptop,例如Laptop_usera。在此阶段,无需密码Laptop_user@Laptop即可Desktop_user@Desktop使用公钥进行 ssh 访问。另一方面,Laptop_usera@Laptop需要使用Desktop_userssh的密码Desktop_user@Desktop。

    下一步是禁用基于密码的身份验证。您可能想在本地终端中执行此操作Desktop。使用以下命令创建一个新文件/etc/ssh/sshd_config.d/

    sudo nano /etc/ssh/sshd_config.d/10-nopasswords
    

    然后添加以下行:

    # change the file extension to something other than .conf 
    # to temporarily allow passwords.
    # use sudo systemctl restart ssh.service after file rename
    PasswordAuthentication no
    

    使用Ctrl+O保存更改,使用Ctrl+X退出编辑器。

    最后,通过以下命令使用新设置重新启动 ssh 服务器:

    sudo systemctl restart ssh
    

    现在仍然Laptop_user@Laptop可以使用公钥在没有密码的情况下进行 ssh 访问。另一方面将获得拒绝ssh 的权限。Desktop_user@DesktopLaptop_usera@LaptopDesktop_user@Desktop

    3.安装并配置防火墙

    防火墙软件有很多,其中一些很难配置。我建议你安装ufw命令调用的“不复杂的防火墙” :

    sudo apt install ufw
    

    要仅从家庭 LAN 内打开端口 22,请使用以下命令:

    sudo ufw allow ssh
    sudo ufw enable
    

    此防火墙设置Desktop允许家庭 LAN 外部的任何人使用 ssh 连接到Desktop。

    如果您知道您只能从校园访问桌面。找出您的校园用于学生 WiFi 网络的外部 IP 地址范围。然后,您可以删除 ufw 常规“ssh”规则并创建一个新规则,仅允许端口 22 从该地址范围访问您的桌面。

    4. 安装fail2ban

    如果有人多次尝试访问您的桌面但失败,fail2ban 实用程序会暂时禁止 ssh 访问。

    sudo apt install fail2ban
    

    默认设置应该没问题,但您可以根据需要更改它们。请参阅如何阻止 ssh 机器人尝试以 root 身份通过 SSH进行一些修改。

    运行fail2ban几周后,您应该检查它的日志并查看登录尝试来自何处。然后您可以调整设置以进一步强化保护。希望这可以帮助

    问:如果使用公钥认证,fail2ban 会做什么吗?如果没有私钥的用户尝试建立 ssh 并且我的桌面不允许密码身份验证:他们如何能够重复尝试访问我的桌面?通过生成一堆私钥?

    即使第一次尝试失败,黑客使用的脚本也可能会继续尝试不同的用户名/密码组合。这会使您的身份验证失败日志文件变得越来越大。 Fail2ban 阻止了这一点。

    这个想法是建立多层保护,以便尽早停止弱攻击并减少潜在的攻击面。

    • 5

相关问题

  • 有没有办法让 UFW 退出 dmesg?

  • 如何通过 miredo 和 UFW 启用 IPv6?

  • 个人文件共享的防火墙设置

  • 这个 UFW 日志是什么意思?

  • 如何使用 (g)ufw 在 ubuntu 中打开一系列端口

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve