Tartalom
Bevezető
Az UFW (Uncomplicated Firewall) egy könnyen használható netfilter tűzfal kezelésére szolgáló program. Parancssori felületet használ, amely kevés egyszerű parancsból áll, és az iptables-t használja a konfigurációhoz, tehát az iptables frontend-je. Az UFW tűzfal az Ubuntu rendszerekben a 8.04 LTS kiadás óta alapértelmezetten elérhető, a Debian rendszerekben telepíteni kell.
Ebben a leírásban megnézzük az UFW tűzfal telepítését és alapvető használatát, beállításait, aminek a lépéseit én egy Debian 11 minimális szerveren fogom elvégezni.
Telepítés
Az UFW tűzfal az Ubuntu rendszereken a 8.04 LTS kiadás óta alapértelmezetten telepítve van, Debian rendszereken telepítsük az ufw csomagot root-ként:
apt-get install ufw
Használat
Az UFW tűzfalat az ufw parancs segítségével kezelhetjük amihez root jogosultság szükséges, így tehát a továbbiakban root-ként folytassuk.
Állapot kezelese
A tűzfal alapértelmezetten inaktív állapotban van, állapotát az alábbi paranccsal kérdezhetjük le:
ufw status
Inaktív állapotában nem jelenít meg több információt az állapotáról, ehhez be kell kapcsolni. Bekapcsolását az enable opcióval végezhetjük:
ufw enable
Mivel még nincs beállítva egyetlen tűzfal szabály sem, ezért ilyenkor jelzi hogy az engedélyezés megszakíthatja a jelenlegi SSH kapcsolatot, és megkérdi, hogy ennek ellenére folytatjuk-e. Itt egyelőre válasszuk az "n" opciót, tehát még ne kapcsoljuk be, előbb még beállítjuk.
A tűzfalat bekapcsolt állapotában disable opcióval bármikor kikapcsolhatjuk:
ufw disable
Alkalmazásprofilok
Az UFW tűzfal lehetőséget biztosít az úgynevezett alkalmazásprofilok vagy alkalmazásszűrők használatára, amelyek lényegében előre tárolt profilok, amik tartalmazzák a szolgáltatás nevét, rövid leírását, valamint a megnyitandó portokat és protokollokat. Ezeknek az alkalmazásprofiloknak egy része alapértelmezetten a programcsomaggal érkezik, más része pedig akkor jön létre, amikor egy UFW által védendő program telepítésre kerül, ekkor az adott program telepítője hozza létre a saját alkalmazásprofilját az UFW-ben.
Az alkalmazásprofilokat az alábbi paranccsal kérdezhetjük le:
ufw app list
Itt tehát láthatunk jónéhány előre beállított alkalmazásprofilt a különböző szolgáltatásokhoz. Ez Linux disztribúciónként eltérhet, hogy a szoftvercsomagban mely szolgáltatásokhoz készítenek előre beállításokat.
A profilok fizikailag a /etc/ufw/applications.d/ könyvtárban foglalnak helyet. Ha belenézünk néhányba, akkor láthatjuk a felépítésüket:
Ezek egyszerű szövegfájlok, amelyekben egy vagy több szűrő kaphat helyet, így tematikusan lehet őket csoportosítani funkcionalitásaik alapján. A szűrő a szögletes zárójelben lévő címkével kezdődik - ami a listázás során megjelenik -, valamint tartalmazza a megnevezését, leírását, majd alatta a portok számát, illetve a portok típusát (tcp vagy udp).
Az UFW alkalmazásprofilok információit lekérhetjük anélkül is, hogy meg kellene nyitnunk a hozzá tartozó fájlt. Például az OpenSSH alkalmazás információit lekérhetjük az alábbi módon:
ufw app info OpenSSH
Profile: OpenSSH Title: Secure shell server, an rshd replacement Description: OpenSSH is a free implementation of the Secure Shell protocol. Port: 22/tcp
Itt láthatjuk, hogy az "OpenSSH" alkalmazás profilja a 22-es TCP portot tartalmazza, ami alapértelmezetten az SSH kiszolgáló portja.
Az alkalmazásszűrők, vagy alkalmazásprofilok tehát kényelmi célokat szolgálnak, melyeknek segítségével egyszerűen tudjuk alakítani a tűzfal szabályainkat anélkül, hogy fejből ismernünk kellene a levédeni kívánt szolgáltatások portszámát.
Tűzfalszabályok
Mint más tűzfalaknál is, így az UFW esetében is a tűzfalszabályok "keltik életre" a biztonságot. A tűzfalszabályok tartalmazzák, hogy mit tegyen a tűzfal a szabályban meghatározott porttal: engedélyezze-e a rajta keresztül érkező csomagokat, vagy letiltsa.
Az UFW tűzfal alapértelmezetten úgy van beállítva, hogy ha szabályok kézi beállítása nélkül kerül aktiválásra, akkor minden bejövő kapcsolatot letilt, és minden kimenő kapcsolatot engedélyez.
Szabálykészletek és kiértékelési sorrendjük
Az UFW háromszintű szabálykészletet használ, amelyet kétszer három konfigurációs fájl tárol a /etc/ufw/ könyvtárban (a fájlduplikáció csak az IPv4 és IPv6 hálózatok kezelésének megkülönböztetése miatt van). Ezek az alábbi sorrendben kerülnek beolvasásra és kiértékelésre:
- before.rules és before6.rules: az első az IPv4, míg a második fájl az IPv6 hálózatokra illeszkedik. Ezek kerülnek kiértékelésre először.
- user.rules és user6.rules: Itt is IPv4 és IPv6 hálózatokra illesztett szabálykészletek kerülnek tárolásra. Ezekbe a fájlokba kerülnek bele a felhasználó által létrehozott (pl a parancssorból) tűzfalszabályok. Tehát ez a szabálykészlet értékelődik ki másodjára.
- after.rules és after6.rules: végül pedig ezek a fájlok kerülnek kiértékelésre szintén IPv4 vagy IPv6 hálózatnak megfelelően.
Ha belenézünk ezekbe a fájlokba, akkor az iptables parancs számára előkészített paramétereket fogunk benne látni, mivel az UFW a háttérben az iptables tűzfalat kezeli. Mindezek közül majd a felhasználói szabálykészletet tartalmazó fájlokat fogjuk megnézni, mindössze csak érdekességképpen.
Irányelvek / házirendek
Az UFW négyféle irányelvet / házirendet különböztet meg:
- allow: ilyenkor az UFW átengedi a megadott porton a csomagokat
- deny: "tiltás", ilyenkor letiltja a csomagokat, és úgy tesz, mintha nem venne róluk tudomást, azaz a küldő nem fog választ kapni, így nem fogja tudni, hogy a csomagja egyáltalán célba ért-e, vagy el sem jutott a kiszolgálóig. Biztonsági szempontból ez előnyösebb, mivel ha nem érkezik válasz a feladónak, akkor az időtúllépésre kényszeríti annak a kapcsolatát, így egy potenciális támadó esetén lelassítja a támadás folyamatát (pl. brute force támadások), vagy szimplán elhiheti a támadó, hogy nem is létezik a támadott szolgáltatás, így hamarabb felhagy a támadással. Valamint ez az opció egy kis sávszélességet is megtakarít, mivel nem küld vissza hibacsomagot a feladónak. Ez fontos lehet az aszimmetrikus hálózati kapcsolatoknál, ahol a DDoS támadás egyszerűen telítheti a felfelé irányuló kapcsolatot a hibacsomagokkal.
- reject: "visszautasítás", Ilyenkor is letiltja a csomagokat, annyi különbséggel, hogy ebben az esetben a tűzfal visszaküld egy hibacsomagot, ami tartalmazza, hogy a korábban küldött csomag vissza lett utasítva, tehát hogy le van tiltva az adott port (vagy akár a küldő IP-címe). Ez akkor lehet hasznos, ha szükséges tudatni a küldővel, hogy nem átmeneti hálózati vagy egyéb hiba következtében nem érnek célba a csomagok, hanem tudatos döntésről van szó.
- limit: A limit esetén a tűzfal csak korlátozottan engedi a csomagforgalmat a szabályban meghatározott portokon. Ez azt jelenti, hogy megadható olyan tiltás is, ami egy adott IP-címről 30 másodpercen belül 6-nál több kapcsolatot próbál megnyitni egy adott alkalmazáshoz. Ez az opció nagyon hasznos az olyan alkalmazásoknál, mint például az sshd, mivel ezek a szolgáltatások botoknak és más rosszindulatú felhasználók támadásainak vannak kitéve. A limit beállítással tehát "brute-force" típusú támadások ellen védekezhetünk hatékonyan.
Szabályok létrehozása és a tűzfal engedélyezése
A tűzfalszabályok az alábbi szintaktikával hozhatók létre:
ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]
Ennek megfelelően hozzunk létre egy szabályt, amiben engedélyezzük az SSH belépést. Első körben csak simán engedélyezzük az alkalmazás profiljának segítségével:
ufw allow in OpenSSH
Ezután már engedélyezhetjük az egész tűzfalat, mert nem fog kitiltani:
ufw enable
Itt újból felteszi a kérdést:
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Itt válasszunk "y" opciót.
Végül kérjük le a friss állapotot:
ufw status
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
Itt tehát láthatjuk, hogy az IPv4 és az IPv6 hálózat számára is bekerül a szabály. Innentől már az SSH kapcsolódás engedélyezve van a 22-es tcp porton, ahogy fentebb láthattuk ennek az alkalmazásnak az infójában is. Továbbá a From oszlopban az "Anywhere" jelzi, hogy nincs IP-cím sem listázva, tehát a kapcsolódás bárhonnan megtörténhet.
A példa kedvéért most állítsuk be kézzel a 22-es TCP portot "limit" beállítással:
ufw limit 22/tcp
Persze a kettőnek együtt így nincs értelme, ezért valamelyiket törölni kell.
Szabályok törlése
Tűzfal szabályokat kétféleképpen is törölhetünk. Az egyik módszer, ha kiadjuk az alábbi parancsot amivel - a saját példánknál maradva - töröljük az először beállított szabályt:
ufw delete allow in OpenSSH
Ilyenkor tehát az ufw delete után pontosan ugyanazt a szabályt kell megadnunk, mint amit felvittünk előtte. Ha talál egyező szabályt, akkor törli. Ez macerás lehet, ha több paraméterből álló szabályt hoztunk létre, ami IP-címet és egyebeket is tartalmaz, ezért van egy másik lehetőség is.
Közben újból felvittem a korábbi szabályt, hogy tudjam törölni a másik módszerrel:
ufw allow in OpenSSH
Ezután lekérjük az állapotot:
ufw status
Itt most helyet cseréltek a szabályok, mivel utólag vittem fel az alkalmazás profil alapján.
És most jön a másik módszer lényege, hogy az állapot lekérés parancsát kiegészítjük egy "numbered" szóval:
ufw status numbered
És így már a sorszámok alapján is tudjuk törölni, majd ismét állapot lekérdezés:
ufw delete 4
ufw delete 2
ufw status
Ha több szabályt törlünk, akkor arra figyeljünk, hogy a törlés után csúsznak a sorszámok, tehát ilyenkor visszafelé haladjunk, hogy a kisebb sorszámok közben ne változzanak.
IP-címek kezelése
Lehetőség van IP-címek kezelésére is, ahol IP-címek alapján tiltjuk (fekete lista) vagy engedélyezzük (fehér lista) a forgalmat a különböző alkalmazásokhoz, szolgáltatásokhoz. Erre nézzünk egy példát (korábbi tűzfalszabályok nélkül, tiszta lappal indulva):
ufw allow in from 192.168.1.100 to any app OpenSSH
vagy ha nem alkalmazás profilokkal szeretnénk dolgozni, hanem kimondottan portokkal és protokollokkal, akkor:
ufw allow in from 192.168.1.100 proto tcp to any port 22
A parancs szintaktikája enged némi rugalmasságot, ezért a paramétereket a akár fel is cserélhetjük. Így tehát például az iménti tűzfalszabály az alábbi módon is létrehozható:
ufw allow in from 192.168.1.100 to any port 22 proto tcp
Ahol előre hozhatjuk a from-to IP-cím kezelő részeket, és hátracsoportosíthatjuk a portot és a protokollt meghatározó paramétereket. Ezek alapján ha esetleg hosszabb, összetettebb tűzfalszabályokkal van dolgunk, akkor logikailag át is rendezhetjük az argumentumokat, hogy áttekinthetőbbek maradjanak a parancsaink, főleg ha script-ekben hajtjuk végre őket. Természetesen ezzel kapcsolatban tájékozódjunk az ufw parancs manual oldalán a részletekért.
Itt tehát láthatjuk, hogy üres tűzfalszabály listával indulva létrehozzuk először az OpenSSH alkalmazás profil segítségével a szabályt, majd utána direkt protokoll és port megadásával is.
"192.168.1.0/24" ami megegyezik a 192.168.1.0-192.168.1.255 tartománnyal, amennyiben például hivatkozni szeretnénk az összes belső címünkre.
Ha felvittük az IP-címre korlátozott "allow" szabályt, akkor utána ha másik IP-címről próbálkozunk, akkor:
Nem enged be. A példában a laptopomról próbálkoztam, aminek természetesen másik IP-címe van a belső hálózatomon.
További érdekesség, hogy ahogy már fentebb is említettem: alapból, ha nem rendelkezik másképp egy tűzfalszabály, akkor tiltás van érvényben, és azon belül is a "deny" irányelv működik, ami nem ad semmilyen választ a kliensnek, hanem az egy időután időtúllépés miatt megszakítja a kapcsolatot.
Mindeközben a korábbi ablakomban kilépve és újra belépve látható, hogy a szabályban meghatározott IP-címről továbbra is beengedi a kapcsolódást a 22-es tcp porton:
Az alternatív "reject" tiltási irányelv eltérő működésének vizsgálata
Ezek után még kipróbáljuk a "reject" irányelvet is, és megnézzük hogyan viselkedik a rendszer, ha nem az alapértelmezett (vagy akár tűzfalszabályban beállított) "deny" tiltó irányelvet használjuk. Hozzuk létre az alábbi egyszerű reject szabályt, ami általánosan visszautasít minden OpenSSH kapcsolatot, majd nézzük meg újra az állapotot:
ufw reject in OpenSSH
ufw status
Ezután ha megpróbálunk ismét belépni a másik IP-címmel működő helyről, akkor már a "Connection refused" hibaüzenetet kapjuk:
Amit természetesen egyből megkap a kliens, így nem időtúllépés miatt fog megszakadni a kapcsolat, hanem egy konkrét visszautasítási válasz miatt.
Ez lenne tehát a különbség a "deny" és a "reject" irányelvek tiltó hatása között.
Természetesen ez idő alatt továbbra is be lehet lépni a korábbi "allow" szabályban meghatározott IP-cím(ek)ről, mivel az a szabály kivételt képez a tiltás alól.
Naplózás
Az UFW tűzfal rendelkezik saját naplózási rendszerrel is, így nyomon tudjuk követni a működését, amiről érdemes még néhány mondatot ejteni.
A naplózás aktuális szintjét a status opció verbose módjával tudjuk lekérdezni:
ufw status verbose
ami alapértelmezetten be van kapcsolva, de alacsony szintűre van állítva "Logging: on (low)":
A naplózásnak 5-féle szintje van, ezek az alábbiak:
- Off: A naplózás kikapcsolva
- On (low): (alapértelmezett) A meghatározott házirendek szerint naplózza az összes blokkolt vagy engedélyezett csomagot
- On (medium): Ugyanaz, mint az előző, és ezen felül olyan csomagokat is naplóz, amelyek nem egyeznek a házirendekkel.
- On (high): Naplózza az összes korlátozásos és korlátozás nélküli kapcsolódásokat is (rate limiting).
- On (full): Minden csomagot naplóz
A naplózás szintje globálisan is beállítható, amit a fentebbi képen is lekérdeztünk, valamint tűzfalszabályonként is megadható.
Globális beállítás
A globális beállítás az alábbi paranccsal működik, ahol például teljes naplózásra állítjuk az UFW tűzfalat:
ufw logging full
Ezzel beállítottuk az egész tűzfalra vonatkozóan, hogy minden csomagot naplózzon.
Szabályszintű beállítás
Beállíthatunk szabályhoz kötött naplózási szintet is, amelyet a szabály létrehozásakor kell megadni. Ilyenkor viszont csak a "log" és a "log-all" szinteket választhatjuk. Például:
ufw allow in log from 192.168.1.1/24 to any app OpenSSH
ufw allow in log-all from 192.168.1.1/24 to any app OpenSSH
Ilyenkor az első, "log" beállítás annyit csinál, hogy a szabályra illeszkedő új kapcsolódásokat naplózza, a "log-all" beállítás pedig minden kapcsolódást naplóz, ami illeszkedik a tűzfalszabályra, tehát a már esetlegesen korábban kapcsolódott kliensek csomagjait is naplózza.
Naplófájlok értelmezése
Az UFW tűzfal saját naplófájlja a /var/log/ufw.log útvonalon található. Nézzünk bele egy kicsit nagyobbra nyitott ablakkal a végébe:
cat /var/log/ufw.log | tail -30
[...] Jun 26 18:02:40 debian11 kernel: [ 6149.284717] [UFW AUDIT] IN= OUT=enp0s3 SRC=192.168.1.140 DST=192.168.1.100 LEN=96 TOS=0x10 PREC=0x00 TTL=64 ID=84 DF PROTO=TCP SPT=22 DPT=52704 WINDOW=501 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:40 debian11 kernel: [ 6149.284986] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=9724 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK URGP=0 Jun 26 18:02:40 debian11 kernel: [ 6149.507876] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=96 TOS=0x10 PREC=0x00 TTL=64 ID=9725 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:40 debian11 kernel: [ 6149.508359] [UFW AUDIT] IN= OUT=enp0s3 SRC=192.168.1.140 DST=192.168.1.100 LEN=120 TOS=0x10 PREC=0x00 TTL=64 ID=85 DF PROTO=TCP SPT=22 DPT=52704 WINDOW=501 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:40 debian11 kernel: [ 6149.508573] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=9726 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK URGP=0 Jun 26 18:02:46 debian11 kernel: [ 6154.605931] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=120 TOS=0x10 PREC=0x00 TTL=64 ID=9727 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:46 debian11 kernel: [ 6154.606679] [UFW AUDIT] IN= OUT=enp0s3 SRC=192.168.1.140 DST=192.168.1.100 LEN=200 TOS=0x10 PREC=0x00 TTL=64 ID=86 DF PROTO=TCP SPT=22 DPT=52704 WINDOW=501 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:46 debian11 kernel: [ 6154.606975] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=9728 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK URGP=0 Jun 26 18:02:49 debian11 kernel: [ 6157.778973] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=120 TOS=0x10 PREC=0x00 TTL=64 ID=9729 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:49 debian11 kernel: [ 6157.779458] [UFW AUDIT] IN= OUT=enp0s3 SRC=192.168.1.140 DST=192.168.1.100 LEN=200 TOS=0x10 PREC=0x00 TTL=64 ID=87 DF PROTO=TCP SPT=22 DPT=52704 WINDOW=501 RES=0x00 ACK PSH URGP=0 Jun 26 18:02:49 debian11 kernel: [ 6157.779714] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=52 TOS=0x10 PREC=0x00 TTL=64 ID=9730 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK URGP=0 Jun 26 18:02:50 debian11 kernel: [ 6158.804283] [UFW AUDIT] IN=enp0s3 OUT= MAC=08:00:27:e3:9c:d6:90:2b:34:a2:db:b0:08:00 SRC=192.168.1.100 DST=192.168.1.140 LEN=88 TOS=0x10 PREC=0x00 TTL=64 ID=9731 DF PROTO=TCP SPT=52704 DPT=22 WINDOW=3441 RES=0x00 ACK PSH URGP=0
Itt a sorokban találhatunk név-érték párokat, amelyeknek a jelentése az alábbi (a teljesség igénye nélkül):
- IN= Ez a mező a bejövő forgalom hálózati eszközét mutatja (pl. enp0s3)
- OUT= Ez a mező a kimenő forgalom hálózati eszközét mutatja. Több helyen itt nincs adat, mivel ezek a sorok csak beérkező adatcsomag forgalmat jelenítenek meg.
- MAC= Ez jeleníti meg az eszköz MAC címét.
- SRC= A kapcsolat forrásának IP-címe. Bejövő csomag esetén a csatlakozó gép címe, kimenő csomag esetén a saját gép (localhost) IP-címe.
- DST= Ez pedig a kapcsolat céljának az IP-címe, tehát bejövő forgalom esetén a localhost, kimenő csomag esetén pedig a távoli gép címe.
- LEN= Az adatcsomag méretét mutatja
- TOS= (Type of Service) A csomagok osztályozására szolgáló mező, de már elavult.
- PREC= Ez a mező a szolgáltatás elsőbbségi típusát mutatja.
- TTL= (Time To Live) Az adatcsomag élethosszának a jelölése. Ha ez eltelik, akkor a csomag eldobódik.
- ID= TA csomagok egyedi azonosítója.
- PROTO= A használt protokollt jelzi. Pl. TCP, UDP, stb.
- SPT= A csomag feladójának a portja (Source Port)
- DPT= A csomag céljának a portja (Destination Port)
A Linux naplózási rendszereinek köszönhetően az UFW tűzfal napló adatai még megtalálhatók más naplófájlokban is, például:
syslog:
grep -i ufw /var/log/syslog | tail -30
messages:
grep -i ufw /var/log/messages | tail -30
kern.log:
grep -i ufw /var/log/kern.log | tail -30
Naplófájlok forgatása
Korábban már készítettem egy leírást, amiben a naplófájlok forgatását tanulmányoztuk, így itt is érdemes rátérni erre a kérdésre.
Az UFW alapból beállítja a naplófájljának a forgatását a logrotate rendszerben, de azért célszerű ellenőrizni, mert nagy naplófájlokat is generálhat az UFW tűzfal, amennyiben nagyobb hálózati forgalmunk van. Ezt a /etc/logrotate.d/ könyvtárban nézhetjük meg:
cd /etc/logrotate.d/
Ha itt találunk egy "ufw" nevű fájlt akkor rendben is vagyunk. Tekintsünk bele:
cat ufw
/var/log/ufw.log { rotate 4 weekly missingok notifempty compress delaycompress sharedscripts postrotate invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true endscript }
Ha ebben ilyesmit találunk, akkor nincs további teendőnk a naplófájl forgatásával kapcsolatban, tehát nyugodtak lehetünk, hogy nem fogja teleszemetelni a merevlemezünket az UFW tűzfal naplózási rendszere.
Ha viszont mégsem találkoznánk ezzel a fájlal, és nagyobb méretű az UFW naplófájlunk, ami napokon át csak hízik, akkor tanulmányozzuk át a fentebbi naplófájlok forgatása című leírást, és készítsük el az alapján a ufw logrotate fájlunkat, vagy akár ennek a tartalmával is létrehozhatjuk.
Grafikus felület
Az UFW tűzfalhoz létezik egy grafikus frontend is, ami a grafikus asztalkörnyezetet használók számára kínál kényelmesebb beállítófelületet.
Ebben a részben nem célom a teljeskörű bemutatása a grafikus programnak, hanem inkább csak érintőlegesen foglalkozunk vele, amolyan áttekintésként, hogy láthassuk, hogy van egy ilyen is.
Telepítés és indítás
A grafikus program használatához telepíteni kell a gufw csomagot, természetesen itt is root-ként folytassunk mindent:
apt-get install gufw
Ezt a grafikus felületes részt a korábban elkészített Debian 11 (Bullseye) telepítésen fogom elvégezni.
Ha feltelepült a csomag, indítsuk el a programot a gufw paranccsal, vagy a már menübe is bekerül parancsikonjával.
Ha a menüből indítjuk sima felhasználóként, még bekéri a jelszót, majd megnyílik a program kis ablaka:
Itt már nem merülünk el a részletekben, csak kicsit körülnézünk a menükben. Előtte érdemes kicsit átméretezni az ablakát, hogy kényelmesen elférjen rajta minden:
A program különböző profilokat is kezel, ami nem összetévesztendő a már korábban említett alkalmazásprofilokkal, hanem ezek amolyan kényelmi szolgáltatást nyújtanak inkább. Segítségükkel készíthetünk otthoni, nyilvános és munkahelyi profilokat. Természetesen hozhatunk létre újabbakat is.
Menük
A felső menüben elérhető pár funkció:
Fájl:
Itt tudjuk az imént említett profilokat importálni vagy exportálni. Így például kényelmesen át tudjuk vinni másik gufw-vel rendelkező Linux rendszerre is a beállításainkat.
Szerkesztés:
Itt vannak a beállítások, amire kattintva bejön egy újabb kis panel:
Itt a már korábbról ismert funkciókat tudjuk állítgatni, mint például a naplózás, frissítési időköz és a profilok kezelése.
Állapot
A menü alatt az ablak felső részén az állapottal kapcsolatos részek vannak. Itt lehet kiválasztani a profilt, be/kikapcsolni a tűzfalat, beállítani az alapértelmezett bejövő, illetve kimenő házirendeket (engedélyezés / tiltás / elutasítás):
Középső menü fülek
Az állapot rész alatt találunk még egy menü fül sort, ami 4 elemből áll: kezdőoldal (kis házikó ikon), szabályok, jelentések, napló.
Kezdőoldal
Itt találunk egy rövid súgószerű részt, amit legörgetve elolvashatunk:
Szabályok
Ezen az oldalon a szabályok listáját találhatjuk. Itt most előbb parancssorban állítottam be egy tűzfalszabályt, ami megjelenik a listában, hasonlóan a parancssorhoz:
Itt ha rámegyünk egy tételre, majd rákattintunk a lista alatt lévő kis fogaskerék ikonra, akkor bejön a beállítóablaka:
Amint láthatjuk, nem módosíthatunk olyan szabályokat, amiket a parancssorból állítottunk be. Tehát külön kezeli őket a program. Egyébként a parancssorban bekövetkezett változtatások csak a grafikus program újraindítása után frissülnek az ablakban.
Ha pedig ebben a programban akarunk szabályt beállítani, akkor kattintsunk az alsó + jelre. Ekkor előjön egy 3 fülből álló kis ablak, ahol háromféleképpen tudunk szabályokat beállítani:
Előre beállított:
Itt a parancssori alkalmazáslistához hasonlóan egy nagy, kategorizált listából tudunk választani előre beállított alkalmazás profilok között, amik között ott vannak a parancssorban is kilistázható tételek is, de azoknál itt sokkal több egyéb is van. Például különböző játékokhoz is vannak benne profilok, stb.
Egyszerű:
Itt ahogy látható, egy egyszerű kis űrlappal lehet kézzel beállítani a szabályt. Név, házirend, irány, protokoll, port.
Haladó:
Itt pedig egy részletesebb beállításokat kínáló panelt kapunk, ahol sokkal több dolgot is beállíthatunk:
Jelentések
Itt egy listát láthatunk a szabályok típusairól, és a "+" jel segítségével gyorsan létrehozhatunk ezek alapján újabbakat.
Napló
Itt pedig a naplót láthatjuk:
A halvány szürke sorok a korábbi naplóbejegyzések, míg a tetején lévő sötétebbek pedig a grafikus program megnyitása óta keletkezett bejegyzések.
Konklúzió
Az UFW egy egyszerűen kezelhető kis tűzfal program, amely a háttérben az iptables tűzfalat állítgatja. Persze az itt bemutatott dolgoknál többet tud, de ebben a leírásban az alapvető beállítások bemutatása volt a cél. Használja mindenki bátran, az egyszerű kezelhetősége mellett megtartva a számítógépünk vagy szerverünk biztonságát is.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 1402 megtekintés