Kako namestiti in konfigurirati UFW - nezapleten požarni zid v Debianu/Ubuntuju


Ker so računalniki med seboj povezani, storitve hitro rastejo. E-pošta, družabni mediji, spletna trgovina, klepet do spletne konference so storitve, ki jih uporablja uporabnik. Toda na drugi strani je ta povezava všeč dvostranskemu nožu. Možno je poslati tudi slaba sporočila tistim računalnikom, kot so virus, zlonamerna programska oprema, trojanski programi.

Internet kot največje računalniško omrežje ni vedno poln dobrih ljudi. Da bi bili naši računalniki/strežniki varni, jih moramo zaščititi.

Ena izmed obveznih komponent v računalniku/strežnikih je požarni zid. Iz Wikipedije je definicija:

Pri računalništvu je požarni zid programski ali strojni sistem omrežnega varnostnega sistema, ki nadzira dohodni in odhodni omrežni promet z analizo podatkovnih paketov in na podlagi uporabljenega nabora pravil določi, ali jih je treba dovoliti ali ne.

Iptables je eden izmed požarnih zidov, ki ga strežniki pogosto uporabljajo. To je program, ki se uporablja za upravljanje dohodnega in odhodnega prometa v strežniku na podlagi sklopa pravil. Na splošno lahko v strežnik vstopi samo zaupanja vredna povezava. Toda IPTables deluje v načinu konzole in je zapleten. Tisti, ki poznajo pravila in ukaze iptables, lahko preberejo naslednji članek, ki opisuje uporabo požarnega zidu iptables.

  1. Priročnik za osnovne tabele IP (požarni zid Linux)

Namestitev požarnega zidu UFW v Debian/Ubuntu

Da bi zmanjšali zapletenost nastavitve IPTables, obstaja veliko sprednjih strani. Če uporabljate Ubuntu Linux, boste ufw našli kot privzeto orodje požarnega zidu. Začnimo raziskovati požarni zid ufw.

Ufw (nezapleteni požarni zid) je prednji del najpogosteje uporabljenega požarnega zidu iptables in je zelo prijeten za požarne zidove, ki temeljijo na gostiteljih. ufw daje ogrodje za upravljanje netfilterja in ponuja vmesnik ukazne vrstice za nadzor požarnega zidu. Zagotavlja uporabniku prijazen in enostaven za uporabo vmesnik za začetnike Linuxa, ki konceptov požarnega zidu ne poznajo preveč.

Na drugi strani pa isti zapleteni ukazi pomagajo skrbnikom, da določajo zapletena pravila z uporabo vmesnika ukazne vrstice. Ufw je upstream za druge distribucije, kot so Debian, Ubuntu in Linux Mint.

Najprej z naslednjim ukazom preverite, ali je nameščen ufw.

$ sudo dpkg --get-selections | grep ufw

ufw 		install

Če ni nameščen, ga lahko namestite z ukazom apt, kot je prikazano spodaj.

$ sudo apt-get install ufw

Pred uporabo preverite, ali se ufw izvaja ali ne. Za preverjanje uporabite naslednji ukaz.

$ sudo ufw status

Če ste ugotovili, da je stanje: neaktivno, to pomeni, da ni aktivno ali onemogočeno.

Če ga želite omogočiti, morate v terminal vnesti naslednji ukaz.

$ sudo ufw enable

Firewall is active and enabled on system startup

Če ga želite onemogočiti, preprosto vnesite.

$ sudo ufw disable

Po aktiviranju požarnega zidu lahko vanj dodate svoja pravila. Če želite videti, katera so privzeta pravila, lahko vnesete.

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
$

Kot vidite, je vsaka dohodna povezava privzeto zavrnjena. Če želite svojo napravo odstraniti na daljavo, morate omogočiti ustrezna vrata. Na primer želite dovoliti povezavo ssh. Tu je ukaz, da to dovolite.

$ sudo ufw allow ssh

[sudo] password for pungki :
Rule added
Rule added (v6)
$

Če ponovno preverite stanje, boste videli takšen izhod.

