tévék. Konzolok. Projektorok és tartozékok. Technológiák. Digitális TV

A CentOS kezdeti beállítása

Megmutatjuk lépésről lépésre történő beállítás Tűzfal tűzfal a CentOS 7 rendszerben

Mi az a Firewall? Ez egy teljes értékű tűzfal, amely alapértelmezés szerint elérhető a CentOS 7-ben. Megmutatjuk, hogyan kell konfigurálni a szerveren, és bemutatjuk a firewall-cmd eszközt is.

1. Mik a tűzfal alapfogalmai?

Zónák

A Firewall képes szabálycsoportokat zónákon keresztül kezelni. Ez egy utasításkészlet a hálózatokba vetett bizalom alapján a forgalom kezelésére. Egy hálózati interfészhez zóna rendelhető a tűzfal viselkedésének szabályozására. Erre azért lehet szükség, mert a laptopok gyakran különböző hálózatokhoz tudnak csatlakozni. A számítógépek a zónák segítségével módosíthatják szabályaikat a környezetüktől függően. Ha például egy kávézóban csatlakozik Wi-Fi-hálózathoz, előfordulhat, hogy szigorúbb irányelveket kell alkalmaznia. De otthon a szabályok hűségesebbek lehetnek.

A tűzfalnak a következő zónái vannak:

A Drop megbízhatósága a legalacsonyabb a hálózaton. Ebben az esetben csak a kimenő kapcsolatokat támogatja a rendszer, és a bejövő forgalmat válasz nélkül megszakítja;

A blokk abban különbözik a droptól, hogy egy bejövő kérés eldobásakor az icmp-host-prohibited vagy icmp6-adm-prohibited üzenet kerül kiadásra;

A nyilvános zóna egy nyilvános hálózat, amely egyénileg támogatja a bejövő kéréseket. Azonban nem lehet benne megbízni;

A külső egy külső hálózati zóna, amely támogatja a NAT-maszkolást, hogy a belső hálózatot privát módon megőrizze. Azonban hozzá lehet férni;

A külső másik oldala belső. Az ebben a zónában lévő számítógépek megbízhatóak, így további szolgáltatások is elérhetők lesznek;

A dmz zónára olyan elszigetelt számítógépekre van szükség, amelyek nem férnek hozzá a hálózat többi részéhez. Ebben az esetben konfigurálhatja a kiválasztott bejövő kapcsolatokat;

Zóna munkahálózat- ez munka. Ebben megbízhat a környezetben, de nem minden bejövő kapcsolat támogatott, hanem csak a felhasználó által meghatározottak;

A megbízható zónában a hálózat összes számítógépében megbízhat.

Szabályok mentése

A Firewallban ezek ideiglenesek vagy állandóak. Előfordul, hogy a tűzfal viselkedését befolyásoló szabály megváltozik vagy megjelenik a halmazban. A változtatások az újraindítás után elvesznek, ezért el kell mentenie őket. A firewall-cmd parancsok a -permanent jelzőt használják a szabályok fennmaradásához. Ezt követően folyamatosan használhatod őket.

2. Hogyan lehet engedélyezni a tűzfalat?

Érdemes az indulással kezdeni háttér démon programok. A systemd egység fájl neve firewalld.service. a szükséges démonprogram engedélyezéséhez parancs sor tárcsa:

Sudo systemctl indítsa el a firewalld.service-t

Meg kell győződnünk arról, hogy a szolgáltatás elindult. Ehhez szüksége lesz:

Firewall-cmd --state fut

A tűzfal elindult, és az alapértelmezett utasításoknak megfelelően működik. Ne feledje, hogy a szolgáltatás engedélyezve van, de nem indul el automatikusan a szerverrel. Ehhez konfigurálnia kell az automatikus futtatást. Ezenkívül hozzon létre szabályokat, hogy ne legyen letiltva a saját szerverén.

3. Alapértelmezett tűzfalszabályok

Hogyan nézhetem meg őket?

Az alapértelmezett zóna megtekintéséhez írja be:

Firewall-cmd --get-default-zone public

Látjuk, hogy a Firewalld nem kapott utasításokat a többi zónára vonatkozóan. A nyilvános alapértelmezés szerint ez az egyetlen aktív zóna, mert semmilyen interfész nem volt kötve a többiekhez. Ha meg szeretné tekinteni az összes elérhető listát domain zónák, majd adja meg a konzolban:

Firewall-cmd --get-active-zones nyilvános interfészek: eth0 eth1

Két hálózati interfészt látunk a nyilvános zónához kötve. Az erre a zónára meghatározott szabályok szerint dolgoznak. Az alapértelmezett szabályokat a következőképpen tekintheti meg:

Firewall-cmd --list-all nyilvános (alapértelmezett, aktív) interfészek: eth0 eth1 források: szolgáltatások: dhcpv6-kliens ssh portok: maszkolás: nincs továbbító port: icmp-blocks: gazdag szabályok:

Összefoglaljuk:

Az alapértelmezett és egyetlen aktív zóna nyilvános;

Ehhez a zónához két interfész van hozzárendelve: eth0 és eth1;

A nyilvános támogatja a távoli SSH-adminisztrációt, valamint a DHSP IP-cím hozzárendelését.

Egyéb tűzfalzónák

Nézzük meg, milyen zónái vannak még a tűzfalnak. Az összes elérhető listájának megtekintéséhez írja be a konzolba:

Az egyes zónák paramétereit a -zone= jelző hozzáadásával is megkaphatja:

Firewall-cmd --zone=home --list-all otthoni felületek: források: szolgáltatások: dhcpv6-kliens ipp-kliens mdns samba-kliens ssh portok: maszkolás: nincs továbbító port: icmp-blocks: gazdag szabályok:

Ha az összes elérhető zóna definícióit listáznia kell, használja a --list-all-zones opciót. Küldjük el a kimenetet a lapozónak, hogy könnyebb legyen a kimenet megtekintése:

Firewall-cmd --list-all-zones | Kevésbé

4. Hogyan kell beállítani az interfész zónákat?

Minden hálózati interfész kezdetben az alapértelmezett zónához van kötve.

Az interfész zóna módosítása csak egy munkamenetre

Ehhez két lehetőségre lesz szükségünk: --change-interface= és --zone=. Az otthoni eth0 zónába való átlépéshez tárcsázza:

Sudo firewall-cmd --zone=home --change-interface=eth0 siker

Kérjük, vegye figyelembe, hogy ez hatással lehet bizonyos szolgáltatások működésére. Például az SSH az otthoni zónában támogatott, pl. a kapcsolatok nem lesznek visszaállítva. Ez azonban megtörténhet más zónákban, ami a saját szerverhez való hozzáférés blokkolásához vezet. Meg kell győződnünk arról, hogy az interfész az új zónához van kötve. Írja be a parancssorba:

Amikor a tűzfal újraindul, az interfész újra csatlakozik az alapértelmezett zónához.

Sudo systemctl indítsa újra a firewalld.service firewall-cmd --get-active-zones nyilvános interfészek: eth0 eth1

Az interfész zóna állandó megváltoztatása

A tűzfal újraindítása után az interfész vissza lesz rendelve az alapértelmezett zónához, ha nincs más zóna megadva az interfész beállításai között. A CentOS konfigurációi az ifcfg-interface formátumú fájlokban találhatók az /etc/sysconfig/network-scripts könyvtárban. Interfészzóna meghatározásához meg kell nyitnia a konfigurációs fájlt:

Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0

Adjuk hozzá a ZONE= változót a fájl végéhez. Állítsunk be egy másik zónát értékként:

DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8 ZÓNA=otthon

Most mentsük el a változtatásokat, ami után a fájl bezárható. A beállítások frissítéséhez újra kell indítania a hálózati szolgáltatást, valamint a tűzfalat:

Sudo systemctl restart network.service sudo systemctl restwald firewalld.service

Ezt követően az eth0 interfész az otthoni zónához lesz hozzárendelve.

Firewall-cmd --get-active-zones otthoni felületek: eth0 nyilvános interfészek: eth1

Alapértelmezett zónák beállítása

Egy másik alapértelmezett zóna is beállítható. Ebben segít nekünk a --set-default-zone= opció, amely minden hálózati interfészt egy másik zónához köt.

Sudo firewall-cmd --set-default-zone=home otthoni felületek: eth0 eth1

5. Hogyan készítsünk szabályokat a pályázatokra?

Hozzáadás egy szolgáltatási területhez

Ezt a tűzfal által használt porton a legegyszerűbb megtenni. Az összes elérhető szolgáltatás megtekintéséhez írja be a parancssorba:

Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipp-client ippsec kerámibs mdavirnpstw kerámibs s mountd ms- wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp sugár rpc-bind samba samba-client smtp ssh telnet tftp tftp-kliens átviteli-kliensbem vnc-https-server-client

Ne feledje, hogy a /usr/lib/firewalld/services könyvtárban található .xml fájlok az egyes szolgáltatásokkal kapcsolatos összes információt tárolják. Az SSH-val kapcsolatos információk a /usr/lib/firewalld/services/ssh.xml fájlban találhatók. Így néznek ki:

