nftables පැකට් පෙරහන නිකුතුව 0.9.1

වසරක සංවර්ධනයෙන් පසු ඉදිරිපත් කරන ලදී පැකට් පෙරහන මුදා හැරීම nftables 0.9.1, IPv6, IPv4, ARP සහ ජාල පාලම් සඳහා පැකට් පෙරීමේ අතුරුමුහුණත් ඒකාබද්ධ කිරීම මගින් iptables, ip6table, arptables සහ ebtables සඳහා ආදේශකයක් ලෙස සංවර්ධනය වෙමින් පවතී. nftables පැකේජයට පරිශීලක අවකාශයේ ක්‍රියාත්මක වන පැකට් පෙරහන් සංරචක ඇතුළත් වන අතර කර්නල් මට්ටමේ කාර්යය සපයනු ලබන්නේ nf_tables උප පද්ධතිය මගිනි, එය 3.13 නිකුතුවේ සිට Linux කර්නලයේ කොටසක් වේ.

කර්නල් මට්ටම සපයනු ලබන්නේ පැකට් වලින් දත්ත උපුටා ගැනීම, දත්ත මෙහෙයුම් සිදු කිරීම සහ ප්‍රවාහ පාලනය සඳහා මූලික කාර්යයන් සපයන සාමාන්‍ය ප්‍රොටෝකෝල-ස්වාධීන අතුරු මුහුණතක් පමණි.
පෙරීමේ තර්කනයම සහ ප්‍රොටෝකෝල-විශේෂිත හසුරුවන්න පරිශීලක අවකාශයේ බයිට්කෝඩ් බවට සම්පාදනය කරනු ලැබේ, ඉන්පසු මෙම බයිට්කේතය Netlink අතුරුමුහුණත භාවිතයෙන් කර්නලයට පටවනු ලබන අතර BPF (Berkeley Packet Filters) සිහිගන්වන විශේෂ අථත්‍ය යන්ත්‍රයක ක්‍රියාත්මක වේ. මෙම ප්‍රවේශය මඟින් කර්නල් මට්ටමින් ක්‍රියාත්මක වන පෙරහන කේතයේ ප්‍රමාණය සැලකිය යුතු ලෙස අඩු කිරීමට සහ ප්‍රොටෝකෝල සමඟ වැඩ කිරීම සඳහා විග්‍රහ කිරීමේ නීති සහ තර්කනයේ සියලුම කාර්යයන් පරිශීලක අවකාශයට ගෙන යාමට ඔබට ඉඩ සලසයි.

