Linux iptables Firewall egyszerűsített példák
az előző bejegyzésben arról beszéltünk, hogyan lehet biztosítani a Linux kiszolgálót a keményedés legjobb gyakorlataival. Néhányan megkérdezték a tűzfal szakaszról, amely rövid bevezetés volt az iptables tűzfalba. Ma részletesen megvitatjuk a Linux iptables tűzfalat, valamint azt, hogyan lehet a szerver forgalmát a félelmetes tűzfal segítségével biztosítani.
Tartalomjegyzék
Iptables a CentOS 7
Ha a CentOS 7, azt találjuk, hogy firewalld kezeli iptables, szóval, ha vissza akarsz menni, hogy iptables, ne pedig maszk firewalld.
$ systemctl stop firewalld$ systemctl mask firewalld
Ezután telepítse az iptables szolgáltatást és engedélyezze azt:
$ yum install iptables-services$ systemctl enable iptables
akkor elindíthatja:
$ systemctl start iptables
hogyan működik a Linux tűzfal
ipt tűzfalfunkciók a a netfilter keretrendszer, amely elérhető a Linux kernel csomagok szűrésére.
Tűzfaltípusok
kétféle tűzfal létezik:
a hontalan tűzfal minden csomagot önmagában dolgoz fel, ez azt jelenti, hogy nem látja ugyanazon kapcsolat többi csomagját.
Stateful firewall ez a fajta tűzfal törődik az összes rajta áthaladó csomaggal, így ismeri a kapcsolat állapotát. Nagyobb ellenőrzést biztosít a forgalom felett.
a Netfilter táblázatokat tartalmaz. Ezek a táblázatok láncokat tartalmaznak, a láncok pedig egyedi szabályokat tartalmaznak.
Ha egy csomag megfelel bármely szabálynak, az iptables a szabály műveletet alkalmazza a csomagra.
a műveletek lehetnek: fogadja el, utasítsa el, figyelmen kívül hagyja, vagy adja át a csomagot más szabályoknak a további feldolgozáshoz.
a Netfilter a bejövő vagy kimenő forgalmat az IP-cím és a portszám segítségével tudja feldolgozni.
az iptables parancs kezeli és konfigurálja a Netfiltert.
a tűzfalparancsok írásának megkezdése előtt egy kicsit meg kell értenünk a tűzfal szerkezetét, hogy könnyen írhassunk tűzfalszabályokat.
iptables firewall tables
a Netfilter három táblával rendelkezik, amelyek a feldolgozás szabályait hordozhatják.
az iptables szűrőasztal a forgalom feldolgozásának fő táblája.
a második a NAT táblázat, amely kezeli a NAT szabályokat.
a harmadik táblázat a mangle táblázat a csomagok darabolásához.
Table chains
a fent említett táblázatok minden táblázata láncokat tartalmaz; ezek a láncok az iptables szabályainak tartályai.
a szűrőasztal előre -, bemenet-és kimeneti láncokat tartalmaz. Létrehozhat egy egyéni láncot a szabályok mentéséhez.
Ha egy csomag érkezik a gazdagéphez, az iptables bemeneti láncszabályokkal dolgozza fel.
Ha a csomag egy másik gazdagépre megy, ez azt jelenti, hogy a kimeneti lánc szabályai feldolgozzák.
az iptables a továbbítási láncot használja olyan csomagok kezelésére, amelyek hozzáfértek a gazdagéphez, de egy másik gazdagéphez vannak rendelve.
Chain policy
a szűrőtáblázat minden láncának van egy házirendje. A házirend az iptables alapértelmezett művelete.
a politika lehet csepp, elutasítja, és elfogadja.
az elfogadás házirend lehetővé teszi a csomagok számára a tűzfal átadását. A DROP policy csepp egy csomagot anélkül, hogy tájékoztatná az ügyfelet. Az elutasítási szabályzat szintén ejti a csomagot, és tájékoztatja a feladót.
biztonsági szempontból le kell dobnia a gazdagéphez érkező összes csomagot, és csak azokat a csomagokat kell elfogadnia, amelyek megbízható forrásokból származnak.
iptables szabályok hozzáadása
az iptables paranccsal új szabályt adhat hozzá:
$ iptables -A INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT
törjük darabokra ezt a parancsot, hogy mindent megértsünk róla.
Az-a azt jelenti, hogy új szabályt adunk hozzá. Alapértelmezés szerint az iptables minden új szabályt hozzáad a szűrőasztalhoz, hacsak nem ad meg egy másik táblát.
az-i zászló megadja azt az eszközt, amelyre a szabályt alkalmazni fogja. Ha nem ad meg egy eszközt, az iptables az eszköztől függetlenül minden bejövő forgalomra alkalmazza a szabályt.
A-P zászló megadja a feldolgozni kívánt csomag protokollját, ami esetünkben TCP.
a-dport zászló adja meg a célportot, ami 80.
A-d megadja a cél IP-címét, ami 1.2.3.4. Ha nincs megadva rendeltetési IP-cím, a szabály az eth1 összes bejövő forgalmára vonatkozik, IP-címtől függetlenül.
A-j megadja a végrehajtandó műveletet vagy ugrási műveletet. Itt elfogadjuk a csomagokat az elfogadás házirend használatával.
a fenti szabály lehetővé teszi a bejövő HTTP forgalmat, amely a 80-as porton található.
mi a helyzet a kimenő forgalom engedélyezésével?
$ iptables -A OUTPUT -o eth1 -p tcp --sport 80 -j ACCEPT
használhatja a-a zászlót, hogy szabályokat adjon a kimeneti lánchoz.
A-o jelzőt a kimenő forgalomhoz használt eszközhöz használják.
a-sport zászló megadja a forrásportot.
használhatja a szolgáltatás nevét, mint a http vagy https helyett a numerikus port számát sport vagy dport. Minden szolgáltatás neve az / etc / services fájlban található.
a portszám helyett a szolgáltatás nevét kell használnia, ami megkönnyíti az olvasási szabályokat.
iptables rules order
az iptables új szabályokat helyez el a lánc végén. Felveheti azt a tetejére az-I opció használatával.
a szabályok sorrendje számít, ahogy most látni fogja. Akkor helyezze be a szabályokat, hogy pontosan hol szeretné az I zászló.
nézze meg a következő szabályokat, hogy megértse, hogyan fontosak a szabályok megrendelése:
$ iptables -I INPUT 3 -i eth1 -p udp -j ACCEPT$ iptables -I INPUT 4 -i eth1 -p udp --dport 80 -j DROP
az első szabály elfogadja az összes UDP forgalmat az eth1-re, a 3-as szám pedig a szabályrend.
a második szabály csökkenti a 80-as portba belépő forgalmat.
az első szabály elfogadja az összes forgalmat, majd a második szabály, amely le kell állítania a forgalmat, semmit sem fog tenni, mivel az iptables áthalad a forgalomon az első szabályban.
a szabályoknak értelmesnek kell lenniük, mivel a láncban lévő szabályok sorrendje számít.
List iptables rules
felsorolhatja a szabályokat egy láncban a-L flag használatával:
$ iptables -L INPUT
meg tudja mutatni a szabályok sorszámát a –line-numbers használatával:
$ iptables -L INPUT --line-numbers
a lista a szolgáltatások nevét mutatja. A-n opció használata helyett portszámokat jeleníthet meg:
$ iptables -L INPUT -n --line-numbers
a fenti szabály gyorsabbá teszi a listát, mert megakadályozza az iptables DNS felbontását és a szolgáltatáskeresést.
felsorolhatja az összes szabályt az összes láncra, mint ez:
$ iptables -L -n --line-numbers
ahhoz, hogy megkapja az egyes szabályok által feldolgozott csomagokat, használhatja a-v zászlót:
$ iptables -L -v
a számlálókat nullára állíthatja a-Z zászló segítségével.
most hozzáadhatunk egy új szabályt bármelyik lánchoz, amit akarunk, beilleszthetjük a szabályt egy adott sorrendbe, és felsorolhatjuk a lánc vagy az összes lánc szabályait, de mi van a szabály törlésével?
szabályok törlése
törölhet egy szabályt-D zászlóval:
$ iptables -D INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT
Ez a parancs törli a korábban megadott HTTP szabályt.
mielőtt törölne egy szabályt, csak győződjön meg róla, hogy a szabály specifikációja felsorolja, majd törölje.
a szabályt a rendelési szám segítségével törölheti a szabály SPECIFIKÁCIÓK írása helyett.
$ iptables -D INPUT 2
törölheti az összes szabályt egy adott láncban A-F zászló használatával, ami azt jelenti, hogy az összes szabályt öblítse le.
$ iptables -F INPUT
Ha elfelejtette megemlíteni a lánc nevét-F zászló használatakor, akkor az összes láncszabály törlődik.
szabályok cseréje
a meglévő szabályokat saját szabályokkal helyettesítheti-R zászló:
$ iptables -R INPUT 1 -i eth1 -p tcp --dport httpht -d 1.2.3.4 -j ACCEPT
Ez a parancs a bemeneti lánc első szabályát helyettesíti a gépelt szabálygal.
meghatározott táblázat felsorolása
egy adott táblázat felsorolásához használja a-T zászlót a táblázat nevével:
$ iptables -L -t nat
itt felsoroljuk a Szabályokat a nat táblázatban.
Iptables User Defined Chain
felhasználó által definiált lánc létrehozásához használja a-N zászlót.
$ iptables -N MY_CHAIN
is, akkor nevezze át a-E zászló.
$ iptables -E MY_CHAIN NEW_NAME
és törölheti a felhasználó által definiált láncot-X zászló használatával.
$ iptables -X MY_CHAIN
ha nem említi a lánc nevét-X zászló használatakor, akkor törli az összes felhasználó által definiált láncot. Nem lehet törölni a beépített láncok, mint a bemeneti vagy kimeneti.
átirányítás egy felhasználó által definiált láncra
a csomagokat átirányíthatja egy felhasználó által definiált láncra, például a beépített láncokra a-j zászló használatával.
$ iptables -A INPUT -p icmp -j MY_CHAIN
a fenti szabály átirányítja az összes ICMP forgalmat a MY_CHAIN láncra.
A láncok alapértelmezett házirendjének beállítása
használhatja a-P zászlót egy adott lánc alapértelmezett házirendjének beállításához. Az alapértelmezett házirend lehet elfogadás, elutasítás és ejtés.
$ iptables -P INPUT DROP
tehát most a bemeneti lánc minden csomagot eldob, hacsak nem ír egy szabályt a bejövő forgalom engedélyezésére.
SYNAR
a támadó csak a TCP kézfogás befejezése nélkül küld SYN csomagokat, ennek eredményeként a fogadó gazdagépnek sok nyitott kapcsolata lenne, a szerver pedig túl elfoglalt ahhoz, hogy válaszoljon más ügyfelekre.
tudjuk használni a limit modul iptables tűzfal, hogy megvédjen minket a SYN árvíz.
$ iptables -A INPUT -i eth1 -p tcp --syn -m limit --limit 10/second -j ACCEPT
itt csak másodpercenként 10 SYN csomagot adunk meg. Ezt az értéket a hálózati igényeknek megfelelően állíthatja be.
Ha ez korlátozza a hálózatot, használhatja a SYN cookie-kat.
In
/etc/sysctl.conf
file and add this line:
net.ipv4.tcp_syncookies = 1
majd save and reload.
$ sysctl -p
csepp érvénytelen Állapotcsomagok
Az érvénytelen állapotcsomagok olyan csomagok, amelyek nem tartoznak semmilyen kapcsolathoz, és azokat eldobja.
$ iptables -A INPUT -m state --state INVALID -j DROP
Ez a szabály az összes bejövő érvénytelen állapotcsomagot eldobja.
Drop fragmentált csomagok
a fragmentált csomagok nagy hibás csomagok törött darabjai, ezért szabályokat kell írni, hogy eldobják őket.
az-f zászló azt mondja az iptables tűzfalnak, hogy válassza ki az összes töredéket. Tehát, ha nem használ iptables mint router, akkor csepp töredezett csomagokat.
$ iptables -A INPUT -f -j DROP
iptables szabályok mentése
ha újraindítja a kiszolgálót, akkor elveszíti az összes írt szabályt, tehát hogyan kell őket megtartani?
az iptables-save paranccsal mentheti az összes szabályt, ha CentOS vagy Red Hat-ot használ.
iptables-save > /etc/sysconfig/iptables
a CentOS 7-en mentheti az ilyen szabályokat:
$ service iptables save
csak olyan konkrét táblákat menthet, mint a szűrőasztal:
$ iptables-save -t filter
is használhatja iptables-restore visszaállítani a szabályokat.
A Debian alapú disztribúciókon az iptables-perzisztens csomag segítségével mentheti és visszaállíthatja a szabályokat.
először telepítse:
$ apt-get install iptables-persistent
ezután mentheti és visszaállíthatja a szabályokat:
$ netfilter-persistent save
$ netfilter-persistent reload
remélem, könnyen megtalálja az iptables tűzfalat. Gyere vissza.
köszönöm.
a LikeGeeks alapítója. 2010 óta dolgozom Linux rendszergazdaként. Én vagyok a felelős a Linux szerverek karbantartásáért, biztonságáért és hibaelhárításáért világszerte több ügyfél számára. Szeretek shell és Python szkripteket írni, hogy automatizáljam a munkámat.
Leave a Reply