Homepage » hogyan kell » A kezdő útmutató az iptables-hez, a Linux tűzfal

    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