A zónák szolgáltatásainak támogatásához szükség van az -add-service= jelzőre, de a -zone opció hasznos a célzóna megadásához. Ne feledje, hogy az ilyen változtatások csak egy munkamenetre érvényesek. Ha el kell mentenie a változtatásokat későbbi használatra, használja a -permanent kapcsolót. Lássuk, hogyan működik. Indítsunk el egy webszervert, hogy ki tudja szolgálni a HTTP forgalmat. Engedélyezzük egy munkamenet támogatását a nyilvános zónában. Írja be a konzolba:

Sudo firewall-cmd --zone=public --add-service=http

Ne használja a -zone= opciót, ha a szolgáltatást az alapértelmezett zónához adja. Nézzük meg, hogy minden működött-e:

Firewall-cmd --zone=public --list-services dhcpv6-client http ssh

Most tesztelnünk kell a tűzfalat és magát a szolgáltatást. Ha látja, hogy minden rendben van, nyugodtan módosíthatja az állandó szabályrendszert. Új szolgáltatás támogatási szabályának hozzáadásához a konzolon meg kell adnia:

Sudo firewall-cmd --zone=public --permanent --add-service=http

Ha meg szeretné tekinteni a folyamatosan érvényben lévő szabályok teljes listáját, akkor:

Sudo firewall-cmd --zone=public --permanent --list-services dhcpv6-client http ssh

Ennek eredményeként a nyilvános zóna támogatja a 80-as portot és a HTTP-t. Ha a szervere képes SSL/TLS forgalmat kiszolgálni, hozzáadhatja a HTTPS szolgáltatást:

Sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https

6. Mi a teendő, ha a szolgáltatás nem elérhető?

Alapértelmezés szerint a Firewall számos népszerű szolgáltatást tartalmaz. De előfordul, hogy a programoknak más szolgáltatásokra van szükségük, amelyek nem szerepelnek a tűzfalban. Ez a probléma pár módon megoldható.

1. módszer: Szolgáltatás meghatározása

Port hozzáadása egy zónához meglehetősen egyszerű. Ha azonban elég sok alkalmazás van, akkor nehéz lesz megérteni, hogy melyik port mit használ. Ilyen helyzetben jó megoldás lenne a szolgáltatások meghatározása a portok helyett. A szolgáltatás lényegében olyan portok csoportja, amelyek nevet és leírást kaptak. Segítségükkel könnyebb lesz a beállítások kezelése. De a szolgáltatás valamivel bonyolultabb, mint a port.

Kezdjük azzal, hogy a /usr/lib/firewalld/services mappából másoljunk le egy létező szkriptet, amelyből a tűzfal az /etc/firewalld/services könyvtár nem szabványos beállításait veszi át. Másoljuk át az SSH-szolgáltatásdefiníciót, hogy példa feltételes szolgáltatásdefinícióként használhassuk. Ne felejtse el, hogy a szkript nevének meg kell egyeznie a szolgáltatás nevével, és .xml fájlkiterjesztéssel is kell rendelkeznie. Írja be a konzolba:

Sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

Most módosítania kell a lefordított fájlt:

Sudo nano /etc/firewall/services/example.xml

Belül az SSH definíció:

Az SSH Secure Shell (SSH) egy protokoll a távoli gépekre való bejelentkezéshez és parancsok végrehajtásához. Biztonságos, titkosított kommunikációt biztosít. Ha azt tervezi, hogy távolról szeretné elérni a gépet SSH-n keresztül, tűzfalas felületen keresztül, engedélyezze ezt a lehetőséget. Ahhoz, hogy ez a beállítás hasznos legyen, telepítenie kell az openssh-server csomagot.

Most mentsük el a változtatásokat, és zárjuk be a fájlt. Ezt követően újra kell indítania a tűzfalat a következő használatával:

Sudo firewall-cmd --reload

A miénk megjelenik az elérhető szolgáltatások listájában:

Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns példa ftp high-availability http https imaps ipp ipp-client kdapassclient kdapaspsec kerlbersl ns mountd ms -wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp sugara rpc-bind samba samba-client smtp ssh telnet tftp tftp-kliens átviteli-szerverbem https wnc-server-client

2. módszer: Port létrehozása

Nyissuk meg az alkalmazásportot a kívánt tűzfalzónában, és adjuk meg azt, valamint a protokollt. Képzeljünk el egy olyan helyzetet, amikor a nyilvános zónához egy TCP protokollt és 5000-es portot használó programot kell hozzáadni.Az alkalmazástámogatás aktiválásához egy munkamenetre szükségünk lesz az -add-port= opcióra. Ezenkívül meg kell adnia a tcp vagy udp protokollt:

Sudo firewall-cmd --zone=public --add-port=5000/tcp

Győződjön meg arról, hogy minden működött:

Firewall-cmd --list-ports 5000/tcp

Ezenkívül lehetséges a portok egy tartományának megadása kötőjellel. Például, ha egy program a 4990-4999-es portokat használja, akkor a következőképpen adhatja hozzá őket a nyilvános zónához:

Sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Ha minden jól működik, adjon hozzá utasításokat a tűzfalbeállításokhoz:

Sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd -- zone=public --permanent --list-ports siker siker 4990-4999/udp 5000/tcp

7. Hogyan lehet zónát létrehozni?

A tűzfal különféle előre definiált zónákat képes biztosítani, amelyek általában elegendőek a munkához, de néha létre kell hozni egy saját egyéni zónát. Például egy DNS-kiszolgálónak privát DNS-zónára, a webszervernek pedig egy nyilvános web-zónára van szüksége. A zónák létrehozása után hozzá kell adnia a tűzfal beállításaihoz. Hozzuk létre a publicweb és a privateDNS zónákat úgy, hogy beírjuk a konzolba:

Sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS

Nézzük meg, hogy minden működött-e:

Sudo firewall-cmd --permanent --get-zones block dmz drop külső otthon belső privát DNS nyilvános nyilvános web megbízható munka

Firewall-cmd --get-zones blokkolja a dmz-t külső otthoni belső nyilvános megbízható munka

Új zónák azonban nem lesznek elérhetők a jelenlegi munkamenetben:

Firewall-cmd --get-zones blokkolja a dmz-t külső otthoni belső nyilvános megbízható munka

Indítsuk újra a tűzfalat az új zónák eléréséhez:

Sudo firewall-cmd --reload firewall-cmd --get-zones block dmz drop külső otthon belső privát DNS nyilvános nyilvános web megbízható munka

Mostantól új zónák is meghatározhatnak portokat és szolgáltatásokat. Tegyük fel, hogy hozzá kell adni az SSH-t, a HTTP-t és a HTTPS-t a nyilvános web zónához:

Sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https firewall- cmd --zone=publicweb --list-all publicweb interfaces: források: szolgáltatások: http https ssh portok: maszkolás: nincs továbbító port: icmp-blocks: rich szabályok:

Ezenkívül DNS-t adhat a privát DNS-zónához a következő módon:

Sudo firewall-cmd --zone=privateDNS --add-service=dns firewall-cmd --zone=privateDNS --list-all privateDNS interfészek: források: szolgáltatások: dns portok: maszkolás: nincs előreirányító port: icmp-blokkok: gazdag szabályok:

Ezt követően biztonságosan hozzárendelhet hálózati interfészeket új zónákhoz:

Sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1

Ellenőrizze, hogy a beállítások működnek-e. Ha minden rendben van, adja hozzá őket az állandó szabályokhoz:

Sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

Most térjünk át a hálózati interfészek beállítására. Ez szükséges a végrehajtáshoz automatikus csatlakozás a kívánt zónába. Tegyük fel, hogy kapcsolódnia kell a publicweb eth0-hoz, majd:

Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0. . . IPV6_AUTOCONF=nincs DNS1=2001:4860:4860::8844 DNS2=2001:4860:4860::8888 DNS3=8.8.8.8 ZONE=nyilvános web

Kössük az eht1-et a privateDNS-hez is a következő használatával:

Sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1. . . NETMASK=255.255.0.0 DEFROUTE="nem" NM_CONTROLLED="igen" ZÓNA=privateDNS

A módosítások életbe léptetéséhez újra kell indítania a tűzfalat és a hálózati szolgáltatásokat:

Sudo systemctl indítsa újra a hálózatot sudo systemctl indítsa újra a tűzfalat

Ellenőriznie kell a zónákat, hogy megbizonyosodjon arról, hogy a szolgáltatások regisztrálva vannak:

Firewall-cmd --get-active-zones privát DNS interfészek: eth1 nyilvános webes felületek: eth0

Most ellenőriznünk kell, hogy működnek-e:

Firewall-cmd --zone=publicweb --list-services http htpps ssh firewall-cmd --zone=privateDNS --list-services dns

Amint látjuk, a felhasználói zónák teljesen készen állnak a munkára. Ezek bármelyike ​​hozzárendelhető alapértelmezettként. Például:

Sudo firewall-cmd --set-default-zone=publicweb

8. Hogyan tudom elérni, hogy a tűzfal automatikusan elinduljon?

