如何为仅接受来自特定IP的telnet的机器编写iptables规则?

我知道如何拒绝一个特定的IP(S),但如何拒绝所有除了一个IP?

仅拒绝1:iptables -A FORWARD -s 1.2.3.4 -d 2.2.2.2 -i eth0 -p tcp -m tcp -dport 23 -j REJECT。

在这种情况下,我拒绝1.2.3.4从telneting到2.2.2.2

你这样做通常被认为是“错误”的方式。 你不想黑名单具体禁止的东西,你想白名单允许的东西。 这样你的默认是安全的(拒绝/丢弃),你只需要白名单的东西。

为了回答你的问题,很多iptables中的参数可以被否定!

所以在你的情况下,你会使用:

iptables -A FORWARD -s ! 1.2.3.4 -d 2.2.2.2 -i eth0 -p tcp -m tcp --dport 23 -j REJECT 

考虑切换默认策略拒绝。

使用! 否定。 就像是:

 iptables -A FORWARD -s ! 1.2.3.4 -d 2.2.2.2 -i eth0 -p tcp -m tcp --dport 23 -j REJECT 

将只允许通过IP 1.2.3.4。

你也可以使用tcpwrappers(即/etc/hosts.allow和/etc/hosts.deny),但是这样做不会那么困难,因为telnet仍然会响应。

作为一个方面说明,你可能应该远离telnet到ssh等等,尽pipe在你的情况下这可能是不可能的。