ssh 端口转发以从任何地方访问我的家用计算机

ssh 端口转发以从任何地方访问我的家用计算机

我来自这个问题:https://superuser.com/questions/359799/how-to-make-freebsd-box-accessible-from-internet

我想了解这整个过程port forwarding

我读了很多东西,但无法理解端口转发本身的基本概念。

我拥有的:

我家有一台 freebsd 服务器。
网件路由器

这就是我想要实现的目标:

能够通过互联网从 Windows 机器访问 freebsd 服务器,以便能够打开网络浏览器并访问互联网。

我还想从我拥有的 ubuntu 机器访问这个 freebsd 盒子。

如果有人能帮助我,那就太好了。

这是我为端口转发所做的 netgear 路由器设置。

Netgear 端口转发

答案1

我将从原始事实开始:

  1. 你有:A- 你的 FreeBSD 盒子,B- 你的路由器和C- 一些可以访问互联网的机器。它是这样的:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
    \_________ ________/
              v
               `- this is your LAN
    

    注意你的路由器如何通常情况下有效:它允许连接LAN 上的机器互联网(简单地说)。因此,如果A(或局域网上的任何其他机器)想要访问互联网,它将被允许(同样,仅谈论基本理解和配置):

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `-->----'  `--->--->---^  
    

    以下是不是默认允许:

    .-----.      .-----.                        .-----.
    |  A  |  ==  |  B  |  - - ( Internet ) - -  |  C  |
    '-----'      '-----'                        '-----'
          `--<----'  `---<--- - - - - --<---<-----'
    

    (即路由器保护LAN 上的计算机无法从 Internet 访问。)请注意,路由器是 LAN 中唯一可见的部分互联网1) .

  2. 端口转发是允许第三种模式发生的原因。这包括告诉路由器什么C2)的连接应该转到哪个局域网上的机器。这是基于端口号- 这就是为什么它被称为转发端口。您可以通过指示路由器将来自 Internet 的给定端口上的所有连接发送到 LAN 上的特定计算机来进行配置。以下是将端口 22 转发到机器的示例A

    .------.     .-------.                        .-----.
    |  A   | ==  |   B   |  - - ( Internet ) - -  |  C  |
    |      |     |       |                        '-----'
    '-|22|-'     ',--|22|'                          |
        `--<-22---'    `---<---- - - - - - --<-22---'
    
  3. 这种通过 Internet 的连接是基于 IP 地址进行的。因此,上面的例子的更精确的表示是:

    .------.      .-------.                                .-----.
    |  A   |  ==  |   B   | - - - - - ( Internet ) - - - - |  C  |
    |      |      |       |                                '-----'
    '-|22|-'      ',--|22|'                                   |
        `--<-A:22--'    `--<-YourIP:22 - - - - --<-YourIP:22--'
    

    如果您没有互联网连接静止的IP,那么您必须以某种方式了解 ISP 当前分配给您的路由器的 IP。否则,C将不知道它必须连接到什么 IP 才能到达您的路由器(以及进一步到达A)。要以简单的方式解决此问题,您可以使用名为的服务动态域名解析。这将使您的路由器定期发送信息到一个特殊的DNS服务器它将跟踪您的 IP 并为您提供域名。有不少免费的动态 DNS 提供商。许多路由器都带有配置选项,可以轻松地与这些路由器进行联系。

1)这又是一种简化——互联网上看到的实际设备是调制解调器——它通常可以与路由器集成,但也可能是一个单独的盒子。
2)或任何其他具有互联网连接的机器。


现在你想要什么:

  1. 简单地允许 ssh 从 Internet 访问您的计算机是一个坏主意。有数千个机器人由饼干在 Internet 上搜索具有开放 SSH 端口的计算机。他们通常会“敲击”尽可能多的 IP 的默认 SSH 端口,一旦他们发现某处运行着 SSH 守护进程,就会尝试获取暴力破解访问机器。这不仅存在潜在的入侵风险,而且还存在机器被暴力破解时网络速度减慢的风险。

  2. 如果你确实需要这样的访问权限,你至少应该

    • 保证你有强的所有用户帐户的密码,

    • 禁止通过 SSH 进行 root 访问(您始终可以以普通用户身份登录,或者su然后sudo),

    • 更改 SSH 服务器运行的默认端口,

    • 引入一种禁止多次 SSH 登录尝试的机制(增加后续尝试的等待时间 - 我不记得这到底是怎么称呼的 - 我前段时间在 FreeBSD 上启用了它,我记得这很容易 - 尝试搜索一些 FreeBSD 论坛等有关保护 SSH 的内容,您就会找到它。)

    • 如果可能,仅当您知道您将在不久的将来访问计算机时才尝试运行 ssh 守护程序,然后将其关闭

  3. 习惯浏览系统日志。如果您开始注意到任何可疑的情况,请引入额外的安全机制,例如IP表或者端口敲门

答案2

有几种方法可以实现这一点。最简单的可能是设置所谓的 DMZ。然而,更安全的方法是在路由器上在端口 22 上设置到服务器 IP 的静态路由。

资源:

答案3

这可以通过您的路由器来完成。在某些路由器上,此功能称为Virtual Server

请参阅下图,有两个端口转发的示例。一种是Web方式,另一种是SSH方式。在第一种情况下,您的 WAN IP 上的任何请求(即带有端口的路由器的 IP)80将被转发到 LAN IP(192.168.2.4在这种情况下)
使用此功能,您可以从世界任何地方获得在 LAN 中运行的 PC/服务器上运行的服务即这些服务不限于 LAN
路由器上的端口转发或虚拟服务器

相关内容