A szabályok és az összes beállítás ellenőrzése után konfiguráljuk az automatikus futtatást:

Sudo systemctl engedélyezze a tűzfalat

Ez lehetővé teszi a tűzfal azonnali engedélyezését a szerver elindítása után.

Következtetésként érdemes megjegyezni, hogy a Firewalld tűzfal meglehetősen rugalmas eszköz a beállításokat illetően. És megváltoztathatja működésének politikáját a zónák használatával.

A szerver védelme érdekében külső fenyegetések Először is van egy tűzfal, amely szűri a bejövő és kimenő forgalmat. Ebben a cikkben az iptables beállításáról szeretnék beszélni, amely a CentOS tűzfalának egy speciális esete, valamint a telepítéséről és letiltásáról. Útmutatóm nem lesz kimerítő, csak azokat a szempontokat veszem figyelembe, amelyeket a legfontosabbnak tartok, és amelyeket magam is felhasználok munkám során.

Ez a cikk a szerverről szóló egyetlen cikksorozat része.

Bevezetés

Az Iptables jelenleg a de facto szabvány a modern Linux disztribúciók között. Nem is emlékszem rögtön, hogy mit használnak még tűzfalként. Tehát minden Linux rendszergazdának meg kell küzdenie a tűzfal beállításával a munkája során.

Ehhez a tűzfalhoz különböző kapcsolatok állnak rendelkezésre, amelyeket a „kényelmesebb” konfiguráció érdekében használnak. Az Ubuntunak van ufw, centosban - tűzfal, a többieket nem ismerem. Én személy szerint nem látok kényelmetlenséget ezeknek az eszközöknek a használatában. Hozzászoktam, hogy a Linux tűzfalat a régi módon állítsam be, ahogy azt munkám legelején megtanultam. Szerintem ez a legegyszerűbb és kényelmes módon amit megosztok veled. Lényege abban rejlik, hogy a szkript tűzfalszabályokkal jön létre. Ez a szkript könnyen szerkeszthető az Ön igényei szerint, és átvihető szerverről szerverre.

Tűzfal letiltása

A tűzfal letiltásának kérdését már érintettem a témában. Először is tiltsuk le a tűzfalat, amely a centos 7-ben alapértelmezés szerint a telepítés után azonnal jelen van:

# systemctl állítsa le a tűzfalat

Most távolítsuk el az indításból, hogy újraindítás után ne kapcsoljon be újra:

# systemctl letiltja a tűzfalat

Ezt követően a kiszolgáló tűzfalbeállításai teljesen megnyílnak. Az iptables szabályokat a következő paranccsal tekintheti meg:

Az iptables telepítése

Valójában már van tűzfal a szerverünkön, és működik, egyszerűen nincsenek szabályok, minden nyitva van. További felügyeleti segédprogramokat kell telepítenünk, amelyek nélkül lehetetlen az iptables konfigurálása. Például nem lehet újraindítani a tűzfalat:

# systemctl restart iptables.service Nem sikerült a metódushívás kiadása: Az iptables.service egység betöltése nem sikerült: Nincs ilyen fájl vagy könyvtár.

Vagy nem tudja hozzáadni az automatikus futtatáshoz:

# systemctl enable iptables.service Nem sikerült a metódushívás kiadása: Nincs ilyen fájl vagy könyvtár

Az ilyen hibák elkerülése érdekében telepítse a szükséges csomagot a segédprogramokkal:

# yum -y az iptables-services telepítése

Most hozzáadhatja az iptables-t az indításhoz és futtatáshoz:

# systemctl enable iptables.service # systemctl start iptables.service

Tűzfal beállítása

Szkriptet használok a tűzfalszabályok kezelésére. Hozzuk létre:

# mcedit /etc/iptables.sh

Ezután kitöltjük a szükséges szabályokkal. A forgatókönyv minden jelentős részét elemzem, és A cikk végén szöveges fájlként teljes egészében megadom. A szabályok képek formájában készültek, hogy tiltsák a másolást és beillesztést. Ez hibákhoz vezethet a szabályok működésében, amelyekkel magam is találkoztam a cikk elkészítése során.

Megvizsgáljuk azt a helyzetet, amikor a szerver átjáró az internethez helyi hálózat.

Először is állítsuk be az összes változót, amelyet használni fogunk a szkriptben. Ez nem szükséges, de ajánlott, mert kényelmes a beállítások átvitele szerverről szerverre. Elég lesz egyszerűen újra hozzárendelni a változókat.

Az új szabályok alkalmazása előtt töröljük az összes láncot:

Minden olyan forgalmat blokkolunk, amely nem felel meg egyik szabálynak sem:

Minden localhost és helyi forgalom engedélyezése:

Engedélyezzük a ping-et:

Ha erre nincs szüksége, akkor ne adjon hozzá engedélyezési szabályokat az icmp-hez.

Internet hozzáférést nyitunk magának a szervernek:

Ha meg szeretné nyitni az összes bejövő szerverkapcsolatot, adja hozzá a következő szabályt:

Most adjunk hozzá védelmet a leggyakoribbak ellen hálózati támadások. Először is dobjunk el minden olyan csomagot, amelynek nincs állapota:

Null csomagok blokkolása:

Védje magát a syn-Flood támadásoktól:

Ha nem állít be korlátozásokat a helyi hálózatról való hozzáférésre, akkor mindenki számára lehetővé tesszük az internet elérését:

Ezután megtiltjuk a hozzáférést az internetről a helyi hálózathoz:

Annak érdekében, hogy helyi hálózatunk használni tudja az internetet, engedélyezzük a nat:

Annak érdekében, hogy ne veszítse el a szerverhez való hozzáférést, a szabályok alkalmazása után engedélyezzük az ssh-n keresztüli kapcsolatokat:

És a végén leírjuk a szabályokat, hogy azok újraindítás után is érvényesek legyenek:

Összeállítottunk egy egyszerű konfigurációt, amely blokkolja az összes bejövő kapcsolatot, kivéve az ssh-t, és lehetővé teszi a hozzáférést a helyi hálózatról az Internetre. Ugyanakkor megvédtük magunkat néhány hálózati támadástól.

Mentse el a szkriptet, tegye végrehajthatóvá és futtassa:

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

Tekintsük át a szabályokat, és ellenőrizzük, hogy minden szabály a helyén van-e:

# iptables -L -v -n

Kérjük, vegye figyelembe, hogy csak akkor kell alkalmaznia a szabályokat, ha rendelkezik hozzáféréssel a kiszolgálókonzolhoz. Ha hiba van a beállításokban, elveszítheti a hozzáférést. Győződjön meg arról, hogy vészhelyzetben letilthatja a tűzfalat, és módosíthatja a beállításokat.

Portok nyitása

Most bővítsük egy kicsit a konfigurációnkat, és nyissunk meg portokat az iptables-ban bizonyos szolgáltatásokhoz. Tegyük fel, hogy fut egy webszerverünk, és meg kell nyitnunk a hozzáférést az internetről. Szabályok hozzáadása a webes forgalomhoz:

Engedélyt adtunk a bejövő kapcsolatokhoz a 80-as és 443-as portokon, amelyeket a használ web szerver a munkádban.

Ha telepítette levelezőszerver, akkor engedélyeznie kell a bejövő kapcsolatokat az összes használt porton:

A helyes működés érdekében DNS szerverek, meg kell nyitnia az 53-as UDP-portot

Port továbbítás

Tekintsünk egy olyan helyzetet, amikor szükséges a portokat egy külső interfészről a helyi hálózat valamelyik számítógépére továbbítani. Tegyük fel, hogy rdp-hozzáférést kell szereznie a 10.1.3.50-es számítógéphez az internetről. Továbbítjuk a 3389-es TCP portot:

Ha nem szeretne egy ismert portot kívülről felfedni, átirányíthat egy nem szabványos portról ide rdp port célszámítógép:

Ha egy portot kívülről továbbít a helyi hálózatra, feltétlenül írja le azt a szabályt, amely blokkolja a hozzáférést a külső hálózatról a belső hálózatra. Az én példámban ez a szabály: $IPT -A ELŐRE -i $WAN -o $LAN1 -j ELUTASÍTÁS

Vagy e szabály előtt hozzon létre egy engedélyezési szabályt a belső szolgáltatáshoz való külső hozzáféréshez, például így:

$IPT -A ELŐRE -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ELFOGADÁS

Naplók engedélyezése

A telepítés során hasznos engedélyezni a naplók számára a blokkolt csomagok figyelését, és kideríteni, hogy miért nincs hozzáférés a szükséges szolgáltatásokhoz, amelyeket úgy tűnik, már megnyitottunk. Az összes blokkolt csomagot a forgalom irányának megfelelő külön láncokba (block_in, block_out, block_fw) küldöm, és minden irányt megjelölök a naplókban. Ez kényelmesebbé teszi a tájékoztatást. A beállítások mentése előtt adja hozzá a következő szabályokat a szkript legvégéhez:

Az összes blokkolt csomagot nyomon követheti a /var/log/messages fájlban.

