nftables ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ 0.9.1 ಬಿಡುಗಡೆ

ಅಭಿವೃದ್ಧಿಯ ಒಂದು ವರ್ಷದ ನಂತರ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗಿದೆ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ ಬಿಡುಗಡೆ nftables 0.9.1, IPv6, IPv4, ARP ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಸೇತುವೆಗಳಿಗಾಗಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರಿಂಗ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಏಕೀಕರಿಸುವ ಮೂಲಕ iptables, ip6table, arptables ಮತ್ತು ebtables ಗೆ ಬದಲಿಯಾಗಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತಿದೆ. nftables ಪ್ಯಾಕೇಜ್ ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ, ಆದರೆ ಕರ್ನಲ್-ಮಟ್ಟದ ಕೆಲಸವನ್ನು nf_tables ಉಪವ್ಯವಸ್ಥೆಯಿಂದ ಒದಗಿಸಲಾಗುತ್ತದೆ, ಇದು ಬಿಡುಗಡೆಯಾದ 3.13 ರಿಂದ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ಭಾಗವಾಗಿದೆ.

ಕರ್ನಲ್ ಮಟ್ಟವು ಪ್ಯಾಕೆಟ್‌ಗಳಿಂದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಲು, ಡೇಟಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಹರಿವಿನ ನಿಯಂತ್ರಣಕ್ಕೆ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುವ ಸಾಮಾನ್ಯ ಪ್ರೋಟೋಕಾಲ್-ಸ್ವತಂತ್ರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮಾತ್ರ ಒದಗಿಸುತ್ತದೆ.
ಫಿಲ್ಟರಿಂಗ್ ಲಾಜಿಕ್ ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್-ನಿರ್ದಿಷ್ಟ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಬೈಟ್‌ಕೋಡ್‌ಗೆ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ನಂತರ ಈ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ನೆಟ್‌ಲಿಂಕ್ ಇಂಟರ್ಫೇಸ್ ಬಳಸಿ ಕರ್ನಲ್‌ಗೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು BPF (ಬರ್ಕ್ಲಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್‌ಗಳು) ಅನ್ನು ನೆನಪಿಸುವ ವಿಶೇಷ ವರ್ಚುವಲ್ ಯಂತ್ರದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ವಿಧಾನವು ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಫಿಲ್ಟರಿಂಗ್ ಕೋಡ್‌ನ ಗಾತ್ರವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ಬಳಕೆದಾರರ ಜಾಗಕ್ಕೆ ಪ್ರೋಟೋಕಾಲ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಪಾರ್ಸಿಂಗ್ ನಿಯಮಗಳು ಮತ್ತು ತರ್ಕದ ಎಲ್ಲಾ ಕಾರ್ಯಗಳನ್ನು ಸರಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ಮುಖ್ಯ ಆವಿಷ್ಕಾರಗಳು:

  • IPsec ಬೆಂಬಲ, ಪ್ಯಾಕೆಟ್, IPsec ವಿನಂತಿ ID, ಮತ್ತು SPI (ಸೆಕ್ಯುರಿಟಿ ಪ್ಯಾರಾಮೀಟರ್ ಇಂಡೆಕ್ಸ್) ಟ್ಯಾಗ್ ಅನ್ನು ಆಧರಿಸಿ ಸುರಂಗ ವಿಳಾಸಗಳ ಹೊಂದಾಣಿಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ,

    ... ipsec in ip saddr 192.168.1.0/24
    ... ipsec in spi 1-65536

    ಒಂದು ಮಾರ್ಗವು IPsec ಸುರಂಗದ ಮೂಲಕ ಹಾದುಹೋಗುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ಪರಿಶೀಲಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ. ಉದಾಹರಣೆಗೆ, IPSec ಮೂಲಕ ಅಲ್ಲ ಸಂಚಾರವನ್ನು ನಿರ್ಬಂಧಿಸಲು:

    … ಫಿಲ್ಟರ್ ಔಟ್‌ಪುಟ್ RT ipsec ಡ್ರಾಪ್ ಕಾಣೆಯಾಗಿದೆ

  • IGMP (ಇಂಟರ್ನೆಟ್ ಗ್ರೂಪ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ಪ್ರೋಟೋಕಾಲ್) ಗೆ ಬೆಂಬಲ. ಉದಾಹರಣೆಗೆ, ಒಳಬರುವ IGMP ಗುಂಪಿನ ಸದಸ್ಯತ್ವ ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಲು ನೀವು ನಿಯಮವನ್ನು ಬಳಸಬಹುದು

    nft ನಿಯಮವನ್ನು ಸೇರಿಸಿ netdev foo bar igmp ಪ್ರಕಾರ ಸದಸ್ಯತ್ವ-ಪ್ರಶ್ನೆ ಕೌಂಟರ್ ಡ್ರಾಪ್

  • ಪರಿವರ್ತನೆ ಸರಪಳಿಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಅಸ್ಥಿರಗಳನ್ನು ಬಳಸುವ ಸಾಧ್ಯತೆ (ಜಂಪ್ / ಗೊಟೊ). ಉದಾಹರಣೆಗೆ:

    ಡೆಸ್ಟ್ = ಬೆರ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
    ನಿಯಮವನ್ನು ಸೇರಿಸಿ ip foo ಬಾರ್ ಜಂಪ್ $dest

  • ಹೆಡರ್‌ನಲ್ಲಿನ TTL ಮೌಲ್ಯಗಳ ಆಧಾರದ ಮೇಲೆ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳನ್ನು (OS ಫಿಂಗರ್‌ಪ್ರಿಂಟ್) ಗುರುತಿಸಲು ಮುಖವಾಡಗಳಿಗೆ ಬೆಂಬಲ. ಉದಾಹರಣೆಗೆ, ಕಳುಹಿಸುವವರ OS ಅನ್ನು ಆಧರಿಸಿ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಗುರುತಿಸಲು, ನೀವು ಆಜ್ಞೆಯನ್ನು ಬಳಸಬಹುದು:

    ... ಮೆಟಾ ಮಾರ್ಕ್ ಸೆಟ್ osf ttl ಹೆಸರು ನಕ್ಷೆಯನ್ನು ಬಿಟ್ಟುಬಿಡಿ { "Linux" : 0x1,
    "ವಿಂಡೋಸ್": 0x2,
    "MacOS": 0x3,
    "ಅಪರಿಚಿತ" : 0x0 }
    ... osf ttl ಸ್ಕಿಪ್ ಆವೃತ್ತಿ "Linux:4.20"

  • ಕಳುಹಿಸುವವರ ARP ವಿಳಾಸ ಮತ್ತು ಗುರಿ ವ್ಯವಸ್ಥೆಯ IPv4 ವಿಳಾಸವನ್ನು ಹೊಂದಿಸುವ ಸಾಮರ್ಥ್ಯ. ಉದಾಹರಣೆಗೆ, 192.168.2.1 ವಿಳಾಸದಿಂದ ಕಳುಹಿಸಿದ ARP ಪ್ಯಾಕೆಟ್‌ಗಳ ಕೌಂಟರ್ ಅನ್ನು ಹೆಚ್ಚಿಸಲು, ನೀವು ಈ ಕೆಳಗಿನ ನಿಯಮವನ್ನು ಬಳಸಬಹುದು:

    ಟೇಬಲ್ ಆರ್ಪ್ x {
    ಚೈನ್ y {
    ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್ಪುಟ್ ಆದ್ಯತೆಯ ಫಿಲ್ಟರ್; ನೀತಿ ಸ್ವೀಕರಿಸಿ;
    arp saddr ip 192.168.2.1 ಕೌಂಟರ್ ಪ್ಯಾಕೆಟ್‌ಗಳು 1 ಬೈಟ್‌ಗಳು 46
    }
    }

  • ಪ್ರಾಕ್ಸಿ (tproxy) ಮೂಲಕ ವಿನಂತಿಗಳ ಪಾರದರ್ಶಕ ಫಾರ್ವರ್ಡ್‌ಗೆ ಬೆಂಬಲ ಉದಾಹರಣೆಗೆ, ಪೋರ್ಟ್ 80 ಗೆ ಪ್ರಾಕ್ಸಿ ಪೋರ್ಟ್ 8080 ಗೆ ಕರೆಗಳನ್ನು ಮರುನಿರ್ದೇಶಿಸಲು:

    ಟೇಬಲ್ ip x {
    ಚೈನ್ y {
    ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರಿರೌಟಿಂಗ್ ಆದ್ಯತೆ -150; ನೀತಿ ಸ್ವೀಕರಿಸಿ;
    tcp dport 80 tproxy to :8080
    }
    }

  • SO_MARK ಮೋಡ್‌ನಲ್ಲಿ setsockopt() ಮೂಲಕ ಸೆಟ್ ಮಾರ್ಕ್ ಅನ್ನು ಮತ್ತಷ್ಟು ಪಡೆಯುವ ಸಾಮರ್ಥ್ಯದೊಂದಿಗೆ ಗುರುತಿಸುವ ಸಾಕೆಟ್‌ಗಳಿಗೆ ಬೆಂಬಲ. ಉದಾಹರಣೆಗೆ:

    ಟೇಬಲ್ inet x {
    ಚೈನ್ y {
    ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರಿರೌಟಿಂಗ್ ಆದ್ಯತೆ -150; ನೀತಿ ಸ್ವೀಕರಿಸಿ;
    tcp dport 8080 ಮಾರ್ಕ್ ಸೆಟ್ ಸಾಕೆಟ್ ಮಾರ್ಕ್
    }
    }

  • ಸರಪಳಿಗಳಿಗೆ ಆದ್ಯತೆಯ ಪಠ್ಯ ಹೆಸರುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಬೆಂಬಲ. ಉದಾಹರಣೆಗೆ:

    nft ಆಡ್ ಚೈನ್ ಐಪಿ x ರಾ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪೂರ್ವನಿರ್ಧರಿತ ಆದ್ಯತೆಯ ಕಚ್ಚಾ; }
    nft ಆಡ್ ಚೈನ್ ಐಪಿ x ಫಿಲ್ಟರ್ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರಿರೌಟಿಂಗ್ ಆದ್ಯತಾ ಫಿಲ್ಟರ್; }
    nft ಆಡ್ ಚೈನ್ ip x filter_later {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರಿರೂಟಿಂಗ್ ಆದ್ಯತಾ ಫಿಲ್ಟರ್ + 10; }

  • SELinux ಟ್ಯಾಗ್‌ಗಳಿಗೆ ಬೆಂಬಲ (Secmark). ಉದಾಹರಣೆಗೆ, SELinux ಸಂದರ್ಭದಲ್ಲಿ "sshtag" ಟ್ಯಾಗ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು, ನೀವು ಚಲಾಯಿಸಬಹುದು:

    nft ಸೆಕ್ಮಾರ್ಕ್ inet ಫಿಲ್ಟರ್ sshtag "system_u:object_r:ssh_server_packet_t:s0" ಸೇರಿಸಿ

    ತದನಂತರ ನಿಯಮಗಳಲ್ಲಿ ಈ ಲೇಬಲ್ ಅನ್ನು ಬಳಸಿ:

    nft ಆಡ್ ರೂಲ್ inet ಫಿಲ್ಟರ್ ಇನ್‌ಪುಟ್ tcp dport 22 ಮೆಟಾ ಸೆಕ್‌ಮಾರ್ಕ್ ಸೆಟ್ “sshtag”

    nft ನಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ inet ಫಿಲ್ಟರ್ ಸೆಕ್ಮ್ಯಾಪಿಂಗ್ {ಟೈಪ್ inet_service : ಸೆಕ್ಮಾರ್ಕ್; }
    nft ಆಡ್ ಎಲಿಮೆಂಟ್ inet ಫಿಲ್ಟರ್ ಸೆಕ್ಮ್ಯಾಪಿಂಗ್ {22 : "sshtag"}
    nft ಆಡ್ ರೂಲ್ inet ಫಿಲ್ಟರ್ ಇನ್‌ಪುಟ್ ಮೆಟಾ ಸೆಕ್‌ಮಾರ್ಕ್ ಸೆಟ್ tcp dport ನಕ್ಷೆ @secmapping

  • ಪಠ್ಯ ರೂಪದಲ್ಲಿ ಪ್ರೋಟೋಕಾಲ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸಲಾದ ಪೋರ್ಟ್‌ಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯ, ಅವುಗಳನ್ನು /etc/services ಫೈಲ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ:

    nft ಆಡ್ ರೂಲ್ xy tcp dport "ssh"
    nft ಪಟ್ಟಿ ನಿಯಮಗಳು -l
    ಟೇಬಲ್ x {
    ಚೈನ್ y {
    ...
    tcp dport "ssh"
    }
    }

  • ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ಫೇಸ್ ಪ್ರಕಾರವನ್ನು ಪರಿಶೀಲಿಸುವ ಸಾಮರ್ಥ್ಯ. ಉದಾಹರಣೆಗೆ:

    ಮೆಟಾ iifkind "vrf" ಸಮ್ಮತಿಸುವ ನಿಯಮವನ್ನು ಸೇರಿಸು inet ಕಚ್ಚಾ prerouting

  • "ಡೈನಾಮಿಕ್" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ಸೆಟ್‌ಗಳ ವಿಷಯಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ನವೀಕರಿಸಲು ಸುಧಾರಿತ ಬೆಂಬಲ. ಉದಾಹರಣೆಗೆ, ಮೂಲ ವಿಳಾಸವನ್ನು ಸೇರಿಸಲು "s" ಸೆಟ್ ಅನ್ನು ನವೀಕರಿಸಲು ಮತ್ತು 30 ಸೆಕೆಂಡುಗಳವರೆಗೆ ಯಾವುದೇ ಪ್ಯಾಕೆಟ್‌ಗಳಿಲ್ಲದಿದ್ದರೆ ನಮೂದನ್ನು ಮರುಹೊಂದಿಸಿ:

    ಟೇಬಲ್ x ಸೇರಿಸಿ
    ಸೆಟ್ xs ಸೇರಿಸಿ {ಟೈಪ್ ipv4_addr; ಗಾತ್ರ 128; ಕಾಲಾವಧಿ 30ಸೆ; ಧ್ವಜಗಳು ಕ್ರಿಯಾತ್ಮಕ; }
    ಚೈನ್ xy ಸೇರಿಸಿ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್‌ಪುಟ್ ಆದ್ಯತೆ 0; }
    ನಿಯಮ xy ನವೀಕರಣ @s { ip saddr } ಸೇರಿಸಿ

  • ಪ್ರತ್ಯೇಕ ಅವಧಿ ಮೀರುವ ಸ್ಥಿತಿಯನ್ನು ಹೊಂದಿಸುವ ಸಾಮರ್ಥ್ಯ. ಉದಾಹರಣೆಗೆ, ಪೋರ್ಟ್ 8888 ನಲ್ಲಿ ಬರುವ ಪ್ಯಾಕೆಟ್‌ಗಳ ಡೀಫಾಲ್ಟ್ ಸಮಯ ಮೀರುವಿಕೆಯನ್ನು ಅತಿಕ್ರಮಿಸಲು, ನೀವು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು:

    ಟೇಬಲ್ ಐಪಿ ಫಿಲ್ಟರ್ {
    ct ಸಮಯ ಮೀರುವಿಕೆ ಆಕ್ರಮಣಕಾರಿ-tcp {
    ಪ್ರೋಟೋಕಾಲ್ tcp;
    ಎಲ್ 3 ಪ್ರೊಟೊ ಐಪಿ;
    ನೀತಿ = {ಸ್ಥಾಪಿತ: 100, ಕ್ಲೋಸ್_ವೇಟ್: 4, ಕ್ಲೋಸ್: 4}
    }
    ಚೈನ್ ಔಟ್ಪುಟ್ {
    ...
    tcp dport 8888 ct ಟೈಮ್‌ಔಟ್ ಸೆಟ್ "ಆಕ್ರಮಣಕಾರಿ-tcp"
    }
    }

  • inet ಕುಟುಂಬಕ್ಕೆ NAT ಬೆಂಬಲ:

    ಟೇಬಲ್ ಇನೆಟ್ ನ್ಯಾಟ್ {
    ...
    ip6 ತಂದೆ ಸತ್ತರು::2::1 dnat to dead:2::99
    }

  • ಮುದ್ರಣದೋಷಗಳಿಂದಾಗಿ ಸುಧಾರಿತ ದೋಷ ವರದಿ ಸಾಮರ್ಥ್ಯಗಳು:

    nft ಚೈನ್ ಫಿಲ್ಟರ್ ಪರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ

    ದೋಷ: ಅಂತಹ ಫೈಲ್ ಅಥವಾ ಡೈರೆಕ್ಟರಿ ಇಲ್ಲ; ಫ್ಯಾಮಿಲಿ ಐಪಿಯಲ್ಲಿ ಟೇಬಲ್ "ಫಿಲ್ಟರ್" ಎಂದರ್ಥವೇ?
    ಚೈನ್ ಫಿಲ್ಟರ್ ಪರೀಕ್ಷೆಯನ್ನು ಸೇರಿಸಿ
    ^^^^^^

  • ಸೆಟ್‌ಗಳಲ್ಲಿ ಇಂಟರ್ಫೇಸ್ ಹೆಸರುಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯ:

    sc { ಹೊಂದಿಸಿ
    inet_service ಎಂದು ಟೈಪ್ ಮಾಡಿ. ಹೆಸರು
    ಅಂಶಗಳು = { "ssh" . "eth0"}
    }

  • ಫ್ಲೋಟೇಬಲ್ ನಿಯಮಗಳ ಸಿಂಟ್ಯಾಕ್ಸ್ ಅನ್ನು ನವೀಕರಿಸಲಾಗಿದೆ:

    nft ಟೇಬಲ್ x ಸೇರಿಸಿ
    nft ಫ್ಲೋಟೇಬಲ್ x ಅಡಿ ಸೇರಿಸಿ {ಹುಕ್ ಪ್ರವೇಶದ ಆದ್ಯತೆ 0; ಸಾಧನಗಳು = { eth0, wlan0 }; }
    ...
    nft ಆಡ್ ರೂಲ್ x ಫಾರ್ವರ್ಡ್ ಐಪಿ ಪ್ರೋಟೋಕಾಲ್ {tcp, udp } ಫ್ಲೋ ಸೇರಿಸಿ @ft

  • ಸುಧಾರಿತ JSON ಬೆಂಬಲ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