iptables 环回规则

iptables 环回规则

有人可以解释以下过滤接口流量的规则吗loopback

# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT

我的解释方式是:

  1. 接受所有传入数据包loopback

  2. 拒绝所有127.x.x.x.x不属于 的传入数据包loopback

这些规则有什么实际用途?在情况 1 中,这是否意味着所有数据包都loopback不必经过额外的过滤?传入数据包是否有可能loopback来自外部源?

答案1

规则的含义正是您所描述的,

  1. 从环回接口接受的所有数据包。
  2. 不接受来自其他源的具有环回地址的数据包。

这并不意味着来自环回接口的数据本身必须经过额外的过滤;这意味着规则 2) 试图防止来自其他接口的带有环回地址的假/欺骗数据包。

答案2

第一条规则需要接受所有到达环回接口的流量(来自其他主机 - LAN 或互联网 - 到达真实物理网卡的流量)

但!您的规则尚未完成。如果您有默认输出策略,则全部删除:

iptables -P OUTPUT DROP

您的环回接口可以接受流量,但您的系统无法从环回发送流量,因为输出策略不允许这样做。

因此,您需要定义输出策略:

iptables -P OUTPUT ACCEPT

或者只为环回接口定义规则:

iptables -A OUTPUT -o lo -j ACCEPT

第二条规则需要用于丢弃到达非环回接口(例如,来自 LAN 接口或互联网)且源地址为环回的数据包。这是反欺骗保护。

如果您的主机具有直接连接到互联网的接口,您可以添加规则,以防止该接口接收具有私有源地址的数据包。

网络示例192.168.0.0/16

iptables -A INPUT -s 192.168.0.0/16 -j DROP

针对您的其他问题的解答:

  1. 文章在 www.linode.com 有章节查看您当前的 iptables 规则。本章中说:

这意味着允许所有传入、转发和传出流量。将入站和转发流量限制在必要的范围内非常重要。

好的。默认情况下,我们允许所有流量(输出、输入、转发)。但是如果您的系统不使用默认规则怎么办?如果您更改了默认规则并忘记了这一点怎么办?因此,建议在每个 iptables 脚本中设置默认规则:

iptables -P OUTPUT ACCEPT

根据 iptables 最佳实践,建议在最后一条规则中设置默认策略以接受所有流量并拒绝(如果需要)所有流量。

  1. 是的。这正是我所说的。在本文的脚本中使用默认策略来拒绝所有流量:

# 然后拒绝它们。

-A 输入 -j 拒绝

-A 转发 -j 拒绝

-A 输出 -j 拒绝

相关内容