A beállítás befejezése után írja le ezeket a sorokat, és tiltsa le a naplózást. Ezt mindenképpen érdemes megtenni, mert a rönkök nagyon gyorsan nőnek. Én személy szerint semmi gyakorlati értelmét nem látom az ilyen információk tárolásának.

Hogyan lehet letiltani az iptables-t

Ha hirtelen úgy dönt, hogy már nincs szüksége a tűzfalra, az alábbiak szerint tilthatja le:

# systemctl stop iptables.service

Ez a parancs leállítja a tűzfalat. És a következők eltávolítják az indításból:

# systemctl letiltja az iptables.service-t

A tűzfal letiltásával minden csatlakozást engedélyeztünk.

Következtetés

Ahogy ígértem, egy kész forgatókönyvet teszek közzé az általunk figyelembe vett alapvető szabályokkal

Szeretném még egyszer hangsúlyozni, hogy az iptables beállításakor rendkívül óvatosnak kell lenni. Ne indítsa el ezt a vállalkozást, ha nincs hozzáférése a szerverkonzolhoz. Még a cikk írása közben is elvesztettem a hozzáférést a szerverhez egy nevetséges szabályhiba miatt. Ez a hiba a másolás és a kettős kötőjel elvesztése miatt keletkezett - ezt egyetlenegy váltotta fel.

„Linux rendszergazda” online tanfolyam az OTUS-nál. A tanfolyam nem kezdőknek való, a belépéshez szükséges Alap tudás hálózatokon keresztül és Linux telepítés a virtuális géphez. A képzés 5 hónapig tart, ezt követően a sikeres tanfolyamot végzettek interjúkon vehetnek részt partnerekkel. Mit nyújt ez a tanfolyam:

  • Linux architektúra ismerete.
  • Fejlesztés modern módszerek valamint adatelemző és -feldolgozó eszközök.
  • Képes konfigurációt választani a szükséges feladatokhoz, folyamatokat kezelni és rendszerbiztonságot biztosítani.
  • Jártas a rendszergazda alapvető munkaeszközeiben.
  • A Linuxra épített hálózatok telepítésének, konfigurálásának és karbantartásának sajátosságainak megértése.
  • A felmerülő problémák gyors megoldásának képessége és a rendszer stabil és zavartalan működése.
Tesztelje magát a felvételi vizsgán, és további részletekért tekintse meg a programot.

Telepítve operációs rendszer A tűzfalat arra használják, hogy megakadályozzák az illetéktelen forgalom áthaladását közöttük számítógépes hálózatok. A tűzfal speciális szabályai manuálisan vagy automatikusan jönnek létre, amelyek felelősek a hozzáférés szabályozásáért. A Linux kernelre fejlesztett operációs rendszer, a CentOS 7 beépített tűzfallal rendelkezik, és tűzfallal kezelhető. A FirewallD alapértelmezés szerint engedélyezve van, és ma szeretnénk beszélni a beállításáról.

Mint fentebb említettük, a CentOS 7 szabványos tűzfala a FirewallD segédprogram. Ez az oka annak, hogy a tűzfal beállítását ennek az eszköznek a példaként való felhasználásával tárgyaljuk. Ugyanazon iptables használatával is beállíthat szűrési szabályokat, de ez kissé eltérő módon történik. Javasoljuk, hogy a következő hivatkozásra kattintva ismerkedjen meg az említett segédprogram konfigurációjával, és megkezdjük a FirewallD elemzését.

A tűzfal alapjai

Számos zóna létezik - szabálykészlet a forgalom kezelésére a hálózatokba vetett bizalom alapján. Mindegyiknek saját szabályzata van, amelyek összessége alkotja a tűzfal konfigurációját. Minden zónához egy vagy több hálózati interfész van hozzárendelve, amely lehetővé teszi a szűrés beállítását is. Az alkalmazott szabályok közvetlenül függenek a használt interfésztől. Például nyilvános hálózathoz való csatlakozáskor Wi-Fi hálózat a képernyő növeli a vezérlési szintet, és be otthoni hálózat megnyílik további hozzáférés lánc résztvevői számára. A szóban forgó tűzfal a következő zónákat tartalmazza:

  • megbízható – a maximális bizalom minden hálózati eszközben;
  • otthon - helyi hálózati csoport. Megvan a bizalom a környezetben, de a bejövő kapcsolatok csak bizonyos gépek számára érhetők el;
  • munka - munkaterület. A legtöbb eszközben bizalom van, és további szolgáltatások aktiválva vannak;
  • A dmz egy zóna elszigetelt számítógépek számára. Az ilyen eszközök le vannak választva a hálózat többi részétől, és csak bizonyos bejövő forgalmat engedélyeznek;
  • belső — belső hálózatok zónája. A bizalom minden gépre vonatkozik, további szolgáltatásokat nyitnak meg;
  • külső – zóna fordított az előzőhöz. Külső hálózatokban a NAT maszkolás aktív, bezárja a belső hálózatot, de nem blokkolja a hozzáférést;
  • nyilvános - zóna nyilvános hálózatok bizalmatlansággal minden eszközzel és a bejövő forgalom egyéni fogadásával;
  • blokk - minden bejövő kérés visszaállításra kerül, hibaüzenettel icmp-host-inhibited vagy icmp6-adm-tilos;
  • drop – minimális bizalomszint. A bejövő kapcsolatok értesítés nélkül megszakadnak.

Maguk a szabályzatok lehetnek ideiglenesek vagy állandóak. Amikor a paraméterek megjelennek vagy szerkesztenek, a tűzfalművelet azonnal megváltozik, újraindítás nélkül. Ha ideiglenes szabályokat alkalmaztak, akkor azok a FirewallD újraindítása után visszaállnak. Az állandó szabályt így hívják - a -permanent argumentum alkalmazásakor véglegesen el lesz mentve.

A FirewallD engedélyezése

Először el kell indítania a FirewallD-t, vagy meg kell győződnie arról, hogy aktív állapotban van. Csak egy futó démon (egy háttérben futó program) alkalmazza a tűzfalszabályokat. Az aktiválás néhány kattintással megtörténik:

  1. Indítsa el a klasszikust "Terminál" bármilyen kényelmes módszert, például a menün keresztül "Alkalmazások".
  2. Írja be a sudo systemctl start firewalld.service parancsot, és nyomja meg a gombot Belép.
  3. A segédprogramot a szuperfelhasználó nevében kezelik, így hitelességét jelszó megadásával kell megerősítenie.
  4. A szolgáltatás működésének ellenőrzéséhez adja meg a firewall-cmd --state paramétert.
  5. A megnyíló grafikus ablakban erősítse meg újra hitelességét.
  6. Megjelenik egy új sor. Jelentése "futás" azt jelzi, hogy a tűzfal működik.

Ha valaha is ideiglenesen vagy véglegesen le kell tiltania a tűzfalat, javasoljuk, hogy kövesse az alábbi hivatkozáson található másik cikkünkben található utasításokat.

Az alapértelmezett szabályok és az elérhető zónák megtekintése

Még a normálisan működő tűzfalnak is megvannak a maga sajátos szabályai és elérhető zónái. A házirendek szerkesztésének megkezdése előtt javasoljuk, hogy ismerkedjen meg az aktuális konfigurációval. Ez egyszerű parancsokkal történik:

  1. A firewall-cmd --get-default-zone parancs segít meghatározni az alapértelmezett zónát.
  2. Az aktiválás után látni fogja új sor, ahol a kívánt paraméter jelenik meg. Például az alábbi képernyőképen a zóna aktívnak tekinthető "nyilvános".
  3. Egyszerre azonban több zóna is aktív lehet, és ezek külön interfésszel vannak társítva. Ezt az információt a firewall-cmd --get-active-zones segítségével találja meg.
  4. A firewall-cmd --list-all parancs megjeleníti az alapértelmezett zónához konfigurált szabályokat. Tekintse meg az alábbi képernyőképet. Látod, hogy az aktív zóna "nyilvános" szabály hozzárendelve "alapértelmezett"- alapértelmezett működés, interfész "enp0s3"és két szolgáltatást adtak hozzá.
  5. Ha meg szeretné tudni az összes elérhető tűzfalzónát, írja be a firewall-cmd --get-zones parancsot.
  6. Egy adott zóna paramétereit a firewall-cmd --zone=name --list-all segítségével határozza meg, ahol név- zóna neve.

A szükséges paraméterek meghatározása után folytathatja azok módosítását és hozzáadását. Nézzünk meg közelebbről néhányat a legnépszerűbb konfigurációk közül.

Interfész zónák beállítása

Amint azt a fenti információkból tudja, minden interfésznek saját alapértelmezett zónája van. Ott marad mindaddig, amíg a felhasználó vagy programozottan meg nem változtatja a beállításokat. Lehetőség van manuálisan egy interfészt egy munkamenetre átvinni egy zónába, és ez a sudo firewall-cmd --zone=home --change-interface=eth0 parancs aktiválásával történik. Eredmény "siker" jelzi, hogy az átvitel sikeres volt. Emlékeztetjük, hogy az ilyen beállítások a tűzfal újraindítása után azonnal visszaállnak.

Az ilyen paraméterek megváltoztatásakor figyelembe kell venni, hogy a szolgáltatások visszaállhatnak. Néhányuk például nem támogatja a működést bizonyos zónákban, bár az SSH elérhető "itthon", de az egyedi vagy speciális esetekben a szolgáltatás megtagadja a működést. A firewall-cmd --get-active-zones beírásával ellenőrizheti, hogy az interfész sikeresen kapcsolódott-e az új ághoz.

Ha vissza szeretné állítani a korábban megadott beállításokat, egyszerűen indítsa újra a tűzfalat: sudo systemctl restart firewalld.service .

Néha nem mindig kényelmes az interfész zónát csak egy munkamenetre módosítani. Ebben az esetben szerkesztenie kell a konfigurációs fájlt, hogy minden beállítás állandó jelleggel legyen megadva. Ehhez javasoljuk egy szövegszerkesztő használatát nano, amely a hivatalos tárolóból van telepítve a sudo yum install nano segítségével. Ezután már csak a következőket kell tennie:

  1. Nyissa meg a konfigurációs fájlt egy szerkesztőn keresztül a sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 beírásával, ahol eth0— a szükséges interfész neve.
  2. Erősítse meg a hitelességet fiókot további műveletek elvégzésére.
  3. Keresse meg a paramétert "ZÓNA"és módosítsa az értékét a kívánt értékre, például nyilvános vagy otthoni .
  4. Tartsa lenyomva a gombokat Ctrl+O a változtatások mentéséhez.
  5. Ne változtassa meg a fájl nevét, csak kattintson rá Belép.
  6. Kijárat szöveg szerkesztő keresztül Ctrl+X.

Mostantól az interfész zóna az Ön által megadott lesz a konfigurációs fájl következő szerkesztéséig. A frissített beállítások érvénybe léptetéséhez futtassa a sudo systemctl restart network.service és a sudo systemctl restart firewalld.service parancsot.

Az alapértelmezett zóna beállítása

Fentebb már bemutattunk egy parancsot, amely lehetővé tette az alapértelmezett zóna kiderítését. Ez egy tetszőleges paraméter beállításával is módosítható. Ehhez írja be a sudo firewall-cmd --set-default-zone=name a konzolba, ahol név— a szükséges zóna neve.

A parancs sikerességét a felirat jelzi "siker" külön sorban. Ezt követően az összes jelenlegi interfész a megadott zónához lesz kötve, hacsak a konfigurációs fájlok másként nem rendelkeznek.

Szabályok létrehozása programok és segédprogramok számára

A cikk legelején az egyes zónák működéséről beszéltünk. A szolgáltatások, segédprogramok és programok ilyen ágakban történő meghatározása lehetővé teszi, hogy mindegyikhez egyedi paramétereket alkalmazzon az egyes felhasználók igényeinek megfelelően. Először is javasoljuk, hogy ismerkedjen meg a jelenleg elérhető szolgáltatások teljes listájával: firewall-cmd --get-services .

Az eredmény közvetlenül a konzolon jelenik meg. Minden szerver szóközzel van elválasztva, és a listában könnyen megtalálhatja az Önt érdeklő eszközt. Ha szükséges szerviz hiányzik, azt külön kell telepíteni. Olvassa el a telepítési szabályokat a hivatalos szoftverdokumentációban.

A fenti parancs csak a szolgáltatásneveket mutatja. Részletes információk mindegyikhez a /usr/lib/firewalld/services útvonalon található egyedi fájlon keresztül jutunk hozzá. Az ilyen dokumentumok XML formátumúak, az SSH elérési útja például így néz ki: /usr/lib/firewalld/services/ssh.xml, és a dokumentum tartalma a következő:

SSH
A Secure Shell (SSH) egy protokoll a távoli gépekre való bejelentkezéshez és parancsok végrehajtásához. Biztonságos, titkosított kommunikációt biztosít. Ha azt tervezi, hogy távolról szeretné elérni a gépet SSH-n keresztül, tűzfalas felületen keresztül, engedélyezze ezt a lehetőséget. Ahhoz, hogy ez a beállítás hasznos legyen, telepítenie kell az openssh-server csomagot.

A szolgáltatástámogatás egy adott zónában manuálisan aktiválódik. BAN BEN "Terminál" ki kell adnia a sudo firewall-cmd --zone=public --add-service=http parancsot, ahol --zone=nyilvános- aktiválási zóna, és --add-service=http— a szolgáltatás neve. Felhívjuk figyelmét, hogy egy ilyen változás csak egy munkamenetre vonatkozik.

Az állandó hozzáadás a sudo firewall-cmd --zone=public --permanent --add-service=http segítségével történik, és az eredmény "siker" a művelet sikeres befejezését jelzi.

Kilátás teljes listaÁllandó szabályokat hozhat létre egy adott zónához, ha a listát egy külön konzolsorban jeleníti meg: sudo firewall-cmd --zone=public --permanent --list-services .

A szolgáltatáshoz való hozzáférés hiányának problémájának megoldása

Alapértelmezés szerint a tűzfalszabályok felsorolják a legnépszerűbb és biztonságos szolgáltatások ahogy megengedett, azonban néhány szabványos ill harmadik féltől származó alkalmazások blokkolja. Ebben az esetben a felhasználónak manuálisan kell módosítania a beállításokat a hozzáférési probléma megoldásához. Ezt két különböző módon lehet megtenni.

Port továbbítás

Mint tudod, mindent hálózati szolgáltatások használat adott port. A tűzfal könnyen észleli, és segítségével blokkolni is lehet. A tűzfal ilyen műveleteinek elkerülése érdekében meg kell nyitnia a szükséges portot a sudo firewall-cmd --zone=public --add-port=0000/tcp paranccsal, ahol --zone=nyilvános- kikötő terület, --add-port=0000/tcp— portszám és protokoll. A firewall-cmd --list-ports opció megjeleníti a nyitott portok listáját.

Ha meg kell nyitnia a tartományban lévő portokat, használja a sudo firewall-cmd --zone=public --add-port=0000-9999/udp sort, ahol --add-port=0000-9999/udp— a portok köre és azok protokollja.

A fenti parancsok csak az ilyen paraméterek használatának tesztelését teszik lehetővé. Ha ez sikerült, akkor ugyanazokat a portokat kell hozzáadnia az állandó beállításokhoz, és ezt a sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp vagy sudo firewall-cmd -- beírásával teheti meg. zone=public --permanent --add-port=0000-9999/udp . A nyitott állandó portok listája így néz ki: sudo firewall-cmd --zone=public --permanent --list-ports .

Szolgáltatás meghatározása

Mint látható, a portok hozzáadása nem okoz nehézséget, de az eljárás bonyolultabbá válik, ha nagyszámú alkalmazást használnak. Nehézsé válik az összes használt port követése, ezért jobb megoldás lenne a szolgáltatás meghatározása:


Csak annyit kell tennie, hogy kiválasztja a legmegfelelőbb módszert a szolgáltatáshoz való hozzáféréssel kapcsolatos problémák megoldására, és kövesse a kapott utasításokat. Amint látja, minden műveletet meglehetősen egyszerűen hajtanak végre, és nem szabadna fellépnie nehézségeknek.

Egyéni zónák létrehozása

Azt már tudja, hogy a FirewallD kezdetben nagyszámú különböző zónát hozott létre bizonyos szabályokkal. Vannak azonban olyan helyzetek, amikor rendszergazda létre kell hoznia egy egyéni zónát, mint pl "nyilvános web" telepített webszerverhez ill "privát DNS"— a DNS-kiszolgálóhoz. A két példa segítségével megvizsgáljuk az ágak hozzáadását:


Ebből a cikkből megtanulta, hogyan hozhat létre egyéni zónákat, és hogyan adhat hozzá szolgáltatásokat. Az alapértelmezett beállításukról és az interfészek hozzárendeléséről fentebb már volt szó, csak a megfelelő neveket kell megadni. Ne felejtse el újraindítani a tűzfalat minden állandó változtatás után.

Mint látható, a FirewallD tűzfal egy meglehetősen átfogó eszköz, amely lehetővé teszi a legrugalmasabb tűzfalkonfiguráció létrehozását. Csak annyit kell tennie, hogy a segédprogram elindul a rendszerrel, és a megadott szabályok azonnal megkezdik a munkájukat. Ezt a sudo systemctl enable firewalld paranccsal teheti meg.

A Centos 7 a CentOS 6-tal ellentétben új tűzfalat tartalmaz az adatbázisban - a tűzfalat. Letiltható és lecserélhető a jó öreg iptables-ra, de ha ennek nincs közvetlen előfeltétele, akkor jobb megszokni valami újat, mint a régire hagyatkozni. Ez nem Windows 10-et jelent jobb, mint a Windows 7, és a Windows XP jobb, mint a Windows 7 ;) Jó példa ebben a témában - selinux. Ha eleinte szinte mindenki (köztük én is) kikapcsolta és kicsit szidta is, akkor most már szinte senki nem tanácsolja, csak ha biztos benne, hogy szükséges. Éppen ellenkezőleg, sokan már megszokták (vagy kezdik megszokni) a semanage használatát. Nem fogjuk azonnal letiltani a tűzfalat, de próbáljuk ki, hogy ízlik.

