如何停止对特定 IP 地址的 telnet 访问?

Amy*_*Amy 1 linux networking telnet access-control

如何在命令行上停止对特定 IP 地址的 telnet 访问?

use*_*ser 5

比Laurentiu Roescu更通用的解决方案是使用 iptables,它在每个发行版中的工作方式都相同,并且基本上与安装的软件无关。

# iptables -A INPUT -p tcp -s <ip_address> --dport telnet -j DROP
Run Code Online (Sandbox Code Playgroud)

您可以选择使用-j REJECT代替-j DROP。使用 REJECT 将告诉另一端的任何人该特定端口上没有任何内容;使用 DROP 将丢弃数据包,这会导致在远程主机的连接超时间隔过后连接尝试超时。

您可能需要在任何可能已经存在的“接受”规则之前插入规则。如果是这样,我喜欢这样做:

# iptables -L INPUT --line-number
<some or lots of output>
# iptables -I INPUT <number of telnet accept rule> ...
Run Code Online (Sandbox Code Playgroud)

其中...是一切从-p tcp向前在上述命令。本质上,-I INPUT n替换-A INPUT. (-I 是在位置n之前插入,-A 是追加。)

您可以使用--dport telnet因为telnet在 /etc/services 中列出。grep telnet /etc/services好奇的话就试试吧。如果不是,则必须使用数字端口号,即23.

您可能需要使用类似iptables-save的方法在重新启动时保留规则。详细信息将取决于您的发行版和设置,因此无法一概而论。如果您指定了您的发行版和版本,那么有人可能能够提供对此的具体见解(或者它可以作为一个单独的问题更好地工作“我如何在发行版 X 版本 Y 中跨重启保留 iptables 规则?”)。

也就是说,我同意应该改用 SSH。但是您可能仍然希望阻止来自某些 IP 的访问,并且可以在较低级别执行此操作,在堆栈的较高级别部分中导致漏洞或拒绝服务的风险越小。