A Beginner's Guide to iptables, a Linux tűzfal

Tartalomjegyzék:

A Beginner's Guide to iptables, a Linux tűzfal
A Beginner's Guide to iptables, a Linux tűzfal
Anonim
Az Iptables rendkívül rugalmas tűzfal-segédprogram, amelyet Linux operációs rendszerekhez fejlesztettek ki. Akár új Linux-geek vagy rendszergazda vagy, valószínűleg van valami módja annak, hogy az iptables nagyon hasznos lehet neked. Olvassa el, miközben megmutatjuk, hogyan konfigurálhatja a legrugalmasabb Linux tűzfalat.
Az Iptables rendkívül rugalmas tűzfal-segédprogram, amelyet Linux operációs rendszerekhez fejlesztettek ki. Akár új Linux-geek vagy rendszergazda vagy, valószínűleg van valami módja annak, hogy az iptables nagyon hasznos lehet neked. Olvassa el, miközben megmutatjuk, hogyan konfigurálhatja a legrugalmasabb Linux tűzfalat.

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

A fenti képernyőkép egy olyan szerverről szól, amely néhány hétig fut, és nincs korlátozva a bejövő vagy kimenő kapcsolatokra. Amint láthatja, a bemeneti lánc 11 GB csomagot dolgozott fel, és a kimeneti lánc 17 GB-ot feldolgozott. A forward lánc azonban nem volt szükség egyetlen csomag feldolgozására. Ez azért van, mert a kiszolgáló nem végez továbbítást vagy áthaladó eszközt használva.
A fenti képernyőkép egy olyan szerverről szól, amely néhány hétig fut, és nincs korlátozva a bejövő vagy kimenő kapcsolatokra. Amint láthatja, a bemeneti lánc 11 GB csomagot dolgozott fel, és a kimeneti lánc 17 GB-ot feldolgozott. A forward lánc azonban nem volt szükség egyetlen csomag feldolgozására. Ez azért van, mert a kiszolgáló nem végez továbbítást vagy áthaladó eszközt használva.

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.

Amint láthatja, a grep parancsot is használtam, hogy tisztább eredményt adjon nekünk. Ebben a képernyőképen a láncaink jelenleg forgalmat fogadnak el.
Amint láthatja, a grep parancsot is használtam, hogy tisztább eredményt adjon nekünk. Ebben a képernyőképen a láncaink jelenleg forgalmat fogadnak el.

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:

A kapcsolat elutasítása:
A kapcsolat elutasítása:
Image
Image

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

Ajánlott: