gpt4 book ai didi

linux - 2 iptables 规则我不明白

转载 作者:行者123 更新时间:2023-12-02 09:38:13 27 4
gpt4 key购买 nike

谁能解释以下规则:

-A default-INPUT -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A default-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

我想我添加它们是为了防止 SYN 泛滥,但我不确定。

最佳答案

-A default-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  • -A 输入
  • 将规则附加到 INPUT 链
  • -m 状态
  • 加载状态模块
  • --state 相关,已建立
  • 使用状态模块匹配相关或已建立的连接
  • -j 接受
  • 是到 ACCEPT 链的跳转,这意味着相关或先前建立的连接的流量被接受并允许通过防火墙。

  • 现在执行下一个命令:
    -A default-INPUT -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
  • -p tcp
  • 仅匹配 tcp 协议(protocol)上的规则
  • -m tcp
  • 加载 tcp 模块(在文档中也称为“匹配扩展”)
  • --运动 0:1023
  • 匹配源端口范围 0-1023
  • ! --tcp-flags FIN,SYN,RST,ACK SYN
  • [!] 反转匹配感
  • [!] --tcp-flags 掩码补偿
  • 当 TCP 标志符合指定时匹配。第一个参数掩码是我们应该检查的标志,写为逗号分隔的列表,第二个参数 comp 是必须设置的标志的逗号分隔列表。标志是:SYN ACK FIN RST URG PSH ALL NONE .
  • 因此命令:iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
  • 只会匹配带有 SYN 的数据包标志集,以及 ACK, FIN and RST未设置标志。
  • 所以我相信这条规则在 FIN,RST,ACK 时匹配设置标志和SYN未设置;这是SYN集和FIN,RST,ACK的反向匹配未设置。

  • 为了理解这个模块的使用,你需要对 TCP 段和它的 3 次握手有一点了解。

    这是3次握手:

    3 way TCP handshake
    (来源: cisco.com)
    .

    因此,TCP 段具有控制连接状态的标志。
  • URG(1 位)——表示紧急指针字段是重要的
  • ACK(1 位)——表示确认字段是重要的。客户端发送的初始 SYN 数据包之后的所有数据包都应设置此标志。
  • PSH(1 位)——推送功能。要求将缓冲的数据推送到接收应用程序。
  • RST(1 位)– 重置连接
  • SYN(1 位)——同步序列号。只有从每一端发送的第一个数据包应该设置这个标志。其他一些标志基于此标志改变含义,有些仅在设置时有效,而另一些则在清除时有效。
  • FIN(1 位)——不再有来自发件人的数据

  • TCP 段:
     0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Source Port | Destination Port |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Sequence Number |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Acknowledgment Number |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Data | |U|A|P|R|S|F| |
    | Offset| Reserved |R|C|S|S|Y|I| Window |
    | | |G|K|H|T|N|N| |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Checksum | Urgent Pointer |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Options | Padding |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | data |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    我认为这不会阻止 SYN洪水主要是因为我还没有尝试过。虽然这个会限制 SYN洪水:
    # Limit the number of incoming tcp connections
    # Interface 0 incoming syn-flood protection
    iptables -N syn_flood
    iptables -A INPUT -p tcp --syn -j syn_flood
    iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
    iptables -A syn_flood -j DROP
  • --limit 1/s:以秒为单位的最大平均匹配率
  • --limit-burst 3:匹配的最大初始数据包数

  • 取自: http://www.cyberciti.biz/tips/howto-limit-linux-syn-attacks.html

    关于linux - 2 iptables 规则我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983060/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com