![如何拒绝对 SSH 端口的 HTTP 访问](https://linux22.com/image/591790/%E5%A6%82%E4%BD%95%E6%8B%92%E7%BB%9D%E5%AF%B9%20SSH%20%E7%AB%AF%E5%8F%A3%E7%9A%84%20HTTP%20%E8%AE%BF%E9%97%AE.png)
我将服务器的 SSH 端口改为 22 以外的其他端口,但当我访问时,domain.com:<ssh-port>
我可以看到输出
SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
我想阻止除 SSH 之外的直接端口访问,如何使用 iptables 来实现?
答案1
iptables 无法阻止这种情况,因为它不会检查通过网络的流量内容。您可以使用应用程序防火墙,但这对于您的问题来说可能有点过度了。
我建议你考虑一下自己是否真的非常关心这个问题,不惜花费额外的精力安装和配置应用程序防火墙。最好花点时间仔细检查 sshd_config 文件中的选项,确保已按自己的意愿对其进行了安全配置。
答案2
你不能。这就是 SSH 协议的工作方式,它做的第一件事就是告诉你它的版本。
您也可以telnet
访问同一个端口,结果也一样。唯一iptables
能为您做的就是只允许某些 IP 访问该端口。
答案3
此输出由 SSH 守护程序返回给连接客户端。如果您简单地使用:
$ telnet ip port
Trying ip...
Connected to ip.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.8p1 Debian-7ubuntu1
您还可以找到使用时返回的同一行ssh -v -p port ip
。
不清楚你想做什么。你要么允许访问此端口,要么拒绝访问。你的意思是什么?
I want to block direct port access except SSH
答案4
如果我正确理解了您的问题...您已将 ssh 服务器配置为监听端口 80。HTTP 流量通常通过端口 80 完成。当使用 Web 浏览器连接到该端口时...您会看到 ssh 服务器发送的初始数据。
如果是这种情况,您无法使用 iptables 来“阻止”Web 浏览器并仅接受 ssh 客户端。您要么让端口保持打开状态……要么不打开。