我的 SSH 服务器的这种配置是否适合本地网络的 root 访问?

我的 SSH 服务器的这种配置是否适合本地网络的 root 访问?

意图

我想允许 SSH root 访问我的服务器,但出于安全原因,只能从本地网络进行访问。

环境

  • 操作系统:GNU/Linux Debian 9 Stretch 完全更新。
  • SSH:OpenSSH 版本 1:7.4p1-10+deb9u3。

程序

  1. 在主配置文件中:

    /etc/ssh/sshd_config
    

    我删除了禁止直接 root 访问的全局行,即:

    PermitRootLogin no
    

    并将其设置如下:

    # root is allowed from local network only
    Match Address 192.168.0.*
        PermitRootLogin yes
    
    # otherwise you need to log in as a user
    Match all
        PermitRootLogin no
    
  2. 我已暂时启用密码访问:

    PasswordAuthentication yes
    
  3. 我已经为 root 帐户生成了私钥-公钥对:

    ssh-keygen -t rsa -b 8192
    

    当然,是在以 root 身份登录时。

  4. 然后在客户端笔记本电脑上,我使用以下命令复制了公钥:

    ssh-copy-id [email protected] -p yyyyy    # I have hidden the port number and ip
    
  5. 然后我就能够使用公钥作为 root 成功登录到我的服务器,因此我禁用了密码访问:

    # use only public key, never a password
    PubkeyAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey
    

问题

我是否执行了所有必要的步骤,以使非本地计算机甚至无法尝试登录我的服务器?

如果我没有,请详细说明您的建议?

答案1

我是否执行了所有必要的步骤,以使非本地计算机甚至无法尝试登录我的服务器?

您阻止他们尝试登录您的服务器作为根用户。所以这会有所不同:

  1. 如果您为第二个帐户添加 SSH 密钥。
  2. 在任何此类维护步骤中,您临时启用了密码登录。除非你粗暴地断开网络与互联网的连接,但我注意到你在步骤中没有提到这一点。

如果您打算满足上述问题,那么直接编写代码似乎更好。例如,我相信您可以用一行控制所有用户的登录。这将避免需要“暂时”暴露于基于互联网的密码猜测攻击:-)。

AllowUsers *@192.168.0.*

但您不应该依赖 SSH 守护进程配置。您应该询问为什么不在中央防火墙中强制执行此策略。 例如,如果您不想进行非本地登录,则无需让自己暴露在 SSH 服务器的预身份验证代码中的假设错误中。

我将仅限于提出一条主动提出的建议。如果您改进本地系统以将主机名解析为 IPv6 地址,您可能会感到惊讶,即使是无意的。因为上面的内容不允许对 IPv6 地址进行任何连接:)。如果您纯粹依赖中央防火墙,那么您也不必担心这一点。

最简单的网络配置是拥有一个集中式防火墙,将您的本地网络与互联网流量(以及其他任何流量,例如访客无线网络)区分开来。阻止任何来自互联网的连接,除非您有特定原因允许连接。

这已被标准化为家庭/小型企业路由器的默认设置。 (您仍然应该验证这样的假设,因为这些设备非常便宜并且安全性受到挑战。这一特定问题是活动人士非常明显的问题请注意,但众所周知,某些设备在首次实施 IPv6 时做出了“错误”选择)。

当然,如果您愿意,您也可以在主机本身上配置“冗余”防火墙。例如,这对于强制执行“默认不开放端口”策略可能很有用。乌班图或者德班。缺点是防火墙很难记住、配置,并且在它们破坏时进行故障排除,而现在您有两个独立的防火墙!从一到两个会显着增加复杂性,每次您想要开始使用纯服务器应用程序(例如 SSH)或未设计某些最可靠变体的点对点应用程序时打孔

下一个最简单的网络配置是以 sshd 的方式添加冗余选项ListenAddress。要添加一些 IPv6 支持,您可以确保您的路由器分配唯一本地地址以及全局可路由地址,并侦听唯一本地地址。当您拥有 IPv6 时,强制使用特定的ListenAddress' 会增加实质性的安全裕度。这与您只有 IPv4 的时代不同,互联网无论如何都无法攻击您的服务器(因为 NAT),除非

  1. 您的服务器是路由器或
  2. 您有一个纯调制解调器,而不是调制解调器+路由器的组合,或者
  3. 你至少租了一间额外的全球IP地址,它已分配给您的服务器。

一般来说,使用防火墙仍然有意义(我不记得任何具体的例外),同时将诸如此类的东西视为ListenAddress第二个安全边际。

不仅使用服务器自己的 IP 地址,还使用范围IMO 上列出的技术中,它是迄今为止最不理想的技术:)。

相关内容