A kezdő útmutató az iptables-hez, a Linux tűzfal
Az Iptables egy rendkívül rugalmas Linux-operációs rendszerekre épített tűzfal-segédprogram. Akár kezdő Linux geek vagy rendszergazda, valószínűleg valamilyen módon lehet, hogy az iptables nagyon hasznos lehet neked. Olvassa el, ahogy megmutatjuk, hogyan kell konfigurálni a leginkább sokoldalú Linux tűzfalat.
A képet készítette ezioman.
Az iptables-ről
Az iptables egy parancssori tűzfal-segédprogram, amely házirend-láncokat használ a forgalom engedélyezéséhez vagy blokkolásához. Amikor egy kapcsolat megpróbálja létrehozni magát a rendszeren, az iptables egy listát keres egy listán, hogy megfeleljen a rendszernek. Ha nem találja meg az egyiket, az az alapértelmezett műveletre kerül.
Az iptables szinte mindig előre telepítve van bármely Linux disztribúción. A frissítéshez / telepítéshez csak az iptables csomagot kell letölteni:
sudo apt-get telepít iptables
Vannak olyan GUI alternatívák az iptables-hez, mint a Firestarter, de az iptables nem igazán olyan nehéz, ha van néhány parancsod. Rendkívül óvatosnak kell lennie az iptables szabályok konfigurálásakor, különösen akkor, ha SSH-t szeretne behelyezni egy szerverbe, mert egy rossz parancs véglegesen bezárhatja Önt, amíg manuálisan nem rögzíti a fizikai gépre.
Láncok típusai
Az iptables három különböző láncot használ: bemenetet, előre- és kimenetet.
Bemenet - Ez a lánc a bejövő kapcsolatok viselkedésének vezérlésére szolgál. Például, ha egy felhasználó megpróbálja SSH-t a PC / kiszolgálón, az iptables megpróbálja megegyezni az IP-címmel és a porttal egy beviteli lánc szabályával..
Előre - Ezt a láncot olyan bejövő kapcsolatokhoz használják, amelyeket nem valósítanak meg helyi szinten. Gondolj egy útválasztóra - az adatokat mindig elküldjük, de ritkán valójában az útválasztó számára; az adatokat csak a cél felé továbbítják. Hacsak nem csinálsz valamilyen útvonalat, NATing-t vagy valami másat a rendszereden, amely továbbításra szorul, akkor nem fogja használni ezt a láncot.
Van egy biztos módja annak ellenőrzésére, hogy a rendszer használja-e az előráncolt láncot.
iptables -L -v
A fenti kép olyan szerverről van szó, amely néhány hétig fut, és nincs korlátozása a bejövő vagy kimenő kapcsolatokra. Mint látható, a bemeneti lánc 11 GB-os csomagokat dolgozott fel, és a kimeneti lánc feldolgozott 17 GB-ot. Az elülső lánc viszont nem szükséges egyetlen csomag feldolgozásához. Ez azért van, mert a szerver nem végez semmiféle továbbítást vagy átviteli eszközként történő felhasználást.
kibocsátás - Ezt a láncot a kimenő kapcsolatokhoz használják. Például, ha megpróbálta ping-htogeek.com-t próbálni, az iptables ellenőrzi a kimeneti láncot, hogy lássa, milyen szabályok vonatkoznak a pingre és a howtogeek.com-ra, mielőtt döntést hoznának a csatlakozási kísérlet engedélyezéséről vagy megtagadásáról.
A figyelmeztetés
Annak ellenére, hogy egy külső gazdagép pingelése olyannak tűnik, ami csak a kimeneti lánc áthaladásához szükséges, ne feledje, hogy az adatok visszajuttatásához a bemeneti lánc is használható lesz. Amikor iptables-t használ a rendszer lezárásához, ne feledje, hogy sok protokoll kétirányú kommunikációt igényel, így mind a bemeneti, mind a kimeneti láncokat megfelelően kell konfigurálni. Az SSH egy közös protokoll, amelyet az emberek elfelejtenek mindkét láncra engedélyezni.
Politikai lánc alapértelmezett viselkedése
Mielőtt elkezdené és beállítaná a konkrét szabályokat, eldöntheti, hogy mit szeretne a három lánc alapértelmezett viselkedése. Más szóval, mit akarsz az iptables-nek, ha a kapcsolat nem felel meg a meglévő szabályoknak?
Ha meg szeretné tekinteni, hogy a szakpolitikai láncok jelenleg konfigurálva vannak a páratlan forgalomhoz, futtassa a iptables -L
parancs.
Amint láthatjuk, a grep parancsot is használtuk, hogy tisztább teljesítményt kapjunk. Ebben a képernyőn a láncunkat jelenleg a forgalom elfogadása jelenti.
Többször, mint nem, azt szeretné, hogy a rendszer alapértelmezés szerint elfogadja a kapcsolatokat. Ha korábban nem módosította a házirend-szabályokat, ezt a beállítást már be kell állítani. Akárhogy is, itt van a parancs, hogy alapértelmezés szerint fogadja el a kapcsolatokat:
iptables - az INPUT ACCEPT beillesztése
iptables - policy OUTPUT ACCEPT
iptables - elképzelhető FORWARD ACCEPT
Az elfogadási szabály alapértelmezésével az iptables használatával megtagadhatja az egyes IP-címek vagy portszámok használatát, miközben továbbra is elfogadja az összes többi kapcsolatot. Egy perc múlva eljutunk ezekhez a parancsokhoz.
Ha inkább minden kapcsolatot megtagad, és manuálisan adja meg, hogy melyiket szeretné engedélyezni, módosítania kell a láncok alapértelmezett házirendjét. Ez valószínűleg csak az érzékeny információkat tartalmazó kiszolgálók számára hasznos lenne, és csak az azonos IP-címek kapcsolódnak hozzájuk.
iptables - polipikus INPUT DROP
iptables - policy OUTPUT DROP
iptables - policy FORWARD DROP
Kapcsolat-specifikus válaszok
Az alapértelmezett láncpolitikák konfigurálásával elkezdheti hozzáadni a szabályokat az iptables-hez, így tudja, mit kell tennie, amikor egy adott IP-címre vagy -portra irányuló kapcsolatot észlel. Ebben az útmutatóban a három legalapvetőbb és leggyakrabban használt „válasz”.
Elfogad - Hagyja a kapcsolatot.
Csepp - Dobd el a kapcsolatot, cselekedj, mintha soha nem történt volna meg. Ez a legjobb, ha nem akarja, hogy a forrás megismerje a rendszerét.
Elutasít - Ne engedélyezze a kapcsolatot, de küldjön vissza egy hibát. Ez a legjobb, ha nem szeretné, hogy egy adott forrás csatlakozzon a rendszerhez, de azt szeretné, hogy tudják, hogy a tűzfal blokkolta őket.
A három szabály közötti különbségtétel legjobb módja az, hogy megmutassuk, hogy mikor néz ki, amikor egy számítógép megpróbál ping-t egy Linux-gépet az iptables-rel, amely mindegyik beállításhoz konfigurálva van.
A kapcsolat engedélyezése:
A kapcsolat visszavonása:
A kapcsolat elutasítása:
Egyes kapcsolatok engedélyezése vagy blokkolása
A házirend-láncok konfigurálásával most beállíthatja az iptables-et, hogy engedélyezze vagy blokkolja az egyes címeket, címtartományokat és portokat. Ezekben a példákban kapcsolatokat állítunk be CSEPP
, de átválthatod őket ELFOGAD
vagy ELUTASÍT
, attól függően, hogy milyen igényei vannak és hogyan konfigurálta a szakpolitikákat.
Megjegyzés: Ezekben a példákban fogjuk használni iptables -A
szabályokat kell csatolni a meglévő lánchoz. Az iptables a listájának tetején kezdődik, és minden szabályon áthalad, amíg meg nem találja azt, ami megfelel. Ha be kell illesztenie egy szabályt a másik fölé, használhatja iptables -I [lánc] [szám]
meg kell adnia a listában szereplő számot.
Csatlakozások egyetlen IP-címről
Ez a példa megmutatja, hogyan blokkolható az összes kapcsolat az IP-címről 10.10.10.10.
iptables -A INPUT-ok 10.10.10.10 -j DROP
Csatlakozások IP-címekből
Ez a példa megmutatja, hogyan blokkolható az összes IP-cím a 10.10.10.0/24 hálózati tartományban. Az IP-címek tartományának megadásához használhat hálózati maszkot vagy szabványos slash-jelölést.
iptables -A INPUT-ok 10.10.10.0/24 -j DROP
vagy
iptables -A INPUT-ok 10.10.10.0/255.255.255.0 -j DROP
Csatlakozások egy adott porthoz
Ez a példa megmutatja, hogyan blokkolja az SSH-kapcsolatokat 10.10.10.10-től.
iptables -A INPUT -p tcp - import ssh -s 10.10.10.10 -j DROP
Az „ssh” -et bármilyen protokoll vagy port száma helyettesítheti. A -p tcp
A kód egy része azt mondja, hogy az iptables milyen kapcsolatot használ a protokoll. Ha blokkol egy olyan protokollt, amely az UDP-t használja a TCP helyett, akkor -p udp
helyette lenne szükség.
Ez a példa megmutatja, hogyan blokkolható az SSH-kapcsolatok bármely IP-címről.
iptables -A INPUT -p tcp -dport ssh -j DROP
Csatlakozási állapotok
Ahogy 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 rendszerrel, a bemeneti és kimeneti láncokhoz hozzá kell adni egy szabályt. De mi van, ha csak azt szeretné, hogy az SSH bejusson a rendszerébe? Ha nem adunk hozzá szabályt a kimeneti lánchoz, akkor a kimenő SSH kísérletek is megengedettek?
Itt jönnek be a kapcsolatállapotok, amelyek lehetővé teszik a kétirányú kommunikáció engedélyezéséhez szükséges képességeket, de csak egyirányú kapcsolatokat hozhatnak létre. Nézze meg ezt a példát, ahol az 10.10.10.10-től származó SSH-csatlakozások megengedettek, de az SSH-csatlakozások 10.10.10.10-ig nem. A rendszer azonban engedélyezheti az SSH-n keresztüli információk küldését mindaddig, amíg a munkamenet már megtörtént, ami lehetővé teszi az SSH kommunikációt a két gazdagép között.
iptables -A INPUT -p tcp - import ssh -s 10.10.10.10 -m állapot - állapot ÚJ, LÉTREHOZOTT -j ACCEPT
iptables -A OUTPUT -p tcp - sport 22 -d 10.10.10.10 -m állapot - állapot ELTABLISHED -j ACCEPT
Változások mentése
Az iptables szabályaiban végrehajtott változtatásokat az iptables szolgáltatás következő alkalommal történő újraindításakor el kell hagyni, kivéve, ha parancsot hajt végre a módosítások mentéséhez. Ez a parancs az elosztástól függően eltérő lehet:
Ubuntu:
sudo / sbin / iptables-save
Red Hat / CentOS:
/ sbin / service iptables mentés
Vagy
/etc/init.d/iptables mentése
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
mindent számszerűen felsorol. Más szavakkal: a gazdanevek, protokollok és hálózatok számként vannak felsorolva.
Az összes beállított szabály törléséhez kiadhatja az öblítési parancsot.
iptables -F