Vissza a bloghoz

Iptables tűzfal konfigurálása: Alapvető szabályok és parancsok

Iptables tűzfal konfigurálása: Alapvető szabályok és parancsok

Bevezetés

Iptables​ egy parancssori ​tűzfal ​segédprogram. Ez azt jelenti, hogy ez egy szoftver, amely lehetővé teszi a tűzfal konfigurálását a rendszeren. Általában alapértelmezés szerint elérhető a ​Linux​ rendszereken. Ebben az útmutatóban ​áttekintünk néhányat az iptables​ tűzfalhoz kapcsolódó gyakori szabályok és parancsok közül. Amikor egy kapcsolat megpróbál létrejönni a rendszerével, a tűzfal ezekre a szabályokra hivatkozik annak meghatározásához, hogy mi legyen a következő lépés.

Iptables parancsok

Ez az útmutató bemutatja a legfontosabb iptables parancsok közül néhányat. Az útmutató követéséhez alapvető ismeretekkel kell rendelkeznie arról, hogy mi az az iptables és hogyan működik. Ez segít jobban megérteni azokat a szabályokat, amelyeket a következő parancsokkal valósít meg. Ne feledje, az alábbi parancsok bármelyike használható önállóan is. Másrészt tetszés szerint kombinálhatja is őket a saját igényeinek megfelelően.

Szem előtt tartandó dolgok

Mielőtt tovább olvasna, íme néhány dolog, amit érdemes észben tartania:

  • A szabályok sorrendje az iptables-ben fontos.
  • Új szabály hozzáadásához egy lánc végére az Ön ​iptables parancsának a ​-A.​​
  • Ha a szabályt egy másik pozícióba szeretné beszúrni, akkor az ​-I opciót kell használnia. Ez az opció lehetővé teszi a szabály pontos helyének meghatározását. Ha a szabályt a lánc elejére szeretné helyezni, egyszerűen ne adjon meg szabályszámot.
  • A szerveréhez való folyamatos hozzáférés biztosítása érdekében alapértelmezés szerint blokkolja az SSH-forgalmat a 22-es porton.
  • Abban az esetben, ha ezt elmulasztja, és elveszíti a hozzáférést a szerveréhez, a konzol segítségével újracsatlakozhat. Engedélyezze az SSH-forgalmat a tűzfalbeállítások módosításához.
  • Ha bármikor át szeretné tekinteni a jelenleg érvényben lévő szabálykészletet, használja a sudo iptables -S​ és ​ ​sudo iptables -L.

Ezenkívül van egy ​részletes útmutatónk az iptables tűzfalszabályok listázásáról és törléséről​, ami még inkább segít abban, hogy a legjobban kihasználja az iptables tűzfalat.

Most, hogy a feltételeket tisztáztuk, merüljünk el néhány ​gyakori iptables parancsban​:

Hogyan mentheti el a szabályait

Először azt határozzuk meg, hogyan mentheti el a szabályait. Fontos megjegyezni, hogy az iptables szabályok ideiglenesek. Ez azt jelenti, hogy a rendszer újraindítása után elvesznek – hacsak nem menti el őket. Így mentheti el manuálisan az új szabályokat ​Ubuntu​ és ​CentOS​ szervereken:

  • Ubuntu

Az új szabályok mentésének legegyszerűbb módja egy Ubuntu szerveren az iptables-persistent​ csomag használata. Könnyen ​létrehozhat egy Ubuntu szervert ezt az útmutatót követve​.

Az új iptables szabályok mentésének első lépése az iptables-persistent ​csomag telepítése az apt-get segítségével. Így szerezheti be:

Iptables Firewall 1

A telepítési folyamat során el kell döntenie, hogy el szeretné-e menteni a jelenleg érvényben lévő tűzfalszabályokat. Ha inkább frissíteni szeretné a szabályokat és elmenteni a változtatásokat, használja ezt a parancsot:

Iptables Firewall 2

A fenti parancs jellemzően a 16.04 utáni Ubuntu verziókon működik. Ha korábbi verziót használ, használja inkább ezt a parancsot:

  • CentOS

