Mi is ez?
A GUFW a Gui for Uncomplicated FireWall rövidítése, azaz grafikus felület az egyszerű tűzfalhoz.
Ebből már sejthető, hogy a tűzfal (UFW) egy karakteres program, amit terminál parancsokkal lehet konfigurálni, ehhez viszont van grafikus felület, ami az Ubuntuban jelent meg, így tartalmazza a Mint is, de persze, elérhető egyéb disztribúciók számára is, pl. Debian, Arch Linux, ill. amelyekben elérhető a Python / GTK és UFW. Jelenleg is az Ubuntu gondozásában van, és mi tagadás, a magyar nyelvi fordítás, hát nagyon régóta olyan állapotban van, ahogy ma is látni.
(Én bizony nekiveselkedtem, hogy majd lefordítom, na de az a helyzet, hogy akárki nem foglalkozhat ezzel, a Canonical / Ubuntu szabályzattal korlátozza. Jelentkezni / regisztrálni kell, és csak a tűzfal fordítására nem lehet, hanem más feladatokat is el kell látni, meg prioritások vannak, és hát én annyira nem bírok további kötelezettségeket vállalni, hogy nem láttam reális esélyt erre a dologra.)
Szükség van rá?
Ubuntu / Mint alatt alapesetben nem, mivel ezekben eleve zártak a portok a bejövő forgalom elől. Nem alapeset az, ha gépünkön szerver alkalmazást futtatunk, és gondoskodni szeretnénk a forgalom korlátozásról / védelemről. Szerver alkalmazás a fájl / nyomtató megosztás, a távoli hozzáférés, a torrent kiszolgálás (lehetővé akarjuk tenni, hogy távolról töltsenek a gépünkről), és persze az egyéb klasszikus szerver esetek – amik hétköznapi halandókat nem érintik, hadd ne soroljam ezeket. Amit viszont felsoroltam, az releváns lehet.
Mi az a tűzfal (számítástechnikában)?
A tűzfal a hálózati kommunikáció szabályozását lehetővé tevő eszköz, ami lehet hardveres – ezeket jellemzően szerverparkoknál, cégek használják, ez magán fogyasztók számára túl drága eszköz, illetve lehet szoftveres, amit kliens vagy szerver gépeken lehet futtatni, ebből van ingyenes vagy fizetős, egyszerűbb, vagy komplikáltabb.
A hálózati forgalom szabályozás lényege, hogy némi védelmet és rendet nyújtson a szabályozatlan / ellenőrizetlen forgalommal szemben. A tűzfal célja ennyi, nem helyettesíti a vírusvédelmet, vagy az egyéb védelmi rendszereket.
Az otthoni routeremben elvileg van tűzfal, az nem elég?
Hacsak nem valami különleges (méregdrága) cuccról van szó, // abból látni, hogy a router tűzfalat max. ki/be lehet kapcsolni, néhány, pl. 10-12 bejegyzéssel bizonyos weboldalak elérését lehet tiltani, esetleg időkorlátokat konfigurálni//, ez nem igazán nevezhető valódi tűzfalnak. Az otthoni routereknek van NAT szolgáltatása, amit szintén előszeretettel neveznek tűzfalnak a gyártók, amiben annyi igazság van, hogy NAT-nak van egy ilyen jellegű jótékony mellékhatása, azonban sok nagy webes cég (aka nagy testvér) , vagy kis huncut rosszalkodó kitalálta, hogy ezt miként lehet ügyesen megkerülni saját céljuk megvalósítása érdekében. Ezek a router megoldások ma már nem nyújtanak védelmet, illetve soha nem is nyújtottak védelmet a gépre „véletlenül” rákerült sunyi módon kommunikáló programok ellen.
Mi az a protokoll?
Nagyon röviden a számítógépes kommunikációs megoldások gyűjtőneve. Pl. TCP/IP -az Internet által használt protokoll (Ebbe bele lehet ágyazni egyéb protokollokat, pl. HTTP; HTTPS, SMTP, P2P, stb.) Gyakrabban előforduló protokollok házi környezetben: TCP, UDP, NTP…
Mi az a port?
Jelen értelemben a kommunikációs folyam csatornájának a jelölése. A gépen egyszerre több kommunikáció is folyhat, pl. WWW böngészés, E-mail, torrent, hálózati nyomtatás, stb. Ahhoz, hogy ezek adatai ne keveredjenek össze, az egyes programok kommunikációi külön virtuális csatornákon folynak, amiket számmal jelölnek, ennek port a neve. Van de facto szabály szerinti besorolása is portoknak, pl. a 80-as port a HTTP-é, a 25-ös az SMPT-é (E-mail), a 21-es az FTP-é. Ezek a besorolások a 0-1023-ig terjednek, amik szabály szerint kötöttek, de nincs szigorú megoldás arra, hogy más program / szolgáltatás ne használja saját céljaira akármelyik portot. A legmagasabb port szám jelenleg 65535.
Portok listája bővebben: https://hu.wikipedia.org/wiki/TCP_%C3%A9s_UDP_portsz%C3%A1mok_list%C3%A1ja
Miért érdekesek ezek a jelen kontextusban?
Nos, azért, mert a tűzfal szoftverrel szabályozhatjuk azt, hogy mely portokat, mely protokollokkal milyen irányban (kimenő / bejövő) mely programok / szolgáltatások használhatják vagy nem használhatják egyáltalán.
No, akkor csapjunk a lecsóba!
Nézzük, milyen szerver szolgáltatások futnak a gépünkön? Nyissunk egy terminál ablakot, és írjuk be ezt a parancsot:
sudo netstat -tulp
Valami ilyesmi listát kapunk (húzzuk szélesre a terminál ablakot, hogy rendezettebb legyen a lista):
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 localhost:domain 0.0.0.0:* LISTEN 1014/systemd-resolv tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN 1027/cupsd tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN 1027/cupsd udp 0 0 localhost:domain 0.0.0.0:* 1014/systemd-resolv udp 0 0 0.0.0.0:bootpc 0.0.0.0:* 1192/dhclient udp 0 0 0.0.0.0:ipp 0.0.0.0:* 1093/cups-browsed udp 0 0 0.0.0.0:mdns 0.0.0.0:* 1059/avahi-daemon: udp 0 0 0.0.0.0:56217 0.0.0.0:* 1059/avahi-daemon: udp6 0 0 [::]:50152 [::]:* 1059/avahi-daemon: udp6 0 0 [::]:mdns [::]:* 1059/avahi-daemon:
oszlopok magyarázata:
Proto = protokoll
Recv-Q = bejövő puffer (átmeneti tár) mérete
Send-Q = kimenő puffer (átmeneti tár) mérete
Local Address = helyi cím
Foreign Address = távoli cím
State = állapot
PID/Program name = a program azonosítója / neve
A címek értelmezése a fenti listán: Az IPv4 cím számokból áll, melyek pontokkal vannak elválasztva, és ha egy kettőspont van a vége felé, az utána következő szám a port száma. Az IPv6 címek is számokból állnak, de mivel ezek hexadecimális számok, kinézetük olyan, mintha betűk is lennének benne (a fenti listán nincs ilyen cím). Az IPv6 címekben a számok kettős ponttal vannak elválasztva, és hogy ez ne okozzon zavart, mármint, hogy felismerhető legyen, hol van vége, és melyik kettőspont után jön a port száma, az IPv6 cím szögletes zárójelek között van. A záró szögletes zárójel után álló kettőspontot a port száma követi.
A fenti listán a fix címeknél / portoknál a címek /portok nevei vannak feltüntetve, pl. a localhost:domain cím szám szerint a 127.0.0.1:135, vagy a localhost:ipp szám szerint a 127.0.0.1:631 lenne.
-kis helyi (localhost) cím magyarázat: az IP címeket mindenki ismeri, de kevesen gondolnak úgy rá, hogy nem csak azonosítanak, hanem aktívak is, lehet velük „beszélgetni”. Ha megfelelően „megszólítunk „egy címet, akkor az „elmeséli”, hogy mi van, mit tud, meg úgy egyáltalán. Pl. beírjuk a böngésző címsorába a 92.119.121.124 címet, a böngésző egyeztet a címmel, megbeszélik a dolgokat, és megkapjuk tálalva, ami ezen a címen van. Vannak spéci címek, amik 127-el kezdőnek, ezek mind a helyi gépen azonosítanak valamit. A 127.0.0.1 pl. a saját gépet- ezeket a címeket a programok használják elvileg, ezeken keresztül kommunikálnak a rendszerrel. Azaz,vannak olyan programok, amik szervereként futnak a helyi gépen, pl. amik a böngészőt használják felületnek, pl. a Ventoy is ilyen grafikus felületet használt valamikor Linux alatt, de ilyenek lehetnek különböző media szolgáltató programok, a videót osztják a hálózaton, a helyi gépen pedig a böngészőben egy localhost címet megnyitva tudjuk azt követni)
Lépjünk tovább. Mik azok a listában felsorolt programok?
system-resolv = rendszer (név)feloldó, ez a helyi DNS szolgáltató (DNS = Domain Name Service), feladata a címek és és URL nevek közti megfeleltetés.
cupsd / cupsd-browsed= nyomtató (hálózati) kiszolgáló (ha van nyomtatónk, akkor minden bizonnyal látni ezt is, de amúgy nem).
dhclient = hálózati modul, egyes disztribúciókban ennek a neve Network-manager, ez felel az UPnP szolgáltatásokért.
avahi-daemon = hálózati felderítő, ez felel többek között az automatikus hálózat konfigurációjáért, DNS feladatokat is ellát.
Most nyissuk meg a GUFW-t (Mint alatt Beállítások→ Tűzfalbeállítás menüpont)
Ez (ehhez hasonló) a kép fogad minket:
Fussunk végig a kezdőképernyőn. A [Fájl] menüpont alatt exportálni tudjuk a beállításokat, ill. ugyanitt található a mentett beállítások visszatöltési lehetősége is. A [Szerkesztés] menüpont alatt tudjuk alaphelyzetbe állítani a tűzfal beállításokat, illetve itt tudunk engedélyezni bizonyos dolgokat, pl. a naplózási szintet, vagy megerősítést kérő üzenetek megjelenítést pl. törlés esetére. [Súgó] – itt tudunk a tűzfallal kapcsolatos információkat böngészni több felületen is.
A menüsor alatt a felületen levő gombok funkciói:
Profil – itt alapból 3 -féle profil között tudunk választani, Otthoni, Nyilvános, és Munkahelyi.
A profil választó alatti kapcsolóval tudjuk ki-be kapcsolni a tűzfalat / profilt. Pontosabban az adott profil állapotát, tekintve hogy, a GUFW a profilokhoz menti az állapotot, ha adott profilnál kikapcsoljuk, míg másiknál be a tűzfalat, akkor az első profilt választva kikapcsol, második profilt választva bekapcsol a tűzfal. A profil választót lenyitva hozzáadhatunk újabb profilokat, ez hasznos, ha pl. hordozható gépünk van, akkor a többféle hálózati csatlakozásokhoz többféle profilokat képezhetünk eltérő szabályokkal.
Ha kiválasztunk egy profilt, akkor az alatta levő beállítások a hozzájuk igazított értékeket mutatják, az előttük álló gombokkal tudjuk ezeket megváltoztatni.
Az Otthoni profil alatt az alap beállítások: Bejövő = Tiltás; Kimenő = Engedélyezés.
A Nyilvános profil alatt az alap beállítások: Bejövő = Elutasítás; Kimenő = Engedélyezés.
A Munkahelyi profil alatt az alap beállítások: Bejövő = Tiltás; Kimenő = Engedélyezés.
A tiltás és elutasítás között annyi a különbség, hogy utóbb esetben a külső fél értesítve lesz az elutasítás tényéről, míg előbbi (tiltás) esetén nem.
Szemfülesek talán észrevették, hogy hogy a képen van egy plusz gomb alul, ami náluk nem jelenik meg, aminek felirata „Routed”. Igazából ezt akkor jeleníti meg a GUFW, ha annak beállító fájlját szerkesztve engedélyezzük. Gyakorlati haszna akkor van, ha szerverként üzemeltetjük a gépet, több hálózati kártyával, és routolási / proxi feladatokat is ellát a gép. (Több hálózati kártya úgy is lehet, ha van egy vezetékes hálózati kártyánk, egy WiFi kártyánk, vagy netalántán Bluetooth kapcsolatunk, amit hálózati módban használunk. (Igen, a Bluetooth segítségével felépíthető alhálózat is). Ezek alkalmazási területe túlmutat eme blog határain, nem fogok vele többet foglalkozni, csak annyit akartam megmutatni, hogy a GUFW ilyent is tud, de mivel igen ritkán akad házi környezetben ilyen üzemmódú használat, ezért ez alapból nincs engedélyezve.
A Home, Rules, Report, Napló gombok funkciói
A Home gombbal (egy házikó ikon jelzi) az alap felületet jeleníthetjük meg, ez az, ami a fenti képen is látható, illetve alapból is ez a felület jeleneik meg induláskor.
A Rules gombot megnyomva az alábbi képen látható, a szabályok ablaka tárul elénk. Jelenleg nincsenek szabályok, ezért az ablak üres.
A Report gombra nyomva megjelenik az alábbi felület, ahol már kezd izgalmasabbá válni a dolog:
Nocsak, nem ismerősek ezek a bejegyzések? De hát ezek azok, amiket előbb a sudo netstat -tulp parancsnál is láttunk! Vizsgáljuk meg egy kicsit a képernyőt: alul van egy két függőleges vonással jelzett PAUSE gomb, meg utána egy + gomb. A PAUSE gomb megnyomása azt eredményezi, hogy az éppen kijelölt sor (a képen a dhclient) figyelését kizárjuk, azaz a listából eltűnik a sor. Ha a + gombot megnyomjuk, akkor azzal tudunk egy szabályt felvinni, ami az aktuálisan kijelölt sorra vonatkozik. Nyomjuk meg a gombot, feljön egy ilyen ablak, ami az alábbi képen látható:
Vegyük sorra, mit látunk itt:
Name: - itt megváltoztathatjuk a program nevét. Mármint, azt a nevet, amivel a tűzfal azonosítja a programot. Néha szükség van ilyen műveletre, hogy jobban követhető legyen az egész. (A blogot majd folytatni fogom, a második részben kitérünk ilyen esetekre is.)
Beszúrás: Itt egy szabálynak adhatunk egy sorszámot. (A szabályok logikailag egymásra épülnek, azaz több szabályt konfigurálhatunk, és sorszámmal szabályozhatjuk a sorrendjüket)
Házirend: A szabály jellege, azaz Tiltás / Engedélyezés
Irány: Itt lehet megadni, hogy ez a bejövő, vagy kimenő, netán mindkettő irányú forgalomra vonatkozik
Csatoló: Nos, itt már bonyolódik. A lényege, hogy azt is meg lehet adni, hogy ez melyik hálózati kártyára vonatkozik. Pl. van egy laptopunk, annak van vezetékes csatolója, meg Wifije is. Be tudjuk állítani, hogy a szabály csak Wifi csatlakozás esetén legyen érvényes. Annyit kell tudni, hogy a hálózati kártyáknak neve van, a vezetékes csatoló neve e betűvel kezdődik, pl. enp1s0, a Wifi meg w betűvel, pl. wlp2s0. Az All interfaces minden kártyára vonatkozik.
Napló: Itt beállíthatjuk, hogy a naplózással mi legyen, ha tudjuk, ismerjük, hogy ezen a porton a program kommunikál, akkor felesleges ezzel is szaporítani az amúgy is terjedelmes naplót, így le lehet tiltani az erre vonatkozó naplózást (vagy engedélyezni, ha kell)
Protokoll: Itt három lehetőségünk van, UDP, TCP, vagy Mindkettő. Azaz, ha csak pl. UDP-t adunk meg, akkor csak erre a protokollra vonatkozik a szabály, TCP-re nem. (megjegyzés: ha mindkettőt beállítjuk itt, akkor tkp. két szabályunk lesz, az egyik UDP-re, a másik TCP-re vonatkozik)
Innen / Ide: azt is megadhatjuk, hogy csak konkrét IP címről és portról indulva, csak konkrét IP-re és portra címzett forgalomra vonatkozik a szabály.
Most egyelőre, ne változtassunk semmit, csak nyomjuk meg a Hozzáadás, majd a Bezárás gombot.
Mi történt? A fentebbi képen is látható Report listán a dhclient sora pirosra változott! Hűha, ez most mit jelenthet? Nos, a helyzet az, hogy kissé fura módon, a piros szín, ami általános felfogás szerint valami hibát, figyelmeztetést, tehát valami rosszat jelent, itt ez most azt jelenti, hogy a dhclient fut és kommunikál, és ez szabály szerint engedélyezve van.
Láthatjuk, a többi bejegyzés fekete. Ez (a fekete) azt jelenti, hogy fut, kommunikál, de nincs szabály létrehozva. Ez lenne a figyelmeztetés színe, a fekete azt jelenti, hogy tenni kellene valamit az ügyben, mert erre a kommunikációra nincs szabály.
Ha elkezdünk mindenféle szabályokat létrehozni, akkor idővel láthatunk további színeket is, ezek jelentése:
A kék azt jelenti, hogy a kapcsolat szabály szerint visszautasított.
A sárga azt jelenti, hogy a kapcsolat korlátozott.
Ha a további fekete bejegyzéseken végigmenve megnyomjuk a + gombot, akkor mindegyiknél feljön a fenti kép szerinti Tűzfalszabály hozzáadása ablak, ami a haladó fület mutatja. Tulajdonképpen itt előre ki vannak töltve azok a mezők, amik a kijelölt kapcsolatra vonatkoznak. Ha hozzáadtuk az összes szabályt, és visszalépünk a Rules oldalra, akkor láthatjuk, hogy az már mutatja a szabályainkat:
Itt a + gombbal tudunk teljesen új szabályt felvinni, a - gombbal el tudjuk távolítani a kijelölt szabályt, a fogaskerék gombra kattintva pedig szerkeszthetjük a kijelölt szabályt.
Végezettül vessünk egy pillantást a Napló gomb funkciójára. Ha megnyitjuk, itt olyan naplót láthatunk, ami azt mutatja, hogy mi történt konkrétan a GUFW-al. Pl szabályok módosítása. Ha a kapcsolatok forgalmi naplójára vagyunk kíváncsiak, akkor azt itt nem láthatjuk. Az ezzel kapcsolatos bejegyzések a rendszer naplóba kerülnek, a var/log/syslog.1 fájlba, a többi rendszerüzenettel együtt. A dmesg parancs is mutatja a fontos tűzfal üzeneteket, ha lekérdezzük.
A blognak van egy folytatása, ahol belemegyünk részletesebben is, hogy teljesen új szabályokat hogyan lehet létrehozni, egy konkrét torrent klienssel kapcsolatban.
Köszönöm a megtisztelő figyelmet!
Hozzászólások
Comment
Beküldte horvjoe -
Értékelés:
Szia,
Ez nagyon frankó lett. Be is linkelem az én blogomba.
ui.: Várom folytatást. :)
Multicast address
Beküldte kimarite -
Értékelés:
Nálam be van állítva ez a szabály:
A dmesg kimenet (korábban):
Magyarázat:
https://en.wikipedia.org/wiki/Multicast_address
( https://ubuntuforums.org/showthread.php?t=2195355 )
IP/PORTS FORWARD | Routed elem
Beküldte kimarite -
Értékelés:
Kíváncsi voltam, miért nem látszik a Routed elem alapból.
A megoldás: https://manpages.debian.org/testing/gufw/gufw.8.en.html
Nem kell megcsinálni - csak mutatom. A leírás nem tartalmazza, csak említi, és mást is érdekelheti.
Nagyon jó köszönjük szépen!
Beküldte kami911 -
Értékelés:
Nagyon jó köszönjük szépen!
Jó lett, köszi !
Beküldte Theorama62 -
Értékelés:
Várom a folytatást !