Tűzfal beállítása Linux szerveren az IPtables segítségével, 1. rész

Ebben a cikkben bemutatom a linux tűzfalának alapszintű beállítását. Ezek a beállítások szerverekre érvényesek, asztali gépekre egy kicsit más szabályokat kell megfogalmazni.

Linux tűzfalát NETFILTER-nek hívják, bár a köznapi nyelven az iptables megnevezés az elterjedt a beállítást végző parancs neve után.

FONTOS! A tűzfalat az elején mindenképp csak olyan gépen állítsuk, amely  tőlünk nincs távolabb, mint 10 méter. Elég kellemetlen lenne egy 200-300km-re lévő gépről kizárni magunkat.

Kezdésként nézzük meg vannak e már szabályok beállítva a tűzfalunkba:
iptables –L

Ha az alábbi sorokat kapjuk akkor nincs még szabály beállítva, és a minden kapcsolatot engedélyez
(Ekkor mindenképp érdemes foglalkoznunk a beállításával)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Nézzük meg kicsit közelebbről, hogy mit is jelentenek ezek a sorok:

Chain INPUT (policy ACCEPT): Ez az INPUT lánc, azaz az itt megadott szabályok fogják befolyásolni a beérkező kapcsolatokat.
A zárójelben lévő rész, az alapértelmezett szabályt jelenti. Jelen esetben ez ACCEPT, ami szerint az összes bejövő kapcsolatot engedélyezzük alapértelmezettként.

Chain FORWARD (policy ACCEPT): Ez hasonló mint az INPUT lánc, csak ez a gépünkön átmenő forgalom szabályozására szolgál.

Chain OUTPUT (policy ACCEPT): Ez a lánc pedig a kimenő forgalmat szabályozza.

Látható hogy az iptables, láncokat használ, melyekbe létrehozhatjuk a szabályainkat.

Például egy bejövő webes kérésre az INPUT láncban lévő szabályokat végignézi, és ha illeszkedik e valamelyikre akkor végrehajtja az adott szabályt. (elfogadjuk az adott kérést vagy tiltjuk, esetleg továbbítjuk).

A tűzfalszabályokat én egy scriptbe szoktam megírni, az egyszerűbb és gyorsabb kezelhetőség miatt.

Hozzunk létre például egy iptables_rules.sh nevű fájlt a root könyvtárunkban:
nano /root/iptables_rules.sh

Tehát shell scriptet írunk ezért a fájl első sorába az alábbit írjuk:
#!/bin/bash

Ezzel jelezzük a shell értelmezőnek, hogy ez egy bash script lesz.

Első lépésként töröljük a már beállított szabályokat:
iptables -F

Majd töröljük a most már üres láncokat:
iptables -X

Töröljük a láncokat? Igen, ugyanis van lehetőség létrehozni saját láncot, az alapértelmezett INPUT,OUTPUT,FORWARD-ON kívül is.
Erről most ebben a cikkben nem ejtek több szót.

Legelső tényleges szabályként engedélyezzünk minden forgalmat a saját gépünkön belül:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

Értelmezzük a fenti sorokat:
-A kapcsoló: Az angol Append kezdőbetűjét takarja, ami hozzá fűzést jelent, tehát a következő szabályt hozzá fűzzük a lánchoz, az előző szabályaink után. ( Jelenleg még üres a láncunk).

Itt hívnám fel arra a figyelmet, hogy a szabályok sorrendjének fontos jelentősége van.
A szabályokat hozzáadásuk sorrendjében értelmezi a program.
Tehát ha egy adott kérést előbb tiltunk aztán engedélyezünk, annak tiltás lesz az eredménye.
Megtalálja tiltásra vonatkozó  szabályt arra illeszkedik a bejövő kérés, így az engedélyezés szabályt már nem is fogja vizsgálni.

Nézzük tovább a fenti sor értelmezését:
INPUT: Erről már volt szó, ez jelenti hogy a bejövő kérésekre vonatkozik ez a szabály.

-i: Ez a kapcsoló azt mondja meg hogy melyik hálózati interfészre ( hálózati kártyára) vonatkozik a szabály. Jelen esetben ez lo, azaz a loopback rövidítése. Ez helyi virtuális kártyának fogható fel, ez minden (linux) rendszerben van.

-j: Az angol jump szó kezdőbetűje: Ezzel határozzuk meg hogy mi történjen az adott szabályra illeszkedő csomaggal. Estünkben ACCEPT, azaz fogadjuk el.
Lehet még DROP, ekkor eldobjuk a csomagot, azaz egy tiltást csinálunk, vagy RETURN, ezzel egy általunk létrehozott láncba tudjuk tovább adni.
Illetve lehet még QUEUE, ezzel ebben a cikkben nem foglalkozunk.

Fontos megjegyeznem, hogy a kapcsolók két módon is megadhatók.
A fent említett két sorban a rövid verziót használtuk pl –j vagy –i.
Viszont használható ezek helyett a – – jump is vagy a – – in-interface.
Ebben az esetben a kapcsolók előtt dupla kötőjelet kell tennünk szóköz nélkül.

A következő három sor segítségével beállítjuk, hogy az alapértelmezett szabály a tiltás legyen:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

Tehát az olyan csomagokra,kérésekre, melyre nem írunk elfogadó szabályt ez fog érvényesülni, így tiltva lesznek.
Erre a három sorra igazából nem is lenne szükség, mert mint ahogy majd látni fogjuk, a script végén minden további csomagot elfogunk dobni amelyet nem engedélyeztünk.
Viszont szerintem jobb kétszer tiltani a nem kívánt forgalmat, mint egyszer sem .

Ezzel végeztünk is a kezdeti „beállításokkal”.
A következő részben már a valós hálózati forgalmat is szűrni fogjuk.

Ahonnan ez a cikk származik és ahol még több hasonló témájú cikket találsz: http://blog.mtommy.info

Hozzászólás beküldése

| Download Free Ringtones for Verizon Online. | Thanks to Highest CD Rates, Ally Bank Rates and Binaural & Isochronic Beats