nftables soso àlẹmọ 0.9.1 Tu

Lẹhin ọdun kan ti idagbasoke gbekalẹ soso àlẹmọ Tu nftables 0.9.1, to sese bi awọn kan rirọpo fun iptables, ip6table, arptables ati ebtables nipa isokan soso sisẹ atọkun fun IPv4, IPv6, ARP ati nẹtiwọki afara. Apopọ nftables pẹlu awọn paati àlẹmọ apo-iwe ti o ṣiṣẹ ni aaye olumulo, lakoko ti iṣẹ ipele kernel ti pese nipasẹ eto ipilẹ-nf_tables, eyiti o jẹ apakan ti ekuro Linux lati itusilẹ 3.13.

Ipele ekuro n pese nikan ni wiwo olominira ilana ilana jeneriki ti o pese awọn iṣẹ ipilẹ fun yiyo data lati awọn apo-iwe, ṣiṣe awọn iṣẹ data, ati iṣakoso sisan.
Imọye sisẹ funrararẹ ati awọn olutọju-ila-ilana ni a ṣe akojọpọ sinu bytecode ni aaye olumulo, lẹhin eyi ti kojọpọ baiti yii sinu ekuro nipa lilo wiwo Netlink ati ṣiṣe ni ẹrọ foju foju pataki kan ti o ṣe iranti ti BPF (Awọn Ajọ Packet Berkeley). Ọna yii ngbanilaaye lati dinku iwọn iwọn koodu sisẹ ti n ṣiṣẹ ni ipele ekuro ati gbe gbogbo awọn iṣẹ ti awọn ofin itọka ati ọgbọn fun ṣiṣẹ pẹlu awọn ilana sinu aaye olumulo.

