我试图在我的服务器上阻止 telnet,但未能成功。我在过滤器表的输入链中添加了以下防火墙规则。
INPUT CHAIN(filter table):
<some other firewall rules>
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -i eth0.2 -j DROP
基于这个线程在 Ubuntu 论坛上。但我发现,我仍然可以在我的服务器上打开 telnet。我还为上述问题准备了一些链接,但我没有得到任何帮助。请让我知道我在添加规则时错在哪里。
答案1
首先,您应该以相反的方式思考:您应该配置服务器的防火墙来阻止全部端口除了您在计算机上运行的服务。例如,对于必须可通过 SSH 访问的 HTTP/HTTPS Web 服务器,这是相关的 iptables 配置:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
其次,您的计算机甚至不应该运行 telnet 服务器。这是一个未加密且不安全的协议;设置 SSH 代替。
这只是我的推断,但我怀疑您可能想阻止外部用户使用 telnet 来探测您计算机上的端口,例如
telnet yourhost 25
探测是否有 SMTP 服务器正在运行。如果是这种情况,您无法阻止它们 - 只需将防火墙配置为阻止除服务器上运行的服务端口上的所有传入连接即可。