$ sudo ufw status

To 		Action 			From
-- 		----------- 		------
22 		ALLOW 			Anywhere
22 		ALLOW 			Anywhere (v6)

Če imate veliko pravil in želite sproti postavljati številke na vsa pravila, uporabite parameter oštevilčen.

$ sudo ufw status numbered

To 		Action 			From
------ 		----------- 		------
[1] 22 		ALLOW 			Anywhere
[2] 22 		ALLOW 			Anywhere (v6)

Prvo pravilo pravi, da je dovoljena dohodna povezava do vrat 22 od koder koli, tako tcp kot udp paket. Kaj, če želite dovoliti samo paket tcp? Nato lahko za številko vrat dodate parameter tcp. Tu je primer z vzorčnim izhodom.

$ sudo ufw allow ssh/tcp

To 		Action 			From
------ 		----------- 		------
22/tcp 		ALLOW 			Anywhere
22/tcp 		ALLOW 			Anywhere (v6)

Isti triki veljajo tudi za pravilo Zavrni. Recimo, da želite zavrniti pravilo ftp. Torej morate samo tipkati.

$ sudo ufw deny ftp

To 		Action 			From
------ 		----------- 		------
21/tcp 		DENY 			Anywhere
21/tcp 		DENY 			Anywhere (v6)

Včasih imamo vrata po meri, ki ne upoštevajo nobenih standardov. Recimo, da spremenimo vrata ssh na našem računalniku z 22 na 2290. Nato lahko vrata 2290 omogočimo takole.

$ sudo ufw allow

To 		Action 			From
-- 		----------- 		------
2290 		ALLOW 			Anywhere
2290 		ALLOW 			Anywhere (v6)

V pravilo lahko dodate tudi obseg vrat. Če želimo odpreti vrata od 2290 do 2300 s protokolom tcp, bo ukaz tak.

$ sudo ufw allow 2290:2300/tcp

To 			Action 			From
------ 			----------- 		------
2290:2300/tcp 		ALLOW 			Anywhere
2290:2300/tcp 		ALLOW			Anywhere (v6)

če pa želite uporabiti udp, uporabite naslednji ukaz.

$ sudo ufw allow 2290:2300/udp

To 			Action 			From
------ 			----------- 		------
2290:2300/udp 		ALLOW 			Anywhere
2290:2300/udp 		ALLOW			Anywhere (v6)

Ne pozabite, da morate izrecno vstaviti »tcp« ali »udp«, sicer boste prejeli sporočilo o napaki, podobno spodnjemu.

ERROR: Must specify ‘tcp’ or ‘udp’ with multiple ports

Prej smo dodali pravila glede na storitev ali vrata. Ufw vam omogoča tudi dodajanje pravil glede na naslov IP. Tu je vzorčni ukaz.

$ sudo ufw allow from 192.168.0.104

Za širitev obsega lahko uporabite tudi masko podomrežja.

$ sudo ufw allow form 192.168.0.0/24

To 		Action 			From
-- 		----------- 		------
Anywhere	ALLOW 			192.168.0.104
Anywhere	ALLOW 			192.168.0.0/24

Kot lahko vidite, bo parameter parameter omejeval samo vir povezave. Medtem ko je cilj - ki ga predstavlja stolpec To - kjer koli. Cilj lahko upravljate tudi s parametrom ‘To’. Oglejmo si vzorec, ki omogoča dostop do vrat 22 (ssh).

$ sudo ufw allow to any port 22

Zgornji ukaz bo omogočil dostop od koder koli in s katerega koli protokola do vrat 22.

Za natančnejša pravila lahko kombinirate tudi naslov IP, protokol in vrata. Recimo, da želimo ustvariti pravilo, ki omejuje povezavo samo z IP 192.168.0.104, samo protokol tcp in na vrata 22. Potem bo ukaz tak kot spodaj.

$ sudo ufw allow from 192.168.0.104 proto tcp to any port 22

Sintaksa za ustvarjanje pravila zavračanja je podobna pravilu dovoli. Spremeniti morate samo parameter iz dovoljenja v zanikati.

