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

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

任何帮助表示赞赏。

–EDIT所以要收集到目前为止我尝试的列表:

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

/etc/init.d/ssh和/etc/init.d/network已经重启。

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

– 编辑

它还活着! 显然我们的访客networking访问,这不是最佳的,但我尝试通过SSH连接从我们的客人networking的电话,没有。 显然,除非我在我们的networking之一,否则我无法实现它。 我在那里看到一些防火墙问题。

感谢您的回应家伙。

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

你可以通过configurationsshd不要听取公共地址来做到这一点。 默认情况下,sshd会侦听所有本地地址,您可以使用/etc/ssh/sshd_configListenAddress指令来更改

 ListenAddress private.ip.add.ress 

重新启动sshd,你应该很好,但在你退出会话之前进行testing,以便进行更改。

如果你有多个私人地址你想听,你可以指定每个在它自己的ListenAddress指令。

如果你使用2个接口,你可以configuration你的ssh只听一个接口! 在你的sshd_conf中你会find一行

 ListenAddress 0.0.0.0 

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

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

 ListenAddress 192.168.0.1 

重启ssh,现在ssh只会听内部接口!