A tűzfalat az iptables segítségével konfigurálhatja CentOS 6 vagy annál régebbi verziókon. A CentOS 7 ehelyett a FirewallD-t használja. Kövesse ezt az útmutatót, hogy megtudja, hogyan kell beállítani a FirewallD-t CentOS 7 rendszeren.

Az új szabályokat CentOS-en a ​iptables init szkript segítségével mentheti el. Lásd a következő parancsot:

Ez a parancs elmenti az új szabályokat az iptables tűzfalhoz. A jelenleg aktív iptables szabályok a /etc/sysconfig/iptables​ fájlban találhatók.

Hasznos Iptables parancsok

Most pedig térjünk át néhány nagyon hasznos iptables tűzfalparancsra, amelyeket esetleg használnia kell a szerverén.

  • Loopback kapcsolatok

Először azt vizsgáljuk meg, hogyan engedélyezheti a loopback kapcsolatokat. A rendszere loopback interfészt használ, hogy kapcsolatokat küldjön saját magának. Képzelje el például, hogy ezt a parancsot futtatta: ​ping localhost​ vagy ​ping 127.0.0.1​. A szerver egy loopback interfészt, vagy egy lo​-t fog használni, hogy lényegében önmagát pingelje. Más esetekben a szerver akkor használhatja ezt, ha az alkalmazásszerver a „localhost” címhez való csatlakozásra van konfigurálva.

Függetlenül attól, hogy mi a helyzet, meg kell bizonyosodnia arról, hogy az iptables tűzfal nem blokkolja ezeket a kapcsolatokat. Ezért engedélyeznie kell a loopback kapcsolatokat, hogy ezek a funkciók működhessenek.

Íme a parancsok, amelyeket futtatnia kell a loopback interfészre érkező összes forgalom engedélyezéséhez:

Iptables Firewall 3

  • Létrehozott és kapcsolódó bejövő kapcsolatok

Egy másik kapcsolattípus, amelyet esetleg engedélyeznie kell, a kimenő kapcsolat. Annak biztosítására, hogy a szerver fogadja és küldje mind a bejövő, mind a kimenő forgalmat, engedélyeznie kell a már létrehozott és a kapcsolódó bejövő kapcsolatokat. Ez lehetővé teszi a szerver számára, hogy válaszforgalmat küldjön a kimenő kapcsolatokra. Használja ezt a parancsot a létrehozott, valamint a kapcsolódó bejövő kapcsolatok engedélyezéséhez:

Established and Related Incoming Connections

  • Létrehozott kimenő kapcsolatok

A szerver jellemzően a már létrehozott kapcsolatok kimenő forgalmaként küld válaszokat a bejövő kapcsolatokra. Ezek engedélyezéséhez használja a következő parancsot:

Established Outgoing Connections

  • Belsőből külsőbe

Néha még a tűzfalat is be kell konfigurálnia, hogy belső hozzáférést biztosítson a külső hálózathoz. Alapértelmezés szerint a külső hálózatnak az ​eth0​ és a belső hálózatnak az ​eth1 hálózatnak kell lennie. Ha ez a helyzet, használja ezt a parancsot a hozzáférés engedélyezéséhez:

Internal to External

  • Érvénytelen csomagok eldobása

Időnként a hálózati forgalom egyes csomagjai érvénytelenként lesznek megjelölve. Legtöbbször egyszerűen eldobhatja ezeket az érvénytelen csomagokat. Ehhez használja a következő parancsot:

Dropping Invalid Packets

IP-címek blokkolására vonatkozó szabályok

A következőkben megnézünk néhány parancsot, amellyel blokkolhatja a bizonyos IP-címekről érkező kapcsolatokat. A dolgok egyszerűsítése érdekében a parancsainkban példaként a(z) ​15.15.15.51 IP-címet fogjuk használni. Ezt az értéket helyettesítheti a saját konkrét IP-címével.

A ​-s 15.15.15.51 részben a ​-s​ a forrást (source) jelenti. Így a parancs a „15.15.15.51” forrás IP-címet határozza meg. Hasonlóképpen bármely tűzfalszabályban megadhatja a forrás IP-címet. Ez magában foglalja az engedélyező (allow) és az elutasító (reject) szabályt is.