A Firewall nem alapvetően más tűzfal. Ez egy újabb kiegészítő a netfilterhez, így ha van tapasztalatod az iptables-szal kapcsolatban, akkor egy kis probléma után könnyedén elkezdheted használni az új eszközt.

A tűzfal indítása és leállítása

Ellenőrizzük, hogy fut-e a tűzfal:

# systemctl állapot tűzfal

Itt lesz még több információ. Ha röviden igent (működik) vagy nemet szeretne mondani, tegye a következőket:

# firewall-cmd --state
futás

Ok, működik.

A tűzfal leállítása:

# systemctl állítsa le a tűzfalat

Automatikus indítás tiltása:

# systemctl letiltja a tűzfalat

Tűzfal indítása:

# systemctl elindítja a tűzfalat

Automatikus indítás engedélyezése:

# systemctl engedélyezze a tűzfalat

Tűzfal zónák

A Firewall széles körben használja a zóna fogalmát. Alapértelmezés szerint az összes érvényes zóna listája:

# tűzfal-cmd --get-zones
blokk dmz drop external home belső nyilvános nyilvános megbízható munka

A zónák rendeltetése (természetesen feltétellel):

  • drop - minden bejövő csomag válasz nélkül eldobásra kerül. Csak kimenő kapcsolatok engedélyezettek.
  • blokk – a bejövő kapcsolatokat a rendszer elutasítja (elutasítja), a válasz icmp-host-prohibited (vagy icmp6-adm-prohibited). Csak a rendszer által kezdeményezett kapcsolatok engedélyezettek.
  • nyilvános - alapértelmezett zóna. A névből egyértelmű, hogy ez a zóna a nyilvános hálózatokban való működésre irányul. Nem bízunk ebben a hálózatban, és csak bizonyos bejövő kapcsolatokat engedélyezünk.
  • külső - zóna az útválasztó külső interfészéhez (úgynevezett maszkolás). Csak az általunk meghatározott bejövő kapcsolatok engedélyezettek.
  • dmz - DMZ zóna, csak bizonyos bejövő kapcsolatok engedélyezettek.
  • munka - munka hálózati zóna. Továbbra sem bízunk senkiben, de nem annyira, mint korábban :) Csak bizonyos bejövő kapcsolatok engedélyezettek.
  • otthon - otthoni zóna. Bízunk a környezetben, de csak bizonyos bejövő kapcsolatok engedélyezettek
  • belső - belső zóna. Bízunk a környezetben, de csak bizonyos bejövő kapcsolatok engedélyezettek
  • megbízható – minden megengedett.

Az összes aktív zóna listája:

# tűzfal-cmd --get-active-zones
nyilvános
interfészek: enp1s0

Igen, a nyilvános zóna, amelyhez az enp1so hálózati interfész csatlakozik. Ezután hozzáadunk egy új portot a nyilvános zónához, amelyen az sshd lógni fog.

A hálózati interfész nevének ismeretében (például enp1s0) megtudhatja, hogy melyik zónához tartozik:

# firewall-cmd --get-zone-of-interface=enp1s0
nyilvános

Megtudhatja, hogy mely interfészek tartoznak egy adott zónához:

# firewall-cmd --zone=public --list-interfaces
enp1s0

Példa: az ssh engedélyezése nem szabványos porton

Engedjük meg a szerver elérését ssh-n keresztül a 2234/tcp porton, és ne a 22/tcp-n, ahogy az alapértelmezés szerint történik. Útközben érintsük meg egy kicsit a selinuxot.

Először nézzük meg, mi az, ami általában megengedett a szerverünkön:

# firewall-cmd --permanent --list-all
nyilvános (alapértelmezett)
interfészek:
források:
szolgáltatások: ssh dhcpv6-kliens
maszlag: nem
előremenő portok:
icmp-blokkok:
gazdag szabályok:

Még nem használok ipv6-ot, ezért azonnal eltávolítom a megfelelőt. szabály a tűzfalról:

# firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client

Engedjük meg végleg (hogy ne vesszen el újraindítás után) a 2234/tcp porthoz való csatlakozást (az sshd-t akasztjuk rá):

# firewall-cmd --permanent --zone=public --add-port=2234/tcp

Töltsük újra a szabályokat:

# firewall-cmd --reload

Ellenőrizzük:

# firewall-cmd --zone=public --list-ports
2234/tcp

Oké, a port nyitva van. Az sshd konfiguráció szerkesztése:

# nano /etc/ssh/sshd_config
...
2234-es port
...

# systemctl indítsa újra az sshd.service-t

De a SELinux, amelyet remélhetőleg nem tiltott le, nem engedi, hogy csatlakozzon az ssh-hoz nem szabványos port(Az sshd 2234/tcp portja nem szabványos). Kihagyhatja ezt a lépést, és ellenőrizheti a SELinux védelem működését, vagy azonnal beállíthat mindent:

# yum szemanázst biztosít
# yum install policycoreutils-python
# szemanage port -a -t ssh_port_t -p tcp 2234

Most minden rendben van. Ellenőrizzük az ssh kapcsolatot az új porton. Ha minden rendben van, zárja be a 22-es port elérését:

# firewall-cmd --permanent --zone=public --remove-service=ssh
# firewall-cmd --reload

Nézzük meg mi történt:

# firewall-cmd --list-all
nyilvános (alapértelmezett, aktív)
interfészek:
források:
szolgáltatások:
portok: 2234/tcp
maszlag: nem
előremenő portok:
icmp-blokkok:
gazdag szabályok:

Ez minden.

Különféle hasznos parancsok:

A blokkoló mód engedélyezése minden kimenő és bejövő csomaghoz:

# firewall-cmd --pánik bekapcsolva

Tiltsa le a blokkoló módot minden kimenő és bejövő csomagra:

# firewall-cmd --pánik ki

Nézze meg, hogy engedélyezve van-e az összes kimenő és bejövő csomag blokkolása:

# firewall-cmd --query-panic

A tűzfalszabályok újratöltése az aktuális kapcsolatok elvesztése nélkül:

# firewall-cmd --reload

Töltse be újra a tűzfalszabályokat és állítsa vissza az aktuális kapcsolatokat (csak probléma esetén ajánlott):

# firewall-cmd --complete-reload

Adjon hozzá egy hálózati interfészt a zónához:

# firewall-cmd --zone=public --add-interface=em1

Adjon hozzá egy hálózati interfészt a zónához (a tűzfal újraindítása után mentésre kerül):

# firewall-cmd --zone=public --permanent --add-interface=em1

Az ifcfg-enp1s0 konfigurációban megadhatja, hogy ez az interfész melyik zónához tartozik. Ehhez adja hozzá a ZONE=work értéket az /etc/sysconfig/network-scripts/ifcfg-enp1s0 fájlhoz. Ha a ZONE paraméter nincs megadva, akkor az alapértelmezett zóna lesz hozzárendelve (a DefaultZone paraméter az /etc/firewalld/firewalld.conf fájlban.

Porttartomány engedélyezése:

# firewall-cmd --zone=public --add-port=5059-5061/udp

Masquerade (masquerade, aka nat, aka...):

Ellenőrizd az állapotot:

# firewall-cmd --zone=external --query-masquerade

Bekapcsol:

# firewall-cmd --zone=external --add-masquerade

Itt meg kell jegyezni, hogy például engedélyezheti a maszkolást a nyilvános zónában.

A 22-es porton érkező üzenetek átirányítása másik gazdagépre:

# firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.23

A 22-es porton érkező üzenetek átirányítása egy másik gazdagépre a célport megváltoztatásával (22-ről 192.168.1.23:2055-re):

# firewall-cmd --zone=external /
--add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.23

Itt fejezem be, mert... végtelen számú példa lehet. Csak annyit teszek hozzá, hogy én személy szerint még nem alkottam meg teljesen a véleményemet a tűzfal-újításról, mert... Sok időbe telik, amíg megszokja a szintaxist, és ha az állatkertben különböző operációs rendszerű Linuxok vannak, akkor elsősorban a megszokással lehetnek problémák. De a tűzfal elsajátítása kitágítja a látókörét – gyakran megéri az erőfeszítést.

A tűzfal előnyei

A fő előnye, hogy kicsit elvonatkoztat az iptables láncoktól.A port forwarding engedélyezéséhez nem kell a FORWARD mellett a PREROUTING-ra vagy POSTROUTING-ra gondolni. Kapsz egy "IPtables API-t a gyártótól", valami ilyesmit. Ha engedélyezte a nat-ot, akkor nem mindegy, hogy a szabály pontosan hol található (az aktuális szabályok milyen sorozatszáma alatt). Egyszerűen jelzi - engedélyezze a nat-t az eth0-n. És semmi hülyeség;) Ez kényelmes lehet, ha rendszerezni kell webes felület tűzfalkezelés.