Včasih boste morda morali izbrisati obstoječe pravilo. Še enkrat z ufw lahko enostavno izbrišete pravila. Od zgornjega vzorca imate spodaj pravilo in ga želite izbrisati.

To 		Action 			From
-- 		----------- 		------
22/tcp		ALLOW 			192.168.0.104
21/tcp		ALLOW 			Anywhere
21/tcp 		ALLOW 			Anywhere (v6)

Obstajata dva načina brisanja pravil.

Spodnji ukaz bo izbrisal pravila, ki se ujemajo s ftp storitve. Torej bo 21/tcp, kar pomeni ftp vrata, izbrisana.

$ sudo ufw delete allow ftp

Ko pa ste poskušali izbrisati prvo pravilo v zgornjem primeru z uporabo spodnjega ukaza.

$ sudo ufw delete allow ssh

Or 

$ sudo ufw delete allow 22/tcp

Morda boste našli sporočilo o napaki, kot je.

Could not delete non-existent rule
Could not delete non-existent rule (v6)

Potem lahko naredite ta trik. Kot smo že omenili, lahko prikažete število pravil, da označite, katero pravilo želimo izbrisati. Naj vam ga pokažemo.

$ sudo ufw status numbered

To 		Action 			From
-- 		----------- 		------
[1] 22/tcp		ALLOW 			192.168.0.104
[2] 21/tcp		ALLOW 			Anywhere
[3] 21/tcp 		ALLOW 			Anywhere (v6)

Nato lahko s pomočjo izbrišete prvo pravilo. Pritisnite\"y", da pravilo trajno izbrišete.

$ sudo ufw delete 1

Deleting :
Allow from 192.168.0.104 to any port 22 proto tcp
Proceed with operation (y|n)? y

Iz teh metod boste videli razliko. Metoda 2 bo pred brisanjem pravila zahtevala potrditev uporabnika, medtem ko metoda 1 ne.

V nekaterih primerih boste morda želeli izbrisati/ponastaviti vsa pravila. To lahko storite s tipkanjem.

$ sudo ufw reset

Resetting all rules to installed defaults. Proceed with operation (y|n)? y

Če pritisnete\"y", bo ufw pred ponastavitvijo ufw varnostno kopiral vsa obstoječa pravila. Ponastavitev pravil bo onemogočila tudi vaš požarni zid. Če ga želite uporabiti, ga morate znova omogočiti.

Kot sem že omenil, lahko požarni zid ufw naredi vse, kar lahko naredi iptables. To dosežemo z uporabo različnih naborov datotek s pravili, ki niso nič drugega kot iptables-restore ustrezne besedilne datoteke. Fina nastavitev ufw in/ali dodajanje dodatnih ukazov iptables, ki ni dovoljeno prek ukaza ufw, je stvar urejanja več besedilnih datotek.

  1. /etc/default/ufw: Glavna konfiguracija za privzete pravilnike, podporo za IPv6 in module jedra.
  2. /etc/ufw/before[6].rules: pravila v teh datotekah se izračunajo pred pravili, dodanimi z ukazom ufw.
  3. /etc/ufw/after[6].rules: pravila v teh datotekah se izračunajo po pravilih, dodanih z ukazom ufw.
  4. /etc/ufw/sysctl.conf: nastavitve omrežja jedra.
  5. /etc/ufw/ufw.conf: nastavi, ali je ufw omogočen ob zagonu, in nastavi LOGLEVEL.

Zaključek

UFW kot prednji del iptables zagotovo omogoča enostaven vmesnik za uporabnika. Uporabniku ni treba zapomniti zapletene sintakse iptables. UFW kot svoj parameter uporablja tudi "navaden angleški jezik".

Dovoli, zavrni, ponastavi so eden izmed njih. Verjamem, da je zunaj veliko več iptables. Vsekakor pa je ufw ena najboljših alternativ za uporabnike, ki želijo požarni zid nastaviti hitro, enostavno in seveda varno. Za več podrobnosti obiščite stran priročnika za ufw, tako da vnesete man ufw.