ප්රධාන නවෝත්පාදන:

  • 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 වර්ගයේ සාමාජිකත්වය-විමසුම් කවුන්ටරය පහත වැටීම

  • සංක්‍රාන්ති දාමයන් නිර්වචනය කිරීමට විචල්‍යයන් භාවිතා කිරීමේ හැකියාව (ජම්ප් / ගෝටෝ). උදාහරණ වශයෙන්:

    dest = ber අර්ථ දක්වන්න
    රීතිය එකතු කරන්න ip foo බාර් ජම්ප් $dest

  • ශීර්ෂයේ ඇති TTL අගයන් මත පදනම්ව මෙහෙයුම් පද්ධති (OS Fingerprint) හඳුනා ගැනීමට වෙස් මුහුණු සඳහා සහාය. උදාහරණයක් ලෙස, යවන්නාගේ OS මත පදනම්ව පැකට් සලකුණු කිරීමට, ඔබට විධානය භාවිතා කළ හැකිය:

    ... meta mark set osf ttl skip name map { "Linux" : 0x1,
    "වින්ඩෝස්": 0x2,
    "MacOS": 0x3,
    "නොදන්නා" : 0x0}
    ... osf ttl skip version "Linux:4.20"

  • යවන්නාගේ ARP ලිපිනය සහ ඉලක්ක පද්ධතියේ IPv4 ලිපිනය ගැලපීමේ හැකියාව. උදාහරණයක් ලෙස, 192.168.2.1 ලිපිනයෙන් එවන ලද ARP පැකට් කවුන්ටරය වැඩි කිරීමට, ඔබට පහත රීතිය භාවිතා කළ හැකිය:

    වගුව 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 add chain ip x raw { type filter hook prerouting priority raw; }
    nft add chain ip x filter {type filter hook prerouting priority filter; }
    nft දාම එකතු කරන්න ip x filter_later { type filter hook prerouting priority filter + 10; }

  • SELinux ටැග් සඳහා සහාය (Secmark). උදාහරණයක් ලෙස, SELinux සන්දර්භය තුළ "sshtag" ටැගය අර්ථ දැක්වීමට, ඔබට ධාවනය කළ හැක:

    nft secmark inet filter sshtag "system_u:object_r:ssh_server_packet_t:s0" එක් කරන්න

    ඉන්පසු නීති වල මෙම ලේබලය භාවිතා කරන්න:

    nft add rule inet filter input tcp dport 22 meta secmark set “sshtag”

    nft සිතියම එකතු කරන්න inet පෙරහන secmapping {type inet_service : secmark; }
    nft add element inet filter secmapping {22 : "sshtag"}
    nft add rule inet filter input meta secmark set tcp dport map @secmapping

  • /etc/services ගොනුවේ අර්ථ දක්වා ඇති පරිදි, පෙළ ආකාරයෙන් ප්‍රොටෝකෝල වෙත පවරා ඇති වරායන් නියම කිරීමේ හැකියාව. උදාහරණ වශයෙන්:

    nft xy tcp dport "ssh" රීතිය එකතු කරන්න
    nft ලැයිස්තු රීති කට්ටලය -l
    වගුව x {
    දාමය y {
    ...
    tcp dport "ssh"
    }
    }

  • ජාල අතුරුමුහුණත වර්ගය පරීක්ෂා කිරීමේ හැකියාව. උදාහරණ වශයෙන්:

    එකතු කරන්න රීතිය inet raw prerouting meta iifkind "vrf" පිළිගන්න

  • "ගතික" ධජය පැහැදිලිව සඳහන් කිරීමෙන් කට්ටලවල අන්තර්ගතය ගතිකව යාවත්කාලීන කිරීම සඳහා වැඩිදියුණු කළ සහාය. උදාහරණයක් ලෙස, මූලාශ්‍ර ලිපිනය එක් කිරීමට "s" කට්ටලය යාවත්කාලීන කිරීමට සහ තත්පර 30ක් සඳහා පැකට් නොමැති නම් ප්‍රවේශය යළි පිහිටුවීමට:

    x වගුව එකතු කරන්න
    එකතු කරන්න xs {type ipv4_addr; ප්රමාණය 128; කල් ඉකුත්වීම 30s; ධජ ගතික; }
    දාම xy එකතු කරන්න {වර්ගය පෙරහන් කොක්ක ආදාන ප්‍රමුඛතාවය 0; }
    xy යාවත්කාලීන @s {ip saddr} රීතිය එක් කරන්න

  • වෙනම කල් ඉකුත්වීමේ කොන්දේසියක් සැකසීමේ හැකියාව. උදාහරණයක් ලෙස, වරාය 8888 වෙත පැමිණෙන පැකට් සඳහා පෙරනිමි කල් ඉකුත්වීම අභිබවා යාමට, ඔබට නියම කළ හැක:

    වගු ip පෙරහන {
    ct කල් ඉකුත්වීම ආක්‍රමණශීලී-tcp {
    ප්රොටෝකෝලය tcp;
    l3proto ip;
    ප්‍රතිපත්තිය = {ස්ථාපිත: 100, close_wait: 4, close: 4}
    }
    දාම ප්රතිදානය {
    ...
    tcp dport 8888 ct කල් ඉකුත්වීම කට්ටලය "ආක්‍රමණශීලී-tcp"
    }
    }

  • inet පවුල සඳහා NAT සහාය:

    Table inet nat {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • වැඩිදියුණු කළ ටයිප් දෝෂ වාර්තාකරණය:

    nft දාම පෙරහන් පරීක්ෂණය එකතු කරන්න

    දෝෂය: එවැනි ගොනුවක් හෝ නාමාවලියක් නැත; ඔබ පවුලේ ip හි වගුව "පෙරහන" අදහස් කළේද?
    දාම පෙරහන් පරීක්ෂණය එකතු කරන්න
    ^^^^^^

  • කට්ටලවල අතුරු මුහුණත් නම් නියම කිරීමේ හැකියාව:

    sc { සකසන්න
    inet_service ටයිප් කරන්න. නම්
    මූලද්රව්ය = { "ssh" . "eth0"}
    }

  • ප්‍රවාහ වගු රීති වාක්‍ය ඛණ්ඩය යාවත්කාලීන කරන ලදී:

    nft වගුව x එකතු කරන්න
    nft ප්‍රවාහ වගුව එකතු කරන්න x අඩි {කොක්ක ඇතුල්වීමේ ප්‍රමුඛතාවය 0; උපාංග = {eth0, wlan0}; }
    ...
    nft එකතු කිරීමේ රීතිය x ඉදිරි ip ප්‍රොටෝකෝලය {tcp, udp } ප්‍රවාහය එකතු කරන්න @ft

  • වැඩිදියුණු කළ JSON සහාය.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න