如何禁用 SSH 的网络接口?

如何禁用 SSH 的网络接口?

在我的 Linux 机器上,我有 10 个可用的网络接口,如 eth0、eth0.67、eth0.70、eth0.97 等。

当我运行命令nc 160.48.249.170 22检查时,得到如下结果:

root@icon:~# nc 160.48.249.170 22
SSH-2.0-OpenSSH_8.2

在我的系统中,eth0.97 的 inet 为160.48.249.170。因此,此处 SSH 正在监听接口 eth0.97。 在此处输入图片描述

与上面类似,SSH 正在监听所有可用的 10 个接口。如何禁用或启用某个特定接口来监听 SSH?

/etc/ssh/sshd_config,下面是配置

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

但是我按照如下所示进行了更改,只监听一个接口并重新启动了 ssh。

#Port 22
#AddressFamily any
ListenAddress 160.48.199.186
#ListenAddress ::

但经过上述更改后,ssh 也会监听所有接口

答案1

我将按照如下方式进行:

修改你的 sshd 配置:

  • 编辑 sshd 配置文件,通常位于/etc/ssh/sshd_config
  • 寻找选项ListenAddress。默认情况下,它被注释掉(#ListenAddress)。
  • 取消注释该行并添加您想要使用的接口的 IP 地址。

如果适用,配置防火墙

此外,我会使用系统防火墙限制 SSH 访问,我假设您使用 UFW,但这应该适用于任何防火墙。

  • 拒绝所有传入流量使用sudo ufw default deny incoming (请注意,这会阻止所有内容,因此请确保您不会丢失与服务器的连接!)
  • 明确允许 SSH你的网卡上的流量(我假设这个例子中是 eno0)sudo ufw allow OpenSSH on eno0 OpenSSH您也可以使用您的端口,例如22

您也可以进行修改/etc/host.deny/etc/hosts.allow但我不确定您是否可以在界面级别定义规则。


正如我所见,您已经完成了第 1 步,但它没有帮助您,我猜想,您没有正确重新启动 ssh。请注意,有两种不同的服务:

  • ssh.service
  • sshd.service

“区别”在于这里解释

也许,有些事情搞砸了。当您检查服务器的状态时,您可以看到它从什么时候开始运行的。因此,请确保您的服务器确实重新启动了。status(请注意,我有一个别名sudo systemctl status

╭─user@host ~
╰─$ status sshd.service
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2024-04-18 11:42:44 CEST; 7s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 686 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 687 (sshd)
      Tasks: 1 (limit: 9255)
     Memory: 1.6M
        CPU: 63ms
     CGroup: /system.slice/ssh.service
             └─687 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

您还可以使用 测试您的 SSH 配置sudo sshd -t -f /etc/ssh/sshd_config。如果没有错误,它不会发出任何抱怨,也不会给出任何输出。


编辑

我想在这里引用@Martin的评论。查找/etc/ssh/sshd_config.d/可能影响该行为的其他配置文件是明智之举。

是否考虑目录可以从Include /etc/ssh/sshd_config.d/*.conf/etc/ssh/sshd_config 中的行(应该在顶部)中看到。(这应该是默认的)

笔记:路径也可以不同。例如,Include /etc/ssh/example/example.conf如果该行在 sshd_conf 中,也会包含此文件。

相关内容