為什麼 Linux 主機會過濾 224.0.0.1 流量?
當向目標地址發送 ICMPv4 回應要求時
224.0.0.1
,接收請求的 Linux 主機會忽略它。使用的目標 MAC 地址是01:00:5e:00:00:01
。讓這些 Linux 主機應答的唯一方法是將 Kernel 參數設置
net.ipv4.icmp_echo_ignore_broadcasts
為 value0
。這將指示核心響應多播和廣播 ICMPv4 請求,並為廣播安全威脅打開大門。為什麼這個參數會過濾多播流量?有什麼攻擊可以證明它是正當的嗎?
使用 ICMPv6 和等價的目標地址
ff02::1
,Linux 主機不會過濾流量。是否存在將來也會被過濾的風險?ICMPv4 是否存在 ICMPv6 不存在的威脅?Linux 主機:
- Linux 發行版:Ubuntu 20.04.1 LTS Focal
- Linux核心:5.4.0
我理解您的問題,因此您希望阻止處理廣播,但不阻止多播,因為可能存在廣播安全威脅。
這就引出了一個問題,為什麼您認為廣播比多播更危險。畢竟,多播地址的
224.0.0.1
意思是“這個子網上的所有主機”(參考)。這與也發送到子網所有主機的廣播大致相同。更進一步,您甚至可以爭辯說多播比廣播更危險,因為它是可路由的。至少,部分多播地址範圍是可路由的(有關不完整的快速概述,請參閱此處),這意味著您子網之外的人可以將多播流量發送到您子網中的所有主機。(注意:通常,只有子網中感興趣的主機才會處理此類數據,但這不會改變問題的性質)。
為避免誤會,地址
224.0.0.1
是不可路由的,所以沒有來自外部的危險。但它仍然定址子網的所有主機。鑑於此,Linux 在核心級別不提供單獨的參數來忽略 IPv4 的廣播和多播並不是完全不合理的。
由於上述原因,我在核心級別啟用了廣播和多播處理,但我在防火牆級別阻止了多播。我不需要它,也永遠不需要它,而且我對基於它的“零信任”胡說八道深表不信任。作為一個題外話,它在 Windows 中是相同的(我在防火牆級別阻止它)。