Awọn imotuntun akọkọ:

  • Atilẹyin IPsec, ngbanilaaye ibaramu ti awọn adirẹsi oju eefin ti o da lori apo, ID ibeere IPsec, ati SPI (Atọka Parameter Aabo) tag. Fun apere,

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

    O tun ṣee ṣe lati ṣayẹwo boya ọna kan kọja nipasẹ oju eefin IPsec. Fun apẹẹrẹ, lati dènà ijabọ kii ṣe nipasẹ IPSec:

    … àlẹmọ o wu RT ipsec sonu silẹ

  • Atilẹyin fun IGMP (Ilana Iṣakoso Ẹgbẹ Ayelujara). Fun apẹẹrẹ, o le lo ofin kan lati ṣabọ awọn ibeere ọmọ ẹgbẹ IGMP ti nwọle

    nft fi ofin netdev foo bar igmp iru ẹgbẹ-ibeere counter ju

  • O ṣeeṣe ti lilo awọn oniyipada lati ṣalaye awọn ẹwọn iyipada (fo / goto). Fun apere:

    setumo dest = ber
    fi ofin ip foo bar fo $ dest

  • Atilẹyin fun awọn iboju iparada lati ṣe idanimọ awọn ọna ṣiṣe (Fingerprint OS) ti o da lori awọn iye TTL ninu akọsori. Fun apẹẹrẹ, lati samisi awọn apo-iwe ti o da lori OS olufiranṣẹ, o le lo aṣẹ naa:

    ... meta ami ṣeto osf ttl foo orukọ maapu {"Linux": 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "aimọ": 0x0}
    ... osf ttl foo ẹya "Lainos: 4.20"

  • Agbara lati baamu adiresi ARP ti olufiranṣẹ ati adirẹsi IPv4 ti eto ibi-afẹde. Fun apẹẹrẹ, lati mu counter ti awọn apo-iwe ARP ti a firanṣẹ lati adirẹsi 192.168.2.1, o le lo ofin atẹle:

    tabili arp x {
    ẹwọn y {
    iru àlẹmọ kio input ayo àlẹmọ; imulo gba;
    arp saddr ip 192.168.2.1 counter awọn apo-iwe 1 baiti 46
    }
    }

  • Atilẹyin fun fifiranšẹ sihin ti awọn ibeere nipasẹ aṣoju (tproxy). Fun apẹẹrẹ, lati tun awọn ipe pada si ibudo 80 si ibudo aṣoju 8080:

    tabili ip x {
    ẹwọn y {
    iru àlẹmọ kio prerouting ayo -150; imulo gba;
    tcp dport 80 tproxy si: 8080
    }
    }

  • Atilẹyin fun isamisi awọn iho pẹlu agbara lati gba ami ti a ṣeto siwaju sii nipasẹ setsockot () ni ipo SO_MARK. Fun apere:

    tabili inet x {
    ẹwọn y {
    iru àlẹmọ kio prerouting ayo -150; imulo gba;
    tcp dport 8080 ami ṣeto ami iho
    }
    }

  • Atilẹyin fun sisọ awọn orukọ ọrọ pataki fun awọn ẹwọn. Fun apere:

    nft add pq ip x raw {Iru àlẹmọ kio prerouting ayo aise; }
    nft fi pq ip x àlẹmọ {Iru àlẹmọ kio prerouting ayo àlẹmọ; }
    nft fi pq ip x filter_later {Iru àlẹmọ kio prerouting ayo àlẹmọ + 10; }

  • Atilẹyin fun awọn aami SELinux (Secmark). Fun apẹẹrẹ, lati ṣalaye tag “sshtag” ni ipo SELinux, o le ṣiṣe:

    nft ṣafikun secmark inet àlẹmọ sshtag "system_u: object_r: ssh_server_packet_t: s0"

    Ati lẹhinna lo aami yii ni awọn ofin:

    nft ṣafikun ofin inet àlẹmọ titẹ sii tcp dport 22 meta secmark ṣeto “sshtag”

    nft ṣafikun maapu inet àlẹmọ secmapping {iru inet_service: iṣẹju-aaya; }
    nft ṣafikun ipin inet àlẹmọ ni apakan apakan {22: "sshtag"}
    nft ṣafikun ofin inet àlẹmọ input meta secmark ṣeto tcp dport maapu @ secmapping

  • Agbara lati tokasi awọn ebute oko oju omi ti a yàn si awọn ilana ni fọọmu ọrọ, bi wọn ṣe ṣalaye ninu faili /etc/services. Fun apere:

    nft ṣafikun ofin xy tcp dport “ssh”
    nft akojọ ruleset -l
    tabili x {
    ẹwọn y {
    ...
    tcp dport "ssh"
    }
    }

  • Agbara lati ṣayẹwo iru wiwo nẹtiwọki. Fun apere:

    fi ofin inet raw prerouting meta iifkind "vrf" gba

  • Atilẹyin ilọsiwaju fun mimu dojuiwọn awọn akoonu ti awọn eto nipa sisọtọ asia “ti o ni agbara”. Fun apẹẹrẹ, lati ṣe imudojuiwọn ṣeto “s” lati ṣafikun adirẹsi orisun ati tun titẹ sii ti ko ba si awọn apo-iwe fun ọgbọn-aaya 30:

    fi tabili x
    ṣafikun ṣeto xs {iru ipv4_addr; iwọn 128; akoko ipari 30s; awọn asia ìmúdàgba; }
    fi pq xy kun {Iru àlẹmọ kio input ni ayo 0; }
    ṣafikun imudojuiwọn xy @s {ip saddr}

  • Agbara lati ṣeto ipo akoko ipari lọtọ. Fun apẹẹrẹ, lati fopin si akoko aifọwọyi fun awọn apo-iwe ti o de ni ibudo 8888, o le pato:

    àlẹmọ ip tabili {
    ct timeout ibinu-tcp {
    Ilana tcp;
    l3proto ip;
    eto imulo = {ti iṣeto: 100, close_wait: 4, sunmọ: 4}
    }
    igbejade ẹwọn {
    ...
    tcp dport 8888 ct akoko ti o ti ṣeto "ibinu-tcp"
    }
    }

  • Atilẹyin NAT fun ẹbi inet:

    tabili inet nat {
    ...
    ip6 daddr oku :: 2 :: 1 dnat si oku: 2 :: 99
    }

  • Ilọsiwaju ijabọ aṣiṣe typo:

    nft ṣafikun idanwo àlẹmọ pq

    Aṣiṣe: Ko si iru faili tabi ilana; ṣe o tumọ si tabili “àlẹmọ” ni idile ip?
    fi pq àlẹmọ igbeyewo
    ^^^^^^

  • Agbara lati tokasi awọn orukọ wiwo ni awọn eto:

    ṣeto sc {
    tẹ inet_service. iforukọ
    eroja = {"ssh" . "eth0" }
    }

  • Sintasi awọn ofin ṣiṣan ti a ṣe imudojuiwọn:

    nft fi tabili x
    nft ṣafikun ṣiṣan ṣiṣan x ft {ikọ ingress ni ayo 0; awọn ẹrọ = {eth0, wlan0}; }
    ...
    nft ṣafikun ofin x siwaju ip Ilana {tcp, udp} fikun ṣiṣan @ft

  • Imudara atilẹyin JSON.

orisun: opennet.ru

Fi ọrọìwòye kun