„EDU::GAMF::IPTABLES” változatai közötti eltérés

Innen: Farkas Attila Wiki
Ugrás a navigációhoz Ugrás a kereséshez
Nincs szerkesztési összefoglaló
Nincs szerkesztési összefoglaló
Címke: Visszaállítva
38. sor: 38. sor:
  apt install iptables
  apt install iptables
  apt install iproute2
  apt install iproute2
Az utóbbi (''iproute2'') csomagnak köszönhetően futtathatjuk a megszokott ''ip addr'' illetve ''ip link'' parancsokat.
Az utóbbi (''iproute2'') csomagnak köszönhetően futtathatjuk a megszokott __''ip addr''__ illetve __''ip link''__ parancsokat.
A telepítés után kiadhatjuk a ''iptables -L'' parancsot, aminek az eredménye egy üres tűzfal lesz, benne az alapértelmezett ''INPUT'', ''FORWARD'' és ''OUTPUT'' láncokkal.
A telepítés után kiadhatjuk a __''iptables -L''__ parancsot, aminek az eredménye egy üres tűzfal lesz, benne az alapértelmezett __''INPUT''__, __''FORWARD''__ és __''OUTPUT''__ láncokkal.

A lap 2023. augusztus 11., 09:39-kori változata

Az iptables általában alapból telepítve van Linux alapú operációs rendszereken. A legtöbb ember ennek ellenére igen ritkán találkozik vele, de sokszor a szakemberek is a ráépülő eszközöket használják, mint például az ufw és a firewalld. Utóbbiak rendelkeznek egy nagy előnnyel: az iptables utódjaként szolgáló nft-t is képesek kezelni, így nem kell más programot megtanulni a fejlődéshez.

Az iptables egy szabálylánc alapú tűzfalrendszer, amelyeket különböző táblákba rendeznek (az nft szintén láncokkal dolgozik, de az ufw és a firewalld ezekkel ellentétben zónákba rendezi a szabályokat. Ne feledjük el azonban, hogy minden ufw és firewalld programokkal felvett szabály végül az iptables/nft láncokba kerülnek be, amiből levonható az a következtetés, hogy az alapvetően szabályláncokkal operáló alkalmazásban is tudunk zóna szerű, átlátható struktúrát kialakítani). Vannak alapértelmezetten létező láncok, amelyeket le sem tudunk törölni: ezeket a netfilter kernelmodul hívja meg, amikor a csomag életútjának megadott fázisában jár. A láncok meghívási sorrendjét packetflow-nak nevezzük. Érdemes a tűzfal tervezésekor figyelembe venni, hogy minél hamarabb szabadulunk meg egy nem kívánt csomagtól, annál kevesebb CPU időt igényel. Az eldobás akcióval ellentétben az elfogadás sokkal körülményesebb: ezek a csomagok a létező összes alapértelmezett láncon át kell menjenek és elfogadásra kell kerüljenek (nagyon könnyen belátható, hogy ha egy láncban az adott csomagot tovább engedjük, akkor a csomag életútjának következő fázisában a netfilter meg fogja hívni a következő láncot, ahol egy eldobás művelet a feldolgozás megszakítását jelenti, tehát a csomag nem fog célba érkezni).

Témakörök:

  • Alapértelmezett -
    • táblák,
    • láncok
  • Packetflow
  • Szabályok létrehozása
  • Láncok létrehozása
  • Váltás a láncok között
  • "Zóna szerű", átlátható struktúra kialakítása

Fontosabb teendők

  • Érdemes áttekinteni a kézikönyvet! Ezáltal lesz fogalmunk arról, hogy milyen funkciók vannak és később könnyebben keresünk benne.
man iptables               # az iptables parancs kapcsolóit dokuemntálja
main iptables-extensions   # az iptables parancs -m kapcsolója után megadható kiterjesztéseket és kapcsolóit írja le
  • Érdemes megjegyezni, hogy hogyan tudjuk a szabályainkat kilistázni, menteni és visszaállítani.
iptables [-t table] --list # ez a hosszú formátum, de alapértelmezetten a filter tábla tartalmát listázza és használhatjuk a rövidebb, -L kapcsolót is a --list helyett.

iptables -L                # ez tehát a számunkra legfontosabb filter tábla tartalmát listázza ki

iptables-save              # ez a parancs minden szabályt kiír a képernyőre - ha menteni akarjuk, irányítsuk át egy fájlba!

iptables-restore           # ez a parancs visszaállítja a szabályrendszert a STANDARD INPUT-ról. Ha nem billentyűzettel szeretnénk beírni a szabályokat, akkor irányítsuk át egy korábbi mentésünket a bemenetre (< saved_rules)

Teszt környezet Mielőtt belekezdünk a próbálkozásba, érdemes megtekinteni a szabályokat, mik vannak befecskendezve. Könnyen lehet, hogy az internet elérésünk is megszűnik egy hibása létrehozott szabály miatt, így mindig érdemes magunknál tartani egy olyan mentést, amit visszaállítva minden megfelelően működik. Ezt megtehetjük az említett iptables-save és iptables-restore kiegészítők segítségével.

Sokkal szerencsésebb azonban, ha nem a saját gépünkön próbálkozunk, hanem egy virtuális gépben például. Így semmilyen változtatást nem hajtunk végre a mindennapokban használt rendszeren: ha a próbálkozások közepette elfáradunk, nem kell azzal időt tölteni, hogy mindent visszaállítsunk alapra, hanem csak bezárjuk a virtuális környezetet és nincs több teendő.

Manapság a docker környezetet sokan használják „sandbox” üzemmódban is. Természetesen az iptables program is feltelepíthető, csupán egy kisebb trükköt kell végrehajtanunk. Ennek előnye a virtuális környezethez képest, hogy gyengébb, KVM-mel nem rendelkező gépeken is kellő gyorsasággal fut. Ennek beüzemeléséhez a következő parancsokat kell lefuttatnunk a host számítógépen:

docker run -ti --cap-add=NET_ADMIN --cap-add=NET_RAW ubuntu bash

A képfájl (ubuntu) bátran cserélhető másra is, de ez a legelterjedtebb disztribúció, ezért ezt választottam. A következőket kell végrehajtanunk a konténeren belül:

apt update
apt install iptables
apt install iproute2

Az utóbbi (iproute2) csomagnak köszönhetően futtathatjuk a megszokott __ip addr__ illetve __ip link__ parancsokat. A telepítés után kiadhatjuk a __iptables -L__ parancsot, aminek az eredménye egy üres tűzfal lesz, benne az alapértelmezett __INPUT__, __FORWARD__ és __OUTPUT__ láncokkal.