Az Iptables egy rendkívül rugalmas tűzfal segédprogram, amely Linux operációs rendszerek számára készült. Akár kezdő Linux geek, akár rendszergazda vagy, valószínűleg az iptables nagyszerűen használható számodra. Olvassa el, miközben megmutatjuk, hogyan konfigurálhatja a legsokoldalúbb Linux tűzfalat.
Az iptables-ről
Az iptables egy parancssori tűzfal segédprogram, amely házirendláncokat használ a forgalom engedélyezéséhez vagy blokkolásához. Amikor egy kapcsolat megpróbálja megalapozni magát a rendszerén, az iptables egy olyan szabályt keres a listájában, amelyhez illeszkedik. Ha nem talál ilyet, az alapértelmezett művelethez folyamodik.
Az iptables szinte mindig előre telepítve van bármely Linux disztribúcióra. Frissítéséhez / telepítéséhez egyszerűen töltse le az iptables csomagot:
sudo apt-get install iptables
Vannak GUI alternatívák az iptables-hez, például Firestarter , de az iptables nem igazán olyan nehéz, ha néhány parancs le van kapcsolva. Rendkívül óvatosnak kell lenni az iptables szabályok konfigurálásakor, különösen, ha SSH-t használsz egy szerveren, mert egy rossz parancs véglegesen elzárhat, amíg manuálisan nem javítják a fizikai gépen.
A láncok típusai
Az iptables három különböző láncot használ: input, forward és output.
Bemenet - Ezt a láncot használják a bejövő kapcsolatok viselkedésének szabályozására. Például, ha egy felhasználó SSH-t próbál meg az Ön PC-jére / szerverére tenni, az iptables megpróbálja az IP-címet és a portot egyeztetni a bemeneti lánc szabályával.
Előre - Ezt a láncot olyan bejövő kapcsolatokhoz használják, amelyeket valójában nem helyben szállítanak. Gondoljon egy útválasztóra - az adatokat mindig küldik neki, de valójában csak magának az útválasztónak szánják; az adatokat éppen továbbítják a célpontjához. Hacsak nem végez valamilyen útválasztást, NAT-ot vagy valami mást a rendszerén, amely továbbítást igényel, akkor ezt a láncot sem fogja használni.
Egy biztos módja van annak ellenőrzésére, hogy a rendszer használja-e / nincs-e szüksége a továbbláncra.
iptables -L -v
A fenti képernyőkép egy olyan szerverről készült, amely néhány hete fut, és nincsenek korlátozva a bejövő vagy kimenő kapcsolatokra. Amint láthatja, az input lánc 11 GB csomagot, a kimeneti lánc pedig 17 GB-ot dolgozott fel. Az elülső láncnak viszont nincs szüksége egyetlen csomag feldolgozására. Ez azért van, mert a szerver semmiféle továbbítást nem végez, vagy nem áthidaló eszközként használja.
Kimenet - Ezt a láncot használják a kimenő kapcsolatokhoz. Például, ha megpróbálja pingelni a howtogeek.com webhelyet, az iptables ellenőrzi a kimeneti láncot, hogy megnézze, milyen szabályok vonatkoznak a pingre és a howtogeek.com-ra, mielőtt döntést hozna a kapcsolódási kísérlet engedélyezéséről vagy megtagadásáról.
A figyelmeztetés
Annak ellenére, hogy egy külső hoszt pingelése olyan dolognak tűnik, aminek csak a kimeneti láncon kell áthaladnia, ne feledje, hogy az adatok visszaadásához a beviteli lánc is felhasználásra kerül. Ha az iptables segítségével zárolja le a rendszert, ne feledje, hogy sok protokoll kétirányú kommunikációt igényel, ezért mind a bemeneti, mind a kimeneti láncokat megfelelően kell konfigurálni. Az SSH egy általános protokoll, amelyet az emberek elfelejtenek engedélyezni mindkét láncban.
Irányelvlánc alapértelmezett viselkedése
Mielőtt belépne és konfigurálna bizonyos szabályokat, el kell döntenie, hogy mi legyen a három lánc alapértelmezett viselkedése. Más szavakkal, mit szeretne tenni az iptables, ha a kapcsolat nem felel meg a meglévő szabályoknak?
Futtassa a
iptables -L
parancs.
Amint láthatja, a grep paranccsal tisztább kimenetet kaptunk. Ezen a képernyőképen láncaink jelenleg úgy vannak kitalálva, hogy elfogadják a forgalmat.
Többször szeretné, ha rendszere alapértelmezés szerint elfogadná a kapcsolatokat. Ha korábban nem módosította az irányelvlánc szabályait, akkor ezt a beállítást már konfigurálni kell. Akárhogy is, itt van a parancs a kapcsolatok alapértelmezett elfogadásához:
iptables --politika INPUT ACCEPT
iptables --politika OUTPUT ACCEPT
iptables - politika ELŐRE ELFOGADÁS
Az elfogadás szabály alapértelmezés szerint ezt követően az iptables segítségével megtagadhatja az adott IP-címeket vagy portszámokat, miközben továbbra is elfogadja az összes többi kapcsolatot. Egy perc alatt eljutunk ezekhez a parancsokhoz.
Ha inkább megtagadna minden kapcsolatot, és manuálisan megadná, melyiket engedélyezi a csatlakozáshoz, akkor változtassa meg a láncok alapértelmezett házirendjét. Ez valószínűleg csak azoknak a szervereknek lenne hasznos, amelyek érzékeny információkat tartalmaznak, és csak mindig ugyanazok az IP-címek csatlakoznak hozzájuk.
iptables --politika INPUT DROP
iptables --politika OUTPUT DROP
iptables - politika FORWARD DROP
Kapcsolatspecifikus válaszok
Az alapértelmezett lánc házirendek konfigurálásával elkezdhet szabályokat hozzáadni az iptables-hez, hogy tudja, mit kell tennie, amikor kapcsolatba lép egy adott IP-címről vagy portról. Ebben az útmutatóban áttekintjük a három legalapvetőbb és leggyakrabban használt „választ”.
Elfogad - Engedje meg a kapcsolatot.
Csepp - Húzza meg a kapcsolatot, járjon el úgy, mint még soha. Ez a legjobb, ha nem akarja, hogy a forrás rájöjjön, hogy létezik rendszere.
Elutasít - Ne engedje meg a kapcsolatot, de küldjön hibát. Ez a legjobb, ha nem szeretné, hogy egy adott forrás csatlakozzon a rendszeréhez, de azt szeretné, ha tudnák, hogy a tűzfala blokkolta őket.
A három szabály közötti különbség bemutatásának legjobb módja az, ha megmutatja, hogy néz ki, amikor egy számítógép megpróbál pingelni egy Linux gépet az e beállítások mindegyikéhez konfigurált iptables segítségével.
A kapcsolat engedélyezése:
A kapcsolat megszakítása:
A kapcsolat elutasítása:
Specifikus kapcsolatok engedélyezése vagy blokkolása
A házirendláncok konfigurálásával mostantól konfigurálhatja az iptables alkalmazást bizonyos címek, címtartományok és portok engedélyezésére vagy letiltására. Ezekben a példákban a kapcsolatokat állítjuk be
CSEPP
, de átállíthatja őket
ELFOGAD
vagy
ELUTASÍT
, az Ön igényeitől és a házirendláncok konfigurálásától függően.
Megjegyzés: Ezekben a példákban használni fogjuk
iptables -A
szabályokat csatolni a meglévő lánchoz. Az iptables a lista tetején kezdődik, és minden szabályt addig jár át, amíg meg nem találja azt, amelyik megfelel. Ha szabályt kell beillesztenie egy másik fölé, használhatja
iptables -I [chain] [number]
a szám megadásához, amelynek szerepelnie kell a listában.
Csatlakozások egyetlen IP-címről
Ez a példa bemutatja, hogyan lehet blokkolni az összes kapcsolatot az 10.10.10.10 IP-címről.
iptables -A BEMENET -s 10.10.10.10 -j DROP
Kapcsolatok egy sor IP-címről
Ez a példa bemutatja, hogyan lehet blokkolni 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 használhat netmask vagy standard perjel jelölést.
iptables -A BEMENET -s 10.10.10.0/24 -j DROP
vagy
iptables -A BEMENET -s 10.10.10.0/255.255.255.0 -j DROP
Csatlakozások egy adott porthoz
Ez a példa bemutatja, hogyan lehet blokkolni az SSH kapcsolatokat 10.10.10.10-től.
iptables -A BEMENET -p tcp --dport ssh -s 10.10.10.10 -j DROP
Az „ssh” bármelyik protokollra vagy portszámra cserélhető. A
-p tcp
a kód egy része megmondja az iptables számára, hogy a protokoll milyen kapcsolatot használ. Ha olyan protokollt blokkolt, amely UDP-t használ, nem pedig TCP-t, akkor
-p udp
szükség lenne helyette.
Ez a példa bemutatja, hogyan lehet blokkolni az SSH-kapcsolatokat bármely IP-címről.
iptables -A BEMENET -p tcp --dport ssh -j DROP
Kapcsolati állapotok
Mint korábban említettük, sok protokoll kétirányú kommunikációt igényel. Például, ha engedélyezni szeretné az SSH-kapcsolatokat a rendszeréhez, a bemeneti és kimeneti láncokhoz szabályt kell hozzáadni. De mi van akkor, ha csak azt akarja, hogy az SSH bejusson a rendszerébe? Nem ad egy szabályt a kimeneti láncba a kimenő SSH-kísérleteket sem?
Itt jönnek létre a kapcsolati állapotok, amelyek lehetővé teszik a kétirányú kommunikáció engedélyezését, de csak egyirányú kapcsolatok létrehozását teszik lehetővé. Vessen egy pillantást erre a példára, ahol a 10.10.10.10-től kezdődően engedélyezettek az SSH-kapcsolatok, de a 10.10.10.10-ig tartó SSH-kapcsolatok nem. A rendszernek azonban engedélyezett az információk visszaküldése SSH-n keresztül, amíg a munkamenet már létrejött, ami lehetővé teszi az SSH-kommunikációt e két gazdagép között.
iptables -A INPUT -p tcp --port ssh -s 10.10.10.10 -m állapot --állapot ÚJ, BEÁLLÍTOTT -j ACCEPT
iptables -A KIMENET -p tcp --sport 22 -d 10.10.10.10 -m állapot - állapot ESTABLISHED -j ACCEPT
Változások mentése
Az iptables-szabályokban végrehajtott módosításokat a legközelebbi alkalommal, amikor az iptables szolgáltatás újraindítja, selejtezzük, hacsak nem hajt végre parancsot a módosítások mentésére. Ez a parancs a terjesztésétől függően változhat:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / service iptables mentés
Vagy
/etc/init.d/iptables mentés
Egyéb parancsok
Sorolja fel a jelenleg konfigurált iptables szabályokat:
iptables -L
A
-nál nél
opció csomag- és bájtinformációt, valamint hozzáadást ad
-n
mindent numerikusan felsorol. Más szavakkal - a gazdagépnevek, protokollok és hálózatok számként szerepelnek.
Az összes jelenleg konfigurált szabály törléséhez kiadhatja a flush parancsot.
iptables -F