ipTables,如何阻止某个 IP 在 80 端口上的所有服务请求?

ipTables,如何阻止某个 IP 在 80 端口上的所有服务请求?

在 Linux 服务器/路由器上,我只想为一个 IP 阻止端口 80(例如:1.2.3.4)我已获得此示例:

### Block Incoming Port Requests (BLOCK PORT)
# To block port 80 only for an ip address 1.2.3.4, enter:
$ iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP
$ iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

我猜只需要第一行。我不明白这一行是干什么的:

$ iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP

答案1

要阻止名为 1.2.3.4 的攻击者 IP 地址,请输入仅有的

$ iptables -A INPUT -s 1.2.3.4 -j DROP 

答案2

如果您不理解该命令的工作原理,则应首先查阅该命令的手册页。来自man iptables

[!] -p, --protocol 协议

规则或要检查的数据包的协议。指定的协议可以是 tcp、udp、udplite、icmp、esp、ah、sctp 或特殊关键字“all”之一,也可以是数值,表示这些协议之一或其他协议。也可以使用 /etc/protocols 中的协议名称。协议前的“!”参数会反转测试。数字零相当于全部。“all”将与所有协议匹配,当省略此选项时,将作为默认值。

[!] -s,--源地址[/掩码][,...]

源指定。地址可以是网络名称、主机名、网络 IP 地址(带 /mask)或纯 IP 地址。在将规则提交给内核之前,主机名将仅解析一次。请注意,使用远程查询(如 DNS)指定要解析的任何名称都是一个非常糟糕的主意。掩码可以是网络掩码或纯数字,指定网络掩码左侧 1 的数量。因此,掩码 24 相当于 255.255.255.0。地址指定前的“!”参数会反转地址的含义。标志 --src 是此选项的别名。可以指定多个地址,但这将扩展到多个规则(使用 -A 添加时),或将导致删除多个规则(使用 -D)。

-j, --jump 目标

这指定了规则的目标;即,如果数据包匹配该规则,该做什么。目标可以是用户定义的链(除了此规则所在的链之外)、立即决定数据包命运的特殊内置目标之一或扩展(请参阅下面的扩展)。如果在规则中省略此选项(并且未使用 -g),则匹配规则将不会影响数据包的命运,但规则上的计数器将递增。

[!] -i, --in-接口名称

接收数据包的接口名称(仅适用于进入 INPUT、FORWARD 和 PREROUTING 链的数据包)。当在接口名称前使用“!”参数时,含义将反转。如果接口名称以“+”结尾,则任何以此名称开头的接口都将匹配。如果省略此选项,则任何接口名称都将匹配。

传输控制协议

如果指定了 `--protocol tcp',则可以使用这些扩展。它提供以下选项:[..]

[!] --目标端口,--dport 端口[:端口]

目标端口或端口范围指定。标志 --dport 是此选项的方便别名。[..]

因此,您询问的 iptables 命令内容为:“丢弃 ( )来自 IP 地址 192.168.1.0-192.168.1.255 ( ) 且发往该主机 ( ) 端口 80 ( ) 并通过接口 eth1 ( ) 进入的-j DROPTCP 数据包 ( ) 。'-p tcp-s 192.168.1.0/24--dport 80-A INPUT-i eth1

请注意,如果-t没有指定标志,则-t filter是隐含的(手册中也提到了这一点)。

更新(根据 OP 的评论):
上面这一iptables行与来自 IP 地址 1.2.3.4 的数据包没有任何关系,如果服务器/路由器不必阻止来自 192.168.1.0/24 子网的数据包,则可能应该省略。

相关内容