Linux tűzfal konfigurálása iptables segítségével a CentOS / RHEL 7 rendszeren

Ebben a cikkben bemutatjuk, hogyan kezelhetünk egy Linux tűzfalat a klasszikus használatával iptables a CentOS / RHEL 7 tűzfal helyett a bejövő és kimenő forgalom szűrésére. Ez a cikk leírja, hogyan konfigurálhatja az iptable programokat a CentOS 7 rendszeren a bejövő forgalom szűrésére, egy példa segítségével a nulláról telepített felhőalapú virtuális kiszolgálóra. myserver01, elérhető az internetről.

Tartalom:

  • A tűzfalak letiltása a CentOS 7-ben
  • Szintaxis és iptable szabályok a CentOS / Red Hat alkalmazásban
  • Forgalomszűrési szabályok létrehozása az iptable-ban
  • Az iptable naplók engedélyezése
  • Az iptable szűrési szabályainak mentése és visszaállítása

A tűzfalak letiltása a CentOS 7-ben

A CentOS 7 alapértelmezés szerint a rendszerszolgáltatást használja a tűzfal vezérlésére firewalld. Biztosítja a saját felületét, de végül az iptables segédprogramon keresztül is működik. Ugyanakkor a tűzfalat akár a tűzfalakon keresztül, akár közvetlenül az iptable-kön keresztül kell irányítani.

A tűzfal nem helyettesíti, hanem egy csomagolóeszközt az iptable-ek körül, felhasználhatja belőle azt, amit jobban szeret, vagy adott körülmények között megfelelőbb. Az iptables univerzálisabb, alapvető eszköz, de egy kicsit nehezebb elsajátítani. A tűzfal egyszerűbb felületet biztosít, de például a CentOS 6 nem tudja használni, és más terjesztésekhez rendelkeznie kell a szükséges telepítőcsomagokkal. Ezen túlmenően, ha olyan alkalmazásokat használ, amelyek a tűzfalon állítják be a beállításokat, akkor kompatibilisnek kell lenniük a tűzfallal (ilyen alkalmazásokra példa a docker, fail2ban)..

Ellenőrizze a tűzfal állapotát és tiltsa le.

systemctl status firewalld

A parancs kimenetében egy piros területtel körözött terület a szóval engedélyezve, azt jelenti, hogy az indítás be van kapcsolva, és a terület sárga, a szóval körözve aktív, azt jelenti, hogy a szolgáltatás fut.

Leállítjuk a szolgáltatást, és kikapcsoljuk az automatikus betöltést:

a systemctl stop firewalld
a systemctl letiltja a tűzfalat

Az állapot újbóli ellenőrzése:

Most megjelenik a parancs kimenete mozgássérült automatikus töltéshez (ki), és tétlen azt jelenti, hogy a szolgáltatás ki van kapcsolva.

Szintaxis és iptable szabályok a CentOS / Red Hat alkalmazásban

iptables - Ez egy segédprogram, amely konfigurálja a tűzfalszabályokat a Linuxban.

Az Iptables a tűzfalszabályokat táblázatokba csoportosítja, a következők:

  • táblázat szűrő - a forgalom szűrésére, azaz a kapcsolatok engedélyezésére és tagadására
  • táblázat nat - használt címfordításhoz (NAT)
  • táblázat mángorló - az ip csomag fejlécek egyéb módosításai.

Először ellenőrizze, hogy az iptables telepítve van-e a rendszeren (alapértelmezettnek kell lennie):

rpm -q iptables

A parancs kimenete azt mutatja, hogy az iptables jelenlegi telepített verziója 1.4.21.

Az iptable-kel a parancssorban történő munkavégzéshez root jogosultságokra van szükség, tehát továbbra is rootként fogunk dolgozni.

Az aktuális szabályok megjelenítéséhez hajtsa végre a következő parancsot:

iptables [-tábla] -L [lánc] [paraméterek]

Megjegyzés: ha nem adja meg a tábla nevét egy parancs meghívásakor, akkor a táblázatot alapértelmezés szerint használja szűrő.

Például egy parancs eredménye iptables -L, amikor még nem hoztak létre szabályokat a táblákban:

Fontolja meg részletesebben a parancs kiadását.

táblázat szűrő háromféle szabályt tartalmaz, az úgynevezett láncot (láncot):

  • INPUT - a befogadó IP-csomagok, amelyek maguknak a gazdagépeknek szólnak, feldolgozódnak ebben a láncban;
  • Kimenet - maga a gazdagép kimenő ip-csomagjai kerülnek feldolgozásra ebben a láncban;
  • ELŐRE - erre a láncra van szükség az ip-csomagok átirányításához. Használható, ha a kiszolgálót útválasztóként kívánja használni.

Az egyes láncok szemben egy alapértelmezett házirend, amely meghatározza, hogy mit kell tenni, ha a kapcsolat nem tartozik valamelyik szabályba. Az alapértelmezett házirend két értéket vehet fel, és meghatározza a tűzfal szervezésének megközelítését:

  • ACCEPT - alapértelmezés szerint minden kapcsolat megengedett, a szabályok blokkolják a nem kívánt kapcsolatokat;
  • DROP - alapértelmezés szerint minden kapcsolat megtagadva, a szabályok lehetővé teszik a szükséges kapcsolatokat.

Forgalomszűrési szabályok létrehozása az iptable-ban

Az Iptables interfész szerint szűrhető

Kezdjük el létrehozni a szabályokat. A megadott lánc végére új szabály hozzáadására szolgáló parancs szintaxisa így néz ki:

iptable [-t tábla] -A -j

Először engedjük meg a forgalmat a helyi hurokfelületen (127.0.0.1), amely bizonyos alkalmazásokhoz szükséges:

iptables -A INPUT -i lo -j ACCEPT

Elemezzük sorrendben:

  1. Meghatározjuk az INPUT láncot, azaz a szabály a bejövő kapcsolatokra vonatkozik.
  2. Ezután használja a gombot -i (interfészen belül), annak a bejövő felületnek a meghatározására, amelyre az ip csomag megérkezik.
  3. A parancsot a kulcsmal fejezzük be -j (-jump), meghatározza az összes olyan ip-csomagra végrehajtandó műveletet, amely megfelel a 2. pontban foglalt kritériumoknak. Ebben az esetben az ACCEPT engedélyezi a kapcsolatot. Ezenkívül a kapcsolatokkal kapcsolatos alapműveletek tartalmazzák:
    • DROP - tiltja a kapcsolatot, a kapcsolat forrása nincs informálva, az ip-csomagot egyszerűen eldobják;
    • REJECT - tiltsa le a kapcsolatot, a kapcsolat forrását az üzenet tájékoztatja.

Az Iptable szűrő port, protokoll vagy IP cím alapján történik

Most adjunk hozzá egy engedélyezési szabályt, hogy a 22. porton SSH-n keresztül csatlakozzunk a Linux szerverünkhöz.

iptable -A INPUT -p tcp --dport 22 -j ACCEPT

Ebben a szabályban a port és a protokoll a kritérium. A protokollt (tcp, udp, icmp, all) a gomb állítja be -p (-protokoll), célport (azaz a port, amelybe az ip csomagok eljutnak a szerverre) -dport.

megjegyzés: ha a célportot vagy a forrásportot szeretné használni a kritériumokban (-dport vagy -sport), majd adja meg a protokollt.

Megadhat egy porttartományt például kettősponttal

--dport 6000: 6063

Ha tudjuk az ügyfelek ip-címeit, ahonnan csatlakozunk a kiszolgálóhoz, akkor biztonságosabb lesz csak ezekről az ip-címekről engedélyezni a hozzáférést. Ebben az esetben add -s (-src, -source) a kritériumokhoz, megadva például a kapcsolati forrás IP-címét vagy alhálózatát a következő szabály segítségével:

iptable -A INPUT -p tcp -s 94.41.174.122 - 22.dport -j ACCEPT

A 22. porthoz való hozzáférés csak a 94.41.174.122 IP-címtől lehetséges.

Részben 3 típusú icmp kérés engedélyezése:

iptable -A INPUT -p icmp --icmp típusú visszhang kérés -j ACCEPT
iptable -A INPUT -p icmp --icmp típusú rendeltetési hely-elérhetetlen -j ELFOGADÁS
iptable -A INPUT -p icmp - az amp-típusú idő túllépett -j ACCEPT

Ezek a szabályok lehetővé teszik a ping, a traceroute segédprogramok használatát és lehetővé teszik a mechanizmus számára az MTU meghatározását két gazdagép között.

Csatlakozás állapota iptable szűrő

A helyes működéshez létre kell hoznia egy szabályt, amely lehetővé teszi a már létrehozott kapcsolatokat:

iptable -A INPUT -m állapot - állam LÉTREHOZOTT, KAPCSOLATOS -j ELFOGADT

Itt a kulcsot használják a kritériumokban -m, az állapotmodul betöltése, amely lehetővé teszi az ip csomag aktuális állapotának meghatározását a lehetségesből:

  • ÚJ - a bejövő ip-csomagokra utal, amelyek a kapcsolat létrehozásában vesznek részt;
  • BEÁLLÍTOTT és KAPCSOLÓDÓ - már létrehozott kapcsolatokban részt vevő beérkező ip-csomagokra, vagy a már létrehozott (csatlakoztatott kapcsolatokból) indított kapcsolatokra;
  • Érvénytelen - a bejövő ip csomagokra utal, ha a fenti feltételek egyike sem vonatkozik rájuk.

Az alapértelmezett iptable házirend beállítása

A tűzfalat engedélyező minimumszabályok készen állnak, továbbra is meg kell határozni egy alapértelmezett házirendet, amely tiltja az összes bejövő kapcsolatot, amely nem felel meg a szabályainknak. Ehhez használja az iptables parancs kulcsát -P, beállítja az adott lánc alapértelmezett házirendjét, esetünkben:

iptables -P INPUT DROP

Vigyázat: a parancs használata előtt meg kell győződnie arról, hogy a jelenlegi szabályok lehetővé teszik-e a kiszolgálóhoz történő kapcsolódást, különben egyszerűen blokkolja a hozzáférést!
Nézzük meg a kapott iptable szabályok tábláját, adjunk hozzá egy kulcsot -v, sokkal pontosabb kimenet megjelenítése:
iptables -L -v

Az iptable naplók engedélyezése

Az Iptables lehetővé teszi, hogy információkat írjon az ip csomagok továbbításáról a rendszernaplóba. Ez egy konkrét fellépés révén valósul meg. LOG A kapcsolat fölött azután az ip csomag továbbra is éppen mozog a lánc mentén. Hozzon létre például egy szabályt, amely rögzíti az összes csatlakozási eseményt a 445-ös porthoz (tcp) a rendszernaplóban:

iptable -A INPUT -p tcp --dport 445 -j LOG --log-prefix "IN SMB DROP:"

itt -log-előtag beállítja az előtagot az összes üzenethez, amelyet a szabályunk naplóz. Ez kényelmes, ha több különböző naplózási szabály van, vagy további szoftver-feldolgozáshoz. Ha most megpróbál külsőleg csatlakozni szerverünkhöz a 445-ös porton, például telnet útján, a fájlban / var / napló / üzenetek megjelennek a bejegyzések:

Elemezzük a következtetést:

  • SMB CROP-ban: előtag, amelyet az opcióval állítottunk be -log-előtag
  • IN = eth0 az interfész, amelyen az ip-csomagot fogadják, üres értéket tartalmaz a kimenő kapcsolatok számára
  • OUT = az a felület, ahonnan az IP-csomagot küldték a bejövő kapcsolatokhoz, üres értéket tartalmaz
  • MAC = összekapcsolva a következő sorrendben: rendeltetési MAC cím, forrás MAC cím, EtherType - 08:00 megfelel az IPv4-nek.
  • Src = annak a forrásnak az ip címe, ahonnan az ip csomag el lett küldve
  • DST = IP-cím, amelyre az IP-csomagot elküldték
  • LEN = csomag ip mérete bájtban
  • SPT = forrásport, ahonnan az ip csomag el lett küldve
  • DPT = célport, amelybe az ip-csomagot küldik

Az iptable szűrési szabályainak mentése és visszaállítása

Végezetül állítsa be a szabályok automatikus betöltését a kiszolgáló újraindítása után. Ehhez telepíteni kell egy csomagot. iptables-szolgáltatások és a szolgáltatás aktiválva van. Telepítse a csomagot a yum segítségével:

yum install iptables-services
A systemctl lehetővé teszi az iptables használatát

Ellenőrizze az iptable szolgáltatás állapotát:

systemctl status iptables

Az indítási beállítás értéke: engedélyezve (be) paraméter aktív azt jelzi, hogy a szolgáltatás fut.

Betöltéskor a szolgáltatás elolvassa a fájl tartalmát / etc / sysconfig / iptables, és visszaállítja a mentett szabályokat. A szabályok mentéséhez a következő parancsot használjuk:

iptables-save> / etc / sysconfig / iptables

A szabályokat a fájlból visszaállíthatja a következő paranccsal:

iptables-restore < /etc/sysconfig/iptables

Most újraindíthatja a kiszolgálót, és ellenőrizze, hogy a tűzfalszabályok a rendszerindításkor helyreálltak-e.

A következő cikkben bemutatjuk, hogyan lehet az iptables segítségével létrehozni a NAT forgalom-átirányítási szabályait a CentOS-alapú hozzáférési átjáró számára a szervezet belső hálózatába.