有人可以解释以下过滤接口流量的规则吗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
我的解释方式是:
接受所有传入数据包
loopback
。拒绝所有
127.x.x.x.x
不属于 的传入数据包loopback
。
这些规则有什么实际用途?在情况 1 中,这是否意味着所有数据包都loopback
不必经过额外的过滤?传入数据包是否有可能loopback
来自外部源?
答案1
规则的含义正是您所描述的,
- 从环回接口接受的所有数据包。
- 不接受来自其他源的具有环回地址的数据包。
这并不意味着来自环回接口的数据本身必须经过额外的过滤;这意味着规则 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
针对您的其他问题的解答:
- 在文章在 www.linode.com 有章节查看您当前的 iptables 规则。本章中说:
这意味着允许所有传入、转发和传出流量。将入站和转发流量限制在必要的范围内非常重要。
好的。默认情况下,我们允许所有流量(输出、输入、转发)。但是如果您的系统不使用默认规则怎么办?如果您更改了默认规则并忘记了这一点怎么办?因此,建议在每个 iptables 脚本中设置默认规则:
iptables -P OUTPUT ACCEPT
根据 iptables 最佳实践,建议在最后一条规则中设置默认策略以接受所有流量并拒绝(如果需要)所有流量。
- 是的。这正是我所说的。在本文的脚本中使用默认策略来拒绝所有流量:
# 然后拒绝它们。
-A 输入 -j 拒绝
-A 转发 -j 拒绝
-A 输出 -j 拒绝