Ha el szeretné utasítani a kapcsolatot, a DROP helyett a REJECT-et fogja használni a parancsban, így:

Ennek eredményeképpen a szerver „kapcsolat elutasítva” (connection refused) hibát ad, valahányszor az adott IP-cím kapcsolatfelvételi kérelmet küld.

  • Egy adott interfészre irányuló kapcsolatok blokkolása

Lehetőség van arra is, hogy blokkolja az összes olyan kapcsolatfelvételi kérelmet, amely egy adott IP-címről egy adott hálózati interfészre érkezik. Példánkban az IP-cím a(z) 15.15.15.51​, a hálózati interfész pedig a(z) ​eth0​. A kapcsolatok blokkolásához használja ezt a parancsot:

A nagyszerű dolog az, hogy a hálózati interfészt bármelyik szabályban megadhatja. Ez azt jelenti, hogy bármelyik szabály alkalmazható és korlátozható kizárólag egy adott hálózatra.

Szolgáltatásszabályok: SSH

Az SSH ​ akkor válik fontossá, ha felhőszervert használ. Ebben az esetben engedélyeznie kell a bejövő SSH-kapcsolatokat a 22-es porton. Ezen kapcsolatok engedélyezése lehetővé teszi a szerverhez való csatlakozást és annak kezelését. Itt az SSH-ra vonatkozó számos gyakori szabályt fogunk tárgyalni.

  • Összes bejövő SSH engedélyezése

A következő parancsok engedélyeznek minden bejövő SSH-kapcsolatot:

A fenti készletből csak akkor kell használnia a második parancsot, ha az ​OUTPUT​ irányelv értéke nem ​ACCEPT​. Ez engedélyezi a már létrejött SSH-kapcsolatok kimenő forgalmát.

  • Bejövő SSH engedélyezése egy alhálózatról

Az előző parancs minden bejövő kapcsolatot engedélyez. A következő parancsokkal korlátozhatja a bejövő kapcsolatokat egy adott IP-címre vagy alhálózatra. Tegyük fel, hogy csak a következő alhálózatról szeretné engedélyezni a bejövő kapcsolatokat: ​15.15.15.0/24​ alhálózat:

A korábbiakhoz hasonlóan a második parancsra csak akkor van szükség, ha az ​OUTPUT​ irányelv értéke nem ​ACCEPT​. Ez engedélyezi a már létrejött SSH-kapcsolatok kimenő forgalmát.

  • Kimenő SSH engedélyezése

Használja ezeket a parancsokat, ha a tűzfal ​OUTPUT​ irányelve nem ​ACCEPT​ értékre van állítva, és engedélyezni szeretné az SSH-kapcsolatokat. Ez lehetővé teszi a szervere számára, hogy SSH-kapcsolatokat kezdeményezzen más szerverek felé:

Ha szeretné jobban kihasználni az SSH-t a felhőszerverein, tekintse meg az alábbi útmutatóinkat: ​ hogyan használható az SSH távoli szerverhez való csatlakozáshoz Ubuntun ​és hogyan konfigurálható a Linux szerver SSH-kulcs alapú hitelesítés használatára​.

  • Bejövő Rsync engedélyezése egy alhálózatról

Rsync​ egy olyan funkció, amellyel fájlokat vihet át egyik rendszerből a másikba. A 873-as porton fut. Tehát ha engedélyezni szeretné a bejövő Rsync kapcsolatokat a 873-as porton egy adott IP-címről vagy alhálózatról, használja a következő parancsokat:

Mint látható, a forrás IP-címet a célporttal együtt adtuk meg. A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ​ACCEPT​. Ez engedélyezi a már létrejött Rsync kapcsolatok kimenő forgalmát. Emellett megtekintheti a ​útmutatónkat arról, hogyan használható az Rsync a szinkronizálásra helyi és távoli könyvtárak között egy VPS-en​.

Szolgáltatási szabályok: Webszerver

A HTTP-kapcsolatok általában a 80-as porton érkeznek. Hasonlóképpen, a HTTPS általában a 443-as porton érkezik. Az olyan webszerverek, mint az ​Apache​ és az ​Nginx​ ezeket a portokat figyelik a kapcsolódási kérelmek fogadásához. Időnként az alapértelmezett beállítások miatt a szerver elutasíthatja vagy eldobhatja ezeket a bejövő kéréseket. Ezért új szabályokat kell beállítania a forgalom átengedéséhez.

  • Minden bejövő HTTP-kapcsolat engedélyezése

A következő parancsokkal engedélyezhet minden bejövő HTTP-kapcsolatot a 80-as porton:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​. Ez engedélyezi a már létrejött HTTP-kapcsolatok kimenő forgalmát.

  • Összes bejövő HTTPS-kapcsolat engedélyezése

Használja ezeket a parancsokat az összes bejövő HTTPS-kapcsolati kérelem engedélyezéséhez a 443-as porton:

A második parancsot csak akkor kell használnia, ha az iptables tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez engedélyezi a már létrejött HTTP-kapcsolatok kimenő forgalmát.

  • Összes bejövő HTTP- és HTTPS-kapcsolat engedélyezése

A multiport modult is használhatja, ha a HTTP- és a HTTPS-portokról érkező forgalmat egyaránt engedélyezni szeretné. Ebben az esetben használja az alábbi parancsokat:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez engedélyezi a már létrejött HTTP- és HTTPS-kapcsolatok kimenő forgalmát.

Szolgáltatásszabályok: MySQL

Előfordulhat, hogy egy kliens távoli szervert használ az Ön ​MySQL​ adatbázis-szerverének eléréséhez. Ebben az esetben manuálisan kell engedélyeznie a bejövő forgalmat a megfelelő porton. A MySQL a 3306-os porton figyeli a kapcsolódási kérelmeket.

  • Bejövő MySQL-kapcsolatok engedélyezése egy alhálózatról

Meg kell adnia a forrást, ha egy adott alhálózatról szeretné engedélyezni a MySQL-kapcsolatokat. Példánkban a bejövő forgalmat a(z) 15.15.15.0/24​ alhálózatról engedélyezzük az alábbi parancsok használatával:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez engedélyezi a már létrejött MySQL-kapcsolatok kimenő forgalmát.

  • MySQL-kapcsolatok engedélyezése egy interfészen

Ha azt is meg szeretné adni, hogy melyik hálózati interfész fogadja a MySQL-kapcsolatokat, használhatja az alábbi parancsokat:

Ebben az esetben a kapcsolatokat egy eth1​.

nevű privát hálózati interfészhez engedélyezzük. A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez engedélyezi a már létrejött MySQL-kapcsolatok kimenő forgalmát.

Követheti a ​szerverén futó MySQL egyszerű beállításáról szóló útmutatónkat​.

Szolgáltatásszabályok: PostgreSQL

Előfordulhat, hogy a kliense távoli szervert használ az Ön ​PostgreSQL​ adatbázis-szerverének eléréséhez. Ebben az esetben engedélyeznie kell ezeket a bejövő kapcsolatokat. Ezek a kapcsolatok az 5432-es porton keresztül érkeznek.

  • Bejövő PostgreSQL-kapcsolatok engedélyezése egy alhálózatról

Az alábbi parancsokkal engedélyezheti a bejövő PostgreSQL-kapcsolatokat egy adott alhálózatról vagy IP-címről. Mint látható, megadtuk a forrást, ami a(z) ​15.15.15.0/24​ alhálózat.

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​. Ez lehetővé teszi a már kiépített PostgreSQL kapcsolatok kimenő forgalmát.

  • PostgreSQL kapcsolatok engedélyezése egy adott interfészen

Ha csak egy adott hálózati interfészre szeretné engedélyezni a PostgreSQL kapcsolatokat, használja az alábbi parancsokat:

Ebben az esetben a kapcsolatokat egy eth1​ nevű privát hálózati interfészhez engedélyezzük. A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez lehetővé teszi a már kiépített PostgreSQL kapcsolatok kimenő forgalmát.

