ИздаванС Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 0.9.2

Π‘Π΅ ΡΡŠΡΡ‚ΠΎΡ Ρ€Π΅Π»ΠΈΠΉΠ· Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 0.9.2, Ρ€Π°Π·Π²ΠΈΠ²Π°ΠΉΠΊΠΈ сС ΠΊΠ°Ρ‚ΠΎ замСститСл Π½Π° iptables, ip6tables, arptables ΠΈ ebtables Ρ‡Ρ€Π΅Π· унификация Π½Π° интСрфСйситС Π·Π° филтрация Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ мостовС. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π° nftables Π²Π»ΠΈΠ·Π°Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π² пространството Π½Π° потрСбитСля, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π° Π½ΠΈΠ²ΠΎ ядро Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° сС осигурява ΠΎΡ‚ подсистСмата nf_tables, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΡΡŠΡΡ‚Π°Π²Π° Π½Π° ядрото Π½Π° Linux ΠΎΡ‚ вСрсия 3.13. НСобходимитС Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° nftables 0.9.2 измСнСния ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π² ядрото Π½Π° Linux 5.3.

На ядрото сС прСдоставя само ΠΎΠ±Ρ‰ интСрфСйс, нСзависим ΠΎΡ‚ конкрСтния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΈ осигуряващ основни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π›ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ спСцифичнитС Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‡ΠΈ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Π² потрСбитСлското пространство, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² ядрото Ρ‡Ρ€Π΅Π· интСрфСйса Netlink ΠΈ сС изпълнява Π² спСциална Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, наподобяваща BPF (Berkeley Packet Filters). Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΊΠΎΠ΄Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π½Π° ядрото, ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° всички Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ Π² потрСбитСлското пространство.

Основни нововъвСдСния:

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠΎΡ€Ρ‚Π° ΠΎΡ‚ Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° транспортно Π½ΠΈΠ²ΠΎ, нСзависимо ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» 4 Π½ΠΈΠ²ΠΎ:

    add rule x y ip protocol { tcp, udp } th dport 53

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΆΠΈΠ²ΠΎΡ‚ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ:

    add element ip x y { 1.1.1.1 timeout 30s expires 15s }

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ (lsrr, rr, ssrr ΠΈ ra) ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ IPv4:

    add rule x y ip option rr exists drop

    Π—Π° ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ Π΅ възмоТна ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° type, ptr, length ΠΈ addr:

    Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ x y ip опция rr Ρ‚ΠΈΠΏ 1 ΠΈΠ·Ρ‚Ρ€ΠΈΠΉ

  • Π’ ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ сСга Π΅ допустимо ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ прСфикси ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΎΡ‚ адрСси:

    iifname ens3 snat Π΄ΠΎ 10.0.0.0/28
    iifname ens3 snat Π΄ΠΎ 10.0.0.1-10.0.0.15

  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² опрСдСлСнията Π·Π° Π²Π΅Ρ€ΠΈΠ³ΠΈ:

    ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ default_policy = accept
    Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅Ρ€ΠΈΠ³Π° ip foo bar { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° входящ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° $default_policy }

  • Π£ΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π½Π° Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° сСга ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΊΠ°ΠΊΡ‚ΠΎ Π² числово, Ρ‚Π°ΠΊΠ° ΠΈ Π² символно прСдставянС:

    ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ prio = Ρ„ΠΈΠ»Ρ‚ΡŠΡ€
    ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ prionum = 10
    ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ prioffset = Β«Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ β€” 150Β»

    Π΄ΠΎΠ±Π°Π²ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ip foo
    Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅Ρ€ΠΈΠ³Π° ip foo bar { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° входящ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ $prio; }
    Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅Ρ€ΠΈΠ³Π° ip foo ber { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° входящ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ $prionum; }
    Π΄ΠΎΠ±Π°Π²ΠΈ Π²Π΅Ρ€ΠΈΠ³Π° ip foo bor { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° входящ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ $prioffset; }

  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° synproxy. НапримСр, Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π½Π° TCP ΠΏΠΎΡ€Ρ‚Π° 8888 ΠΏΠΎΠ΄ synproxy ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° слСдният Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

    Ρ‚Π°Π±Π»ΠΈΡ†Π° ip x {
    chain y {
    Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ raw; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° accept;
    tcp dport 8888 tcp Ρ„Π»Π°Π³ΠΎΠ²Π΅ syn notrack
    }

    Π²Π΅Ρ€ΠΈΠ³Π° z {
    Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° Π½Π°ΠΏΡ€Π΅Π΄ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° accept;
    tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct state invalid drop
    }
    }

  • Π—Π° опрСдСлянС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack Π½Π° ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈΡ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΈ сцСнарии, изискващи установяванС Π½Π° мноТСство ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ, сСга ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС опрСдСлят ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Ρ‡Ρ€Π΅Π· стандартни Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°. НапримСр, Π·Π° опрСдСлянС Π½Π° ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈΡ‚Π΅ послСдващи ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ към TCP ΠΏΠΎΡ€Ρ‚ 8888 слСдващитС ΡΠ²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ към ΠΏΠΎΡ€Ρ‚ 5432 ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΡƒΠΊΠ°ΠΆΠ°Ρ‚ слСднитС ΠΏΡ€Π°Π²ΠΈΠ»Π°:

    Ρ‚Π°Π±Π»ΠΈΡ†Π° x {
    ct expectation myexpect {
    protocol tcp
    dport 5432
    timeout 1h
    size 12
    l3proto ip
    }

    chain input {
    type filter hook input priority 0;
    ct state new tcp dport 8888 ct expectation set myexpect
    ct state established,related counter accept
    }
    }

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster