nftables 阻止服務在 IPv6 上解析
我的伺服器設置了很長的服務列表,並且一切都執行良好……在 IPv4 上。但是當我針對 IPv6 測試它們時,什麼都沒有解決。禁用
nftables
一切後開始工作,所以我重新打開它並通過反複試驗,能夠辨識-->
導致事情失敗的兩條線(如下所示)……# Accept related or established, drop bad, accept everything else add rule inet filter INPUT ct state related,established accept add rule inet filter INPUT tcp flags & (fin|syn|rst|psh|ack|urg) == 0x0 drop --> add rule inet filter INPUT tcp flags & (fin|syn|rst|ack) != syn ct state new drop --> add rule inet filter INPUT tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg drop add rule inet filter INPUT iifname "lo" accept
我沒有受過應有的關於 TCP 的教育,實際上我受過的教育足以讓自己陷入困境,所以我希望能得到一些幫助來解釋我在這裡所做的事情。我的理解是我接受所有相關/已建立的流量,以及與環回介面相關的所有流量。我真的只是在看“新”請求……
syn
我的問題是,除了and之外,我並不真正了解 TCP 標誌ack
(實際上僅在它們如何以三向 TLS 握手方式工作的範圍內),我在這裡添加的其他標誌似乎在我的教程中很常見審查。我的恐懼是我不明白把它們留在那里或把它們拿出來的含義以及我對自己敞開心扉的意義。我的目標是允許 IPv4 和 IPv6 流量,同時消除任何不良或不相關的數據包通過。這最終將與商業產品相關聯,因此我想更好地理解,但需要一些指導。感謝任何人幫助我解決這個問題。
**編輯:**原來這些不是問題,導致問題的規則實際上是
icmp
規則,IPv6 需要一些nb-*
規則才能正常執行。我將在答案中提供詳細資訊。
事實證明,我發布的規則不是罪魁禍首,正如我在問題更新中所指出的那樣。實際問題與 ICMP 流量有關,特別是與 IPv6 直接相關的幾種類型。我的 ICMP 規則是…
add rule inet filter INPUT ct state new icmp type { echo-request, echo-reply } accept add rule inet filter INPUT ct state new icmpv6 type { echo-request, echo-reply } accept
但是為了正確執行 IPv6 需要一些與Neighbor Discovery相關的規則 (
nd-*
)。我已經包括了它們以及其他一些類型,它們都是成為“良好網路公民”的一部分。我認為的問題實際上對於緩解攻擊很重要,並且現在我已經修復了 ICMP 流量,並且工作正常。新的 ICMP 規則是…
add rule inet filter INPUT ip protocol icmp icmp type { destination-unreachable, echo-reply, echo-request, source-quench, time-exceeded } accept add rule inet filter INPUT ip6 nexthdr icmpv6 icmpv6 type { destination-unreachable, echo-reply, echo-request, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert, packet-too-big, parameter-problem, time-exceeded } accept
我認為是問題的原始規則實際上是為了減輕惡意行為……
XMAS 攻擊此規則用於緩解XMAS 攻擊,或為所有 tcp類型啟用數據包位的規則,否則,將其像“聖誕樹”一樣點亮,以解析作業系統對此類請求的響應中的細微差異以提供幫助找出壞人進一步的攻擊途徑……
add rule inet filter INPUT tcp flags & (fin|syn|rst|psh|ack|urg) == fin|syn|rst|psh|ack|urg drop
強制 SYN 檢查如果我理解正確,這有助於通過消除初始 SYN 數據包之前的其他無用數據包來降低處理負載,這些數據包可能是對資源的攻擊的一部分,例如通過資源耗盡的拒絕服務……
add rule inet filter INPUT tcp flags & (fin|syn|rst|ack) != syn ct state new drop
這篇文章幫助我站穩腳跟,開始尋找更好的理解。
希望這為其他人提供了一個捷徑!:)