nftables ప్యాకెట్ ఫిల్టర్ 0.9.1 విడుదల

ఒక సంవత్సరం అభివృద్ధి తర్వాత సమర్పించారు ప్యాకెట్ ఫిల్టర్ విడుదల nftables 0.9.1, IPv6, IPv4, ARP మరియు నెట్‌వర్క్ బ్రిడ్జ్‌ల కోసం ప్యాకెట్ ఫిల్టరింగ్ ఇంటర్‌ఫేస్‌లను ఏకీకృతం చేయడం ద్వారా iptables, ip6table, arptables మరియు ebtablesకి ప్రత్యామ్నాయంగా అభివృద్ధి చెందుతోంది. nftables ప్యాకేజీ వినియోగదారు స్థలంలో అమలు చేసే ప్యాకెట్ ఫిల్టర్ భాగాలను కలిగి ఉంటుంది, అయితే కెర్నల్-స్థాయి పని nf_tables సబ్‌సిస్టమ్ ద్వారా అందించబడుతుంది, ఇది విడుదలైన 3.13 నుండి Linux కెర్నల్‌లో భాగంగా ఉంది.

కెర్నల్ స్థాయి సాధారణ ప్రోటోకాల్-స్వతంత్ర ఇంటర్‌ఫేస్‌ను మాత్రమే అందిస్తుంది, ఇది ప్యాకెట్‌ల నుండి డేటాను సంగ్రహించడం, డేటా కార్యకలాపాలు చేయడం మరియు ఫ్లో నియంత్రణ కోసం ప్రాథమిక విధులను అందిస్తుంది.
ఫిల్టరింగ్ లాజిక్ మరియు ప్రోటోకాల్-నిర్దిష్ట హ్యాండ్లర్లు యూజర్ స్పేస్‌లో బైట్‌కోడ్‌గా కంపైల్ చేయబడతాయి, ఆ తర్వాత ఈ బైట్‌కోడ్ నెట్‌లింక్ ఇంటర్‌ఫేస్‌ని ఉపయోగించి కెర్నల్‌లోకి లోడ్ చేయబడుతుంది మరియు 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 రకం సభ్యత్వం-ప్రశ్న కౌంటర్ డ్రాప్

  • పరివర్తన గొలుసులను నిర్వచించడానికి వేరియబుల్‌లను ఉపయోగించే అవకాశం (జంప్ / గోటో). ఉదాహరణకి:

    dest = ber నిర్వచించు
    నియమం ip foo బార్ జంప్ $dest జోడించండి

  • హెడర్‌లోని TTL విలువల ఆధారంగా ఆపరేటింగ్ సిస్టమ్‌లను (OS ఫింగర్‌ప్రింట్) గుర్తించడానికి మాస్క్‌లకు మద్దతు. ఉదాహరణకు, పంపినవారి OS ఆధారంగా ప్యాకెట్లను గుర్తించడానికి, మీరు ఆదేశాన్ని ఉపయోగించవచ్చు:

    ... మెటా మార్క్ సెట్ osf ttl పేరు మ్యాప్‌ను దాటవేయి { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "తెలియదు" : 0x0}
    ... osf ttl skip వెర్షన్ "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 యాడ్ చైన్ ip x రా {టైప్ ఫిల్టర్ హుక్ ప్రీరౌటింగ్ ప్రాధాన్యత ముడి; }
    nft యాడ్ చైన్ ip 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 : secmark; }
    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 రా ప్రీరౌటింగ్

  • “డైనమిక్” ఫ్లాగ్‌ను స్పష్టంగా పేర్కొనడం ద్వారా సెట్‌ల కంటెంట్‌లను డైనమిక్‌గా అప్‌డేట్ చేయడానికి మెరుగైన మద్దతు. ఉదాహరణకు, "s" సెట్‌ని అప్‌డేట్ చేయడానికి సోర్స్ అడ్రస్‌ని జోడించడానికి మరియు 30 సెకన్ల పాటు ప్యాకెట్‌లు లేకుంటే ఎంట్రీని రీసెట్ చేయడానికి:

    పట్టిక xని జోడించండి
    సెట్ xs జోడించండి {రకం ipv4_addr; పరిమాణం 128; గడువు 30లు; జెండాలు డైనమిక్; }
    చైన్ xy జోడించండి {టైప్ ఫిల్టర్ హుక్ ఇన్‌పుట్ ప్రాధాన్యత 0; }
    రూల్ xy నవీకరణ @s { ip saddr }ని జోడించండి

  • ప్రత్యేక సమయం ముగిసే పరిస్థితిని సెట్ చేయగల సామర్థ్యం. ఉదాహరణకు, పోర్ట్ 8888కి వచ్చే ప్యాకెట్ల డిఫాల్ట్ గడువును భర్తీ చేయడానికి, మీరు పేర్కొనవచ్చు:

    టేబుల్ ఐపి ఫిల్టర్ {
    ct సమయం ముగిసింది దూకుడు-tcp {
    ప్రోటోకాల్ tcp;
    l3ప్రోటో ip;
    విధానం = {స్థాపితం: 100, క్లోజ్_వెయిట్: 4, క్లోజ్: 4}
    }
    చైన్ అవుట్‌పుట్ {
    ...
    tcp dport 8888 ct సమయం ముగిసింది సెట్ "దూకుడు-tcp"
    }
    }

  • inet కుటుంబానికి NAT మద్దతు:

    టేబుల్ ఇనెట్ నాట్ {
    ...
    ip6 daddr చనిపోయిన::2::1 dnat నుండి చనిపోయిన:2::99
    }

  • మెరుగైన అక్షర దోష నివేదన:

    nft చైన్ ఫిల్టర్ పరీక్షను జోడించండి

    లోపం: అటువంటి ఫైల్ లేదా డైరెక్టరీ లేదు; మీరు కుటుంబ IPలో టేబుల్ "ఫిల్టర్" అని చెప్పారా?
    చైన్ ఫిల్టర్ పరీక్షను జోడించండి
    ^^^^^^

  • సెట్లలో ఇంటర్ఫేస్ పేర్లను పేర్కొనే సామర్థ్యం:

    sc {ని సెట్ చేయండి
    inet_service టైప్ చేయండి. ఉంటే పేరు
    మూలకాలు = { "ssh" . "eth0"}
    }

  • నవీకరించబడిన ఫ్లోటేబుల్ నియమాల సింటాక్స్:

    nft పట్టిక xని జోడించండి
    nft జోడింపు ఫ్లోటేబుల్ x ft {హుక్ ప్రవేశ ప్రాధాన్యత 0; పరికరాలు = { eth0, wlan0 }; }
    ...
    nft యాడ్ రూల్ x ఫార్వర్డ్ ip ప్రోటోకాల్ {tcp, udp } ఫ్లో యాడ్ @ft

  • మెరుగైన JSON మద్దతు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి