如何在 Debian 中阻止 OpenSSH 访问公共服务器 IP?

如何在 Debian 中阻止 OpenSSH 访问公共服务器 IP?

我在 DMZ 中拥有一个具有公共 IP 和私有 IP 的 Debian 服务器。我需要能够通过私有端的 SSH 连接到它,然后阻止对公共地址的所有访问。/etc/hosts.deny 和 sshd_config 似乎都只允许一个阻止传入的 IP 地址。我真正想要的是禁用公共 IP 的 SSH 连接。我一直在尝试 iptables,但也没有成功。

任何帮助都将受到赞赏。

--编辑因此,收集我迄今为止的尝试列表:

  • SSH
  • iptables iptables -I INPUT -d $public_ip -p tcp --dport 22 -j REJECT
  • /etc/hosts.deny-sshd: ALL except 192.168.2.12 $DHCPaddressrange : deny插入。
  • 网络状态- 的结果netstat -tunlp | grep 22

到目前为止,/etc/init.d/ssh 和 /etc/init.d/network 已经重新启动。

尝试连接服务器时已使用内部和外部网络连接。两者都可以通过公共地址访问。

- 编辑

它还活着!显然我们的访客网络获得了访问权限,但效果并不理想,但我尝试通过 SSH 从我们的访客网络和没有 SSH 的手机进行连接。显然,除非我在我们的网络之一上,否则我无法访问它。不过我发现那里存在一些防火墙问题。

谢谢你们的回复。

答案1

您可以使用 来执行此操作iptables -I INPUT -d $public_ip -p tcp --dport 22 -j REJECT,或者您可以将 sshd 绑定为仅在您的私有 IP 上ListenAddress $private_ip监听/etc/ssh/sshd_config

答案2

您可以通过配置 sshd 不监听公共地址来实现这一点。默认情况下,sshd 监听所有本地地址,您可以使用以下ListenAddress指令更改此设置/etc/ssh/sshd_config

ListenAddress private.ip.add.ress

重新启动 sshd,然后您就可以开始了,但是在退出用于进行更改的会话之前请进行测试。

如果您有多个想要监听的私人地址,您可以在其自己的 ListenAddress 指令中指定每个地址。

答案3

如果你使用 2 个接口,你可以将 ssh 配置为只监听其中一个接口!在你的 sshd_conf 中,你会发现一行

ListenAddress 0.0.0.0

这将绑定每个接口来监听 ssh!

现在将其更改为内部设备的 IP,例如:

ListenAddress 192.168.0.1

重新启动 ssh,现在 ssh 将只监听内部接口!

相关内容