Lehetőség van az állapot ellenőrzésére (például, hogy a nat engedélyezve van-e vagy sem!). És használja ezt a szkriptekben is, például az alkalmazás logikájában. Nem tudom, hogyan kell állapotkérést (be/ki) létrehozni az iptables-ban. Természetesen megteheti például az iptables -L -t nat | parancsot grep "...", de el kell ismerned, ez egy kicsit különbözik a "firewall-cmd --zone=external --query-masquerade" futtatásától. Például több száz CentOS-os virtuális gép létezik, amelyekben a wan interfészek vagy hasonlók nevei kissé eltérhetnek. Így van egy univerzális parancsmagod, amely a várt eredményt adja a különböző gépeken.

A tűzfal hátrányai

A fő hátrány véleményem szerint az, hogy amikor megszokja az ember, elkezdi megszokni a „tiszta” iptables-t, ami Debianban, Ubuntuban és CentOS-ben, és általában mindenhol. Egyébként a Mikrotikban is hasonló a szintaxis és a láncok típusa, mint az iptables. Ez persze nem mindenkinek szól. A szakembernek pedig nem mindegy, hogy mivel dolgozik, ha konkrét feltételek vannak, azzal fog dolgozni, amije van. De... Retrográd ember vagyok, és kétségbeesetten ellenállok (nyilvánvaló előnyök hiányában) az új termékeknek, amelyeket minden jelentős szereplő saját magának valósít meg. A RedHatnek jól jönne, ha egyre több új szakember válna tűzfalászokká.

Ha pedig tűzfalra váltottál, akkor a tiszta iptables szintaxis csak hátráltat majd - káosz lesz, vagy egyszerűen tönkremegy a tűzfal, ha nem a szabványos tűzfal szintaxist használod a szabályok módosításához/hozzáadásához.

Nem akarok tűzfalat! Add vissza a régi iptable-imat!

Ha még mindig vissza akar térni a múltba, és lecseréli a tűzfalat iptablesra, akkor ezt egyáltalán nem nehéz megtenni:

Ez nem kezdőknek való hely:

# systemctl letiltja a tűzfalat
# systemctl állítsa le a tűzfalat

Telepítse a jó régi iptable-t:

# yum telepítse az iptables-services-t

Indítsa el a tűzfalat:

# systemctl elindítja az iptables-t
# systemctl start ip6tables

Automatikus indítás bekapcsoláskor:

# systemctl engedélyezi az iptables-t
# systemctl engedélyezése ip6tables

Az iptables szabályok mentése újraindítás után:

# /sbin/iptables-save > /etc/sysconfig/iptables
# /sbin/ip6tables-save > /etc/sysconfig/ip6tables

Vagy a régi módon:

# szolgáltatás iptables mentés

Az aktuális szabályok a következő fájlokban találhatók:
/etc/sysconfig/iptables
/etc/sysconfig/ip6tables

Az iptables újraindítása (például bármilyen módosítás után):

# systemctl indítsa újra az iptables.service-t


A CentoOS 7-től kezdve a forgalomszűrési szabályokat a segítségével konfigurálhatja új eszköz tűzfal. Használata javasolt az iptables szabályok kezelésére. A CentOS 8 rendszerben a szabványos iptables szűrőcsomag helyett az nftables keretrendszert használják, és amikor a tűzfalszabályokat tűzfalon keresztül konfigurálja, akkor valójában az nftables konfigurálása történik meg. Ebben a cikkben megvizsgáljuk a tűzfal telepítését, alapfogalmait és konfigurálását egy CentOS 8-at futtató kiszolgálón (a CentOS 7 ugyanaz).


TűzfalD– egy tűzfal, amely megvédi a szervert a nem kívánt forgalomtól, támogatja a dinamikus szabálykezelést (újraindítás nélkül) és az állandó tűzfalszabályok megvalósítását. Interfészként működik a és nftables számára. A FirewallD szinte minden Linux disztribúción használható.

Alapvető tűzfal fogalmak, zónák és szabályok

Mielőtt elkezdené a telepítést és a konfigurálást tűzfal, bemutatjuk a zónák fogalmát, amelyekkel meghatározzuk a bizalom szintjét különféle kapcsolatokat. Különböző zónákhoz tűzfal Különféle szűrési szabályokat alkalmazhat, aktív tűzfalbeállításokat adhat meg előre definiált szolgáltatások, protokollok és portok, porttovábbítás és bővített szabályok formájában.

Tűzfal zónánként szűri a bejövő forgalmat a zónára alkalmazott szabályoktól függően. Ha IP- a kérés feladójának címe megegyezik egy adott zóna szabályaival, akkor ezen a zónán keresztül kerül elküldésre a csomag. Ha a cím nem egyezik a szerveren konfigurált zónák egyikével sem, a csomagot az alapértelmezett zóna dolgozza fel. Telepítéskor tűzfal az alapértelmezett zónát hívják nyilvános.

A Firewall rendelkezik olyan zónákkal, amelyek előre konfigurálva vannak különböző szolgáltatások engedélyeivel. Használhatja ezeket a beállításokat, vagy létrehozhatja saját zónáit. A tűzfal telepítésekor létrehozott alapértelmezett zónák listája (a /usr/lib/firewalld/zones/ könyvtárban tárolva):

csepp a bizalom minimális szintje. Minden bejövő kapcsolat válasz nélkül blokkolva van, csak a kimenő kapcsolatok engedélyezettek;
Blokk a zóna hasonló az előzőhöz, de a bejövő kérések elutasításakor az icmp-host-prohibited Ipv4 vagy icmp6-adm-prohibited for Ipv6 üzenet kerül elküldésre;
nyilvános nyilvános, nem megbízható hálózatokat képvisel. A kiválasztott bejövő kapcsolatokat egyénileg engedélyezheti;
külső külső hálózatok, ha tűzfalat használnak átjáróként. NAT-maszkolásra van konfigurálva, így a belső hálózat privát, de elérhető marad;
belső a külső zóna antonimája. A fogadó kellő szintű bizalommal rendelkezik, számos kiegészítő szolgáltatás elérhető;
dmz DMZ-ben található számítógépekhez használják (elszigetelt számítógépek, amelyek nem férnek hozzá a hálózat többi részéhez). Csak bizonyos bejövő kapcsolatok engedélyezettek;
munka zóna a munkagépekhez (a hálózat legtöbb számítógépe megbízható);
itthon otthoni hálózati zóna. A legtöbb PC megbízható, de csak bizonyos bejövő kapcsolatok támogatottak;
megbízott megbízik a hálózat összes gépében. A rendelkezésre álló lehetőségek közül a legnyitottabb, tudatos használatot igényel.

BAN BEN tűzfal két szabálykészletet használnak – állandó és ideiglenes. Az ideiglenes szabályok a szerver újraindításáig működnek. Alapértelmezés szerint szabályok hozzáadásakor tűzfal, a szabályok ideiglenesnek minősülnek ( futásidő). Ha állandó jelleggel szeretne hozzáadni egy szabályt, akkor a zászlót kell használnia - állandó. Ezek a szabályok a szerver újraindítása után lépnek életbe.

Tűzfal telepítése és engedélyezése a CentOS rendszeren

A CentOS 7/8-ban a tűzfal alapértelmezés szerint telepítve van az operációs rendszerrel. Ha eltávolította, és szeretné telepíteni a tűzfalat, használhatja standard menedzser/dnf:

# yum telepítse a tűzfalat -y - a Centos 7-hez
# dnf telepítse a tűzfalat -y - a Centos 8-hoz

A démonnak tűzfal automatikusan elindult, amikor a szerver elindult, hozzá kell adnia a következőhöz:

# systemctl engedélyezze a tűzfalat

És fuss:

# systemctl elindítja a tűzfalat

Ellenőrizze a szolgáltatás állapotát:

# systemctl állapot tűzfal

● firewalld.service - firewalld - dinamikus tűzfal démon Betöltve: betöltve (/usr/lib/systemd/system/firewalld.service; engedélyezve; gyártó előre beállított: engedélyezve) Aktív: aktív (fut) 2019-10-14 14:54 hétfő óta :40 +06; 22 másodperce Dokumentumok: man:firewalld(1) Fő PID: 13646 (tűzfal) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid Október 14. 14:54:40 server.vpn.ru systemd: Firewalld indítása – dinamikus tűzfaldémon... Oct 14 14:54:40 server.vpn.ru systemd: Firewalld – dinamikus tűzfaldémon elindítása.

Vagy a következő paranccsal:

# firewall-cmd --state

A firewall-cmd parancs az nftables/iptables tűzfal frontendje.

# firewall-cmd --state

Munka a tűzfalszabályokkal

Alapértelmezett szabályok:

A tűzfalszabályok beállítása előtt ellenőriznie kell, hogy melyik zónát használja alapértelmezés szerint:

# firewall-cmd --get-default-zone

Mivel most telepítettük a tűzfalat, és még nem konfiguráltuk, van egy alapértelmezett zónánk nyilvános.

Ellenőrizzük az aktív zónát. Van még egy - nyilvános:

# tűzfal-cmd --get-active-zones

Nyilvános felületek: eth0

Mint látható, az eth0 hálózati interfészt a zóna vezérli nyilvános.

Az alapvető szabályok megtekintéséhez írja be:

# firewall-cmd --list-all

Nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincsenek interfészek: eth0 források: szolgáltatások: dhcpv6-kliens ssh portok: protokollok: maszkolás: nincsenek továbbító portok: forrásportok: icmp-blokkok: gazdag szabályok:

A listából látható, hogy a DHCP klienshez és az ssh-hoz kapcsolódó szokásos műveletek hozzáadásra kerültek ehhez a zónához.

Elérhető zónák

Az összes zóna listájának megtekintéséhez futtassa a parancsot:

# tűzfal-cmd --get-zones

A következő listát kaptam:

A dmz letiltása külső otthoni belső nyilvános, megbízható munka

Egy adott zóna szabályainak ellenőrzéséhez hozzá kell adni a zászlót - zóna.

# firewall-cmd --zone=home --list-all

Otthoni cél: alapértelmezett icmp-block-inverzió: nincsenek csatolók: források: szolgáltatások: dhcpv6-kliens mdns samba-kliens ssh portok: protokollok: maszkolás: nincsenek továbbító portok: forrásportok: icmp-blokkok: gazdag szabályok:

Az összes zóna szabályai a következő paranccsal tekinthetők meg:

# firewall-cmd --list-all-zones

A lista meglehetősen nagy lesz, mivel sok zóna lehet.

Módosítsa az alapértelmezett zónát.

Alapértelmezés szerint az összes hálózati interfész a zónában található nyilvános, de bármelyik zónába átvihetők a következő paranccsal:

# firewall-cmd --zone=home -change-interface=eth0

A paraméter után --zóna= jelzi a kívánt zónát.

Az alapértelmezett zóna megváltoztatásához a következő parancsot kell használnia:

# firewall-cmd --set-default-zone=home

Pályázati szabályok hozzáadása

Egy alkalmazás portjának megnyitásához hozzáadhat egy szolgáltatást a kivételekhez. Az elérhető szolgáltatások listájának megjelenítése:

A kimenet nagyszámú szolgáltatást fog tartalmazni. részletes információk a szolgáltatásról tartalmazza xml fájlt. Ezek a fájlok a könyvtárban találhatók /usr/lib/firewalld/services.

Például:

# cd /usr/lib/firewall/services

Levelezés (SMTP) Ez az opció lehetővé teszi a bejövő üzeneteket SMTP levél szállítás. Ha szükséged van engedélyezze ezt az opciót, hogy a távoli gazdagépek közvetlenül csatlakozhassanak az Ön gépéhez levelek kézbesítéséhez. Ezt nem kell engedélyeznie, ha POP3 vagy IMAP segítségével gyűjti össze leveleit internetszolgáltatója szerveréről, vagy ha olyan eszközt használ, mint a fetchmail. Vegye figyelembe, hogy a nem megfelelően konfigurált SMTP-szerver lehetővé teheti a távoli gépek számára, hogy az Ön szerverét használják küldésre. levélszemét.

Az XML fájl tartalmazza a szolgáltatás leírását, a protokollt és a portszámot, amely a tűzfalban megnyílik.

Szabályok hozzáadásakor használhatja a paramétert --add-szolgáltatás hozzáférés megnyitása egy adott szolgáltatáshoz:

# firewall-cmd --zone=public --add-service=http

# firewall-cmd --zone=public --add-service=https

A szabályok hozzáadása után ellenőrizheti, hogy a szolgáltatások hozzáadásra kerültek-e a megadott zónához:

# firewall-cmd --zone=public --list-services

Dhcpv6-kliens http https ssh

Ha állandóvá szeretné tenni ezeket a szabályokat, hozzá kell adnia a paramétert hozzáadáskor -állandó.

Szolgáltatás eltávolítása egy zónából:

# firewall-cmd --permanent --zone=public --remove-service=http

Dhcpv6-kliens https ssh teszt

Ha hozzá szeretné adni a szolgáltatást a kivételekhez, létrehozhat egy fájlt xml magad, és töltsd ki. Bármely szolgáltatásból másolhat adatokat, módosíthatja a nevet, leírást és portszámot.

Másoljuk a fájlt smtp.xml a felhasználói szolgáltatásokkal való munka címtárába:

# cp /usr/lib/firewalld/services/smtp.xml /etc/firewalld/services

Módosítsa a szolgáltatás leírását a fájlban.

Magamat xml fájl A szolgáltatás nevére is át kell neveznie. Ezt követően újra kell indítania a tűzfalat, és ellenőriznie kell, hogy szolgáltatásunk szerepel-e a listában:

Felhívtam a szervizt tesztés megjelent a listában:

Syslog-tls telnet teszt tftp

Mostantól bármelyik zónához hozzáadhatja a létrehozott szolgáltatást:

# firewall-cmd --zone=public --add-service=test --permanent

# firewall-cmd --zone=public --permanent --list-services

Dhcpv6-kliens http https ssh teszt

Ha nem találta a listában a kívánt szolgáltatást, a következő paranccsal megnyithatja a tűzfalon a kívánt portot:

# firewall-cmd --zone=public -add-port=77/tcp - 77-es port megnyitása tcp
# firewall-cmd --zone=public -add-port=77/udp - 77-es port megnyitása udp
# firewall-cmd --zone=public -add-port=77-88/udp - nyitott porttartomány 77-88 udp
# firewall-cmd --zone=public -list-ports - ellenőrizze az engedélyezett portok listáját

ICMP válaszok blokkolása/engedélyezése:

# firewall-cmd --zone=public --add-icmp-block=echo-reply
# firewall-cmd --zone= public --remove-icmp-block=echo-reply

Hozzáadott port eltávolítása:

# firewall-cmd --zone=public -remove-port=77/udp - távolítsa el a 77-es ideiglenes szabályt udp

# firewall-cmd --permanent --zone=public -remove-port=77/udp - az állandó szabály eltávolítása

Saját zónák hozzáadása

Létrehozhatod a saját zónádat (úgy hívom a miénk):

# firewall-cmd --permanent --new-zone=our

Új zóna létrehozása, valamint szolgáltatás létrehozása után újraindítás szükséges tűzfal:

# firewall-cmd --reload

# tűzfal-cmd --get-zones

dmz tiltása külső otthon belső belső megbízható munkánk

Zóna a miénk elérhető. Szolgáltatásokat adhat hozzá, vagy adott portokat nyithat meg.

Tűzfal: IP-címek blokkolása, kivételek létrehozása

Megbízható IP-címeket adhat hozzá a tűzfalkivételekhez, vagy blokkolhatja a nem kívántakat.

Adott IP-cím (például 8.8.8.8) hozzáadásához a szerverhez a következőn keresztül tűzfal, használja a parancsot:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.8.8" accept"

Ellenőrizze a területet és győződjön meg róla IP hozzáadva a kivételekhez a gazdag szabályokban:

Nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincsenek csatolók: eth0 források: szolgáltatások: dhcpv6-kliens http https ssh tesztportok: protokollok: maszkolás: nincsenek előre irányuló portok: forrásportok: icmp-blokkok: gazdag szabályok: szabály family="ipv4" source address="8.8.8.8" elfogadja

Blokkolni IP, cserélni kell elfogad tovább elutasít:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.4.4" reject"

# firewall-cmd --zone=public --list-all

Nyilvános (aktív) cél: alapértelmezett icmp-block-inverzió: nincsenek csatolók: eth0 források: szolgáltatások: dhcpv6-kliens http https ssh tesztportok: protokollok: maszkolás: nincsenek előre irányuló portok: forrásportok: icmp-blokkok: gazdag szabályok: szabály family="ipv4" source address="8.8.8.8" accept rule family="ipv4" source address="8.8.4.4" reject

Egy adott szolgáltatást csak egy adott IP-címről érkező kérésekhez engedélyezhet:

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="10.10.1.0/24" service name="https" accept"

Ha sürgősen blokkolnia kell a szerverhez intézett összes kérést, használja a pánik parancsot:

# firewall-cmd --pánik bekapcsolva

A pánik módot a következő paranccsal tilthatja le:

# firewall-cmd --pánik ki

Vagy a szerver újraindításával.

Lezárhatja a tűzfal konfigurációját helyi szolgáltatások Val vel root jogok nem tudták megváltoztatni az Ön által létrehozott tűzfalszabályokat:

# firewall-cmd --lockdown-on

A blokkoló mód letiltása:

# firewall-cmd --lockdown-off

Port továbbítás a tűzfalban

A tűzfalban létrehozhat egy porttovábbítási szabályt. A 443-as port 9090-re történő továbbítása:

# firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=9090 --permanent

Porttovábbítási szabály eltávolítása:

# firewall-cmd --zone=public --remove-forward-port=port=443:proto=tcp:toport=9090



Kapcsolódó kiadványok