A képet készítette ezioman.
Az iptables-ről
Az iptables egy parancssori tűzfal segédprogram, amely a forgalomból engedélyezi vagy letiltja a szakpolitikai láncokat. Ha egy kapcsolat megpróbál bebizonyítani magát a rendszereden, az iptables egy olyan szabályt keres a listán, amely megfelel a rendszernek. Ha nem találja meg, akkor az alapértelmezett műveletet választja.
Az iptables szinte mindig előtelepítve van bármely Linux disztribúcióban. Frissítéséhez / telepítéséhez csak töltse le az iptables csomagot:
sudo apt-get install iptables
Vannak GUI alternatívák az iptables, mint a Firestarter, de iptables nem igazán olyan nehéz, ha van néhány parancsot lefelé. Nagyon óvatosnak kell lenned az iptables szabályainak beállításakor, különösen akkor, ha SSH'd van a kiszolgálón, mert egy rossz parancs véglegesen kizárhatja, amíg kézzel nem rögzül a fizikai gépen.
Lánc típusok
Az iptables három különböző láncot használ: input, forward és output.
Bemenet - Ez a lánc a bejövő kapcsolatok viselkedésének szabályozására szolgál. Ha például egy felhasználó megpróbál az SSH-t a számítógéped / kiszolgálón, akkor az iptables megkísérelni fogja az IP-címet és a portot egy bemeneti láncban lévő szabályhoz.
Előre - Ezt a láncot olyan bejövő kapcsolatokra használják, amelyeket nem helyileg szállítanak. Gondolj egy útválasztóra - az adatokat mindig elküldjük, de ritkán valóban a routerre szánják; az adatokat csak továbbítjuk a cél felé. Hacsak nem csinál valamiféle útválasztást, NATing-et vagy valami mást a rendszereden, amely továbbítást igényel, akkor nem fogja használni ezt a láncot.
Van egy biztos módszer arra, hogy ellenőrizze, hogy a rendszernek szüksége van-e a futóláncra.
iptables -L -v
kibocsátás - Ez a lánc használható a kimenő kapcsolatokhoz. Például ha megpróbálsz pinget keresni a howtogeek.com-ra, az iptables ellenőrizni fogja a kimeneti láncát, hogy megnézze, hogy a szabályok milyenek a ping és a howtogeek.com vonatkozásában, mielőtt eldöntené a kapcsolódási kísérlet engedélyezését vagy megtagadását.
A figyelmeztetés
Annak ellenére, hogy egy külső gazdaszervezet pingálása olyan jelenségnek tűnik, amely csak a kimeneti láncon keresztül kell haladnia, ne feledje, hogy az adatok visszaadásához a beviteli láncot is használni fogják. Ha az iptables-t a rendszer leállítására használja, ne feledje, hogy sok protokollt igényel kétirányú kommunikáció, ezért mind a bemeneti, mind a kimeneti láncokat megfelelően kell konfigurálni. Az SSH egy közös protokoll, amelyet az emberek elfelejtenek engedélyezni mindkét láncon.
A házirend-alapértelmezett viselkedés
Mielőtt megkezdené és beállítaná a konkrét szabályokat, eldöntheti, hogy mit kíván a három lánc alapértelmezett viselkedéséről. Más szóval, mit szeretne az iptables, ha a kapcsolat nem felel meg a meglévő szabályoknak?
Ha meg szeretné tudni, hogy az Ön szakpolitikai láncainak jelenleg nincs-e páratlan forgalom, akkor futtassa a
iptables -L
parancs.
Több alkalommal, mint amennyit nem, a rendszer alapértelmezés szerint elfogadja a kapcsolatokat. Ha korábban nem módosította a házirend-szabályokat, akkor ezt a beállítást már be kell állítani. Akárhogy is, itt az alapértelmezett kapcsolatok elfogadásának parancsa:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
Ha elfogadja az elfogadási szabályt, akkor az iptables használatával megtagadhatja az egyes IP-címeket vagy portszámokat, miközben továbbra is elfogadja az összes többi kapcsolatot. Egy perc alatt eljutunk a parancsokhoz.
Ha inkább megtagadná az összes kapcsolatot, és kézzel adja meg, melyeket szeretné engedélyezni a kapcsolat létrehozásához, módosítania kell a láncok alapértelmezett házirendjét. Ehhez valószínűleg csak olyan kiszolgálókra lesz szükség, amelyek érzékeny adatokat tartalmaznak, és csakis ugyanazokkal az IP-címekkel rendelkeznek.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Csatlakozás-specifikus válaszok
Az alapértelmezett láncszabályzókkal konfigurálva szabályokat adhat hozzá az iptables-hez, így tudja, mit kell csinálni, amikor egy adott IP-címről vagy portról érkezik kapcsolat. Ebben a kézikönyvben a három legegyszerűbb és leggyakrabban használt "válasz" felett fogunk haladni.
Elfogad - Engedélyezze a kapcsolatot.
Csepp - Csukja le a kapcsolatot, úgy viselkedik, mintha soha nem történt volna meg. Ez a legjobb, ha nem szeretné, hogy a forrás észlelje a rendszer létezését.
Elutasít - Ne engedélyezze a kapcsolatot, de hibát küld vissza. Ez a legjobb, ha nem szeretné, hogy egy adott forrás csatlakozzon a rendszeréhez, de azt szeretné, hogy tudják, hogy a tűzfal blokkolta őket.
A legjobb módja annak, hogy megmutassuk a különbséget a három szabály között, megmutatjuk, hogy milyennek tűnik, ha egy PC megpróbál pingelni egy linuxos gépet mindegyik beállítással konfigurált iptables-kal.
A kapcsolat engedélyezése:
Speciális kapcsolatok engedélyezése vagy blokkolása
Az általuk létrehozott irányelvláncok konfigurálva most beállíthatja az iptables-ot, hogy engedélyezzék vagy blokkolják bizonyos címeket, címtartományokat és portokat. Ezekben a példákban beállítjuk a kapcsolatokat
DROP
de átkapcsolhatja azokat
ACCEPT
vagy
REJECT
az igényektől és a szakpolitikai láncok konfigurálásától függően.
Megjegyzés: Ezekben a példákban fogjuk használni
iptables -A
hogy a meglévő láncra szabályokat csatoljon. Az iptables a lista tetején kezdõdik, és minden szabályon átmegy, amíg megtalálja, hogy megfelel. Ha egy szabályt fel kell helyezni egy másikra, használhatja
iptables -I [chain] [number]
hogy megadja a listán szereplő számot.
Kapcsolatok egyetlen IP-címmel
Ez a példa azt mutatja be, hogyan tilthatja le az összes IP.10.10.10.10 IP címet.
iptables -A INPUT -s 10.10.10.10 -j DROP
Kapcsolatok IP-címekből
Ez a példa azt mutatja be, hogyan blokkolja az összes IP-címet a 10.10.10.0/24 hálózati tartományban. Az IP-címek tartományának megadásához hálózati maszkot vagy szabványos perjel-jelölést használhat.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
vagy
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Kapcsolatok egy adott porthoz
Ez a példa azt mutatja be, hogyan lehet blokkolni az SSH kapcsolatokat a 10.10.10.10-ből.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
Az "ssh" helyett bármilyen protokollal vagy portszámmal helyettesíthető. A
-p tcp
a kód egy része azt mondja az iptables számára, hogy milyen protokollt használ. Ha olyan protokollt blokkol, amely nem TCP-t használ, akkor
-p udp
helyett.
Ez a példa azt mutatja, hogyan lehet blokkolni az SSH kapcsolatokat bármely IP-címről.
iptables -A INPUT -p tcp --dport ssh -j DROP
Kapcsolatállamok
Mint korábban említettük, sok protokoll fog követelni a kétirányú kommunikációt. Például, ha engedélyezni szeretné az SSH-kapcsolatokat a rendszerhez, a bemeneti és a kimeneti láncoknak hozzá kell adniuk egy szabályt. De mi van akkor, ha csak azt szeretné, hogy az SSH bejusson a rendszerbe, hogy engedélyezett legyen? Nem ad hozzá szabályt a kimeneti lánchoz, és lehetővé teszi a kimenő SSH-kísérleteket is?
Itt csatlakoznak a csatlakozási állapotok, amelyek lehetővé teszik a kétirányú kommunikáció engedélyezését, de csak egyirányú kapcsolatokat lehet létrehozni. Nézzétek meg ezt a példát, ahol az 10.10.10.10-től kezdődő SSH-kapcsolatok megengedettek, de az SSH-kapcsolatok a 10.10.10.10-hez nem. A rendszernek azonban lehetővé kell tennie, hogy az SSH-n keresztül továbbítsa az információkat, amíg a munkamenet már létrejött, ami lehetővé teszi az SSH kommunikációt a két gép között.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT
Változások mentése
Az iptables szabályaira végrehajtott változtatásokat a következő alkalommal törlik, amikor az iptables szolgáltatás újraindul, hacsak nem hajt végre parancsot a módosítások mentésére. Ez a parancs a megosztástól függően eltérő lehet:
Ubuntu:
sudo /sbin/iptables-save
Red Hat / CentOS:
/sbin/service iptables save
Vagy
/etc/init.d/iptables save
Egyéb parancsok
Sorolja fel a jelenleg konfigurált iptables szabályokat:
iptables -L
A
-v
opció csomag- és bájtinformációt ad, és hozzáad
-n
felsorol mindent numerikusan. Más szavakkal - a hosztnevek, protokollok és hálózatok sorszámozva szerepelnek.
Az összes jelenleg beállított szabály törléséhez kiadhatja a flush parancsot.
iptables -F