Uporabili bomo nftables za prepošiljanje in filtriranje paketkov preko strežnika.

Netfilter je ogrodje, ki je del Linux jedra, in je namenjeno filtriranju omrežnih paketkov ter translaciji njihovih omrežnih naslovov in vrata.

iptables in novejši, enostavnejši in bolj učinkoviti nftables predstavljata uporabniški programski orodji za delo z Netfilter ogrodje.

Naloga

  • Postavite 2-e virtualki (A in B) in sicer tako, da A deluje kot omrežni prehod za B:
    • A ima dve omrežni kartici:
      • NIC1: Bridged Adapter / NAT / NAT Network
      • NIC2: Internal Network
    • B ima eno omrežno kartico:
      • NIC1: Internal Network
  • Omogočite dostop do spleta virtualki B preko virtualke A.
  • Preprečite dostop do IP naslova 8.8.8.8 virtualki B.
  • Preprečite povezovanje virtualke B na virtualko A preko protokola SSH.

Navodila

Zaženemo obe virtualki in na virtualki A postavimo DHCP strežnik ter na virtualki B nastavimo pridobivanje IP naslova preko DHCP, kot smo to naredili na prejšnjih vajah.

Lahko pa tudi ročno nastavimo IP naslova na vsaki virtualki, in sicer na A:

a$ ip addr add 10.30.0.1/24 dev enp0s8
a$ link set dev enp0s8 up
a$ ip a

Ter na virtualki B:

b$ ip addr add 10.30.0.2/24 dev enp0s3
b$ link set dev enp0s3 up
b$ ip a

Delovanje lahko preiskusimo z orodjem ping.

Nastavitve prehoda

Navodila za uporabo nftables.

Trenutno nastavite nftables lahko preverimo z:

a$ nft list ruleset

Na virtualki A nastavimo translacijo IP naslovov paketov, ki omogoči delovanje prehoda:

a$ nft add table mytable
a$ nft 'add chain mytable postrouting { type nat hook postrouting priority -100; }'
a$ nft add rule mytable postrouting masquerade

Prav tako, ne smemo pozabiti ali imamo omogoče prepošiljanje paketov na A, kar preverimo z:

a$ cat /proc/sys/net/ipv4/ip_forward

Vrednost 1 predstavlja omogočeno prepošiljanje paketov, medtem ko 0 onemogočeno. Nastavitev lahko spremenimo na 1 z:

a$ echo 1 > /proc/sys/net/ipv4/ip_forward

Če nam prehod še vedno ne deluje, preverimo omrežne poti z:

b$ ip r

V primeru, da nimamo nastavljene privzete poti preko prehoda, jo dodamo z:

b$ ip r a default via 10.30.0.1

Preprečite dostop do IP naslova 8.8.8.8

Dodamo pravilo za filtriranje vseh paketov s ponornim IP naslovom 8.8.8.8, ki izvirajo iz B:

a$ nft 'add chain mytable forward { type filter hook forward priority -100; }'
a$ nft add rule mytable forward ip daddr . ip saddr { 8.8.8.8 . 10.30.0.2 } drop

Preprečite uporabo protokola SSH

Dodamo pravilo za filtriranje vseh paketov s protokolom SSH, ki izvirajo iz B:

a$ nft 'add chain mytable input { type filter hook input priority -100; }'
a$ nft add rule mytable input tcp dport . ip saddr { 22 . 10.30.0.2 } drop

Brisanje

Vse nftables tabele (tables), verige (chains) in pravila (rules) imajo svoje identifikatorje (handles), ki jih uporabljamo za brisanje. Npr.:

a$ nft -a list table mytable
a$ nft delete rule mytable input handle 10
Zadnja sprememba: petek, 24. december 2021, 15.08