Kövesse ezt az ​útmutatót a PostgreSQL telepítéséhez az Ubuntu szerverén​.

Szolgáltatásszabályok: Levelezés

Szükség lehet a tűzfal konfigurálására is a használt levelezőszervernek megfelelően. Például a ​Sendmail​ és a ​Postfix​ számos különböző porton fogadhat kapcsolatokat. Ez a kézbesítéshez használt protokolltól függ. Bizonyos levelezési kapcsolatok blokkolásához és engedélyezéséhez tudnia kell, milyen protokollt használ.

  • Bejövő SMTP kapcsolatok engedélyezése

Az SMTP kapcsolatok általában a 25-ös porton érkeznek. Bár az SMTP a kimenő levelekhez gyakran az 587-es portot is használja. Ahhoz, hogy a szerver válaszolni tudjon ezekre a kapcsolatokra, használja az alábbi parancsokat:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez lehetővé teszi a már kiépített SMTP kapcsolatok kimenő forgalmát.

  • Minden bejövő IMAP engedélyezése

Ahhoz, hogy a szerver válaszolni tudjon a 143-as porton érkező összes bejövő IMAP kapcsolatra, egyszerűen írja be és futtassa ezt:​

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez lehetővé teszi a már kiépített IMAP kapcsolatok kimenő forgalmát.

  • Minden bejövő IMAPS engedélyezése

Használja ezeket a parancsokat, hogy a szerver válaszolni tudjon a 993-as porton érkező IMAPS kapcsolatokra:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​. It allows the outgoing traffic of established IMAPS connections.

  • Minden bejövő POP3 engedélyezése

Ezek a kapcsolatok a 993-as porton érkeznek. Ha azt szeretné, hogy a szerver válaszoljon az IMAPS kapcsolatfelvételi kérelmekre, használja az alábbi parancsokat:

A második parancsot csak akkor kell használnia, ha a tűzfal ​OUTPUT​ irányelve nem ACCEPT​ értékre van beállítva. Ez lehetővé teszi a már kiépített POP3 kapcsolatok kimenő forgalmát.

  • Minden bejövő POP3S engedélyezése

Használja ezeket a parancsokat, hogy a szerver kapcsolatot tudjon létesíteni a 995-ös porton érkező POP3S kérelmekkel:

A második parancsot csak akkor fogja használni, ha a tűzfal ​OUTPUT irányelve nincs beállítva a következőre: ACCEPT​. Ez engedélyezi a kiépített POP3S kapcsolatok kimenő forgalmát.

  • Kimenő SMTP levelek blokkolása

A bejövő kapcsolatok engedélyezése és a szerverválasz lehetővé tétele helyett előfordulhat, hogy teljesen blokkolni szeretné a kimenő leveleket. A 25-ös porton lévő összes kimenő SMTP levelet blokkolhatja a következő paranccsal:

Ennek eredményeként az iptables tűzfal elutasítja a 25-ös porton lévő összes kimenő forgalmat. Ugyanezt a parancsszerkezetet használhatja, ha bármilyen más szolgáltatást szeretne elutasítani. Mindössze annyit kell tennie, hogy kicseréli a 25-ös portot a megfelelő portszámra.

Összegzés

Ez az útmutató a legfontosabb iptables tűzfalparancsokat mutatja be. Biztosítja azokat az alapvető eszközöket, amelyekre szüksége van az iptables tűzfal hatékony konfigurálásához. Tartsa szem előtt, hogy nincs univerzális megoldás. Ezek a parancsok rendkívül rugalmasak. Ez azt jelenti, hogy úgy használhatja őket, ahogyan az Önnek és az igényeinek a leginkább megfelel.

Kellemes számítógéphasználatot!

author

Manpreet Singh

Szerző · CloudSigma

Preslav Dobrev a CloudSigma kreatív tervezője, aki hagyományos és innovatív marketingcsatornák segítségével következetes vállalati identitás kialakítására összpontosít. Kiemelkedően képes ötvözni a művészi látásmódot a stratégiai marketinggel, hogy hatásos márkatörténeteket hozzon létre.

Hozzászólások

Még nincsenek hozzászólások. Legyen Ön az első.