A hálózati forgalom kezelése az egyik legnehezebb feladat, amellyel a rendszergazdáknak foglalkozniuk kell. Meg kell konfigurálja a tűzfalat oly módon, hogy eleget tesz a rendszer és a felhasználók követelményeinek mind a bejövő, mind a kimenő kapcsolatokra, anélkül, hogy sebezhetővé tenné a rendszert a támadásokkal szemben.
Ez az, ahol iptables
hasznos lesz. Iptables egy Linux parancssori tűzfal, amely lehetővé teszi a rendszergazdák számára a bejövő és kimenő forgalom kezelését egy konfigurálható táblázatszabály segítségével.
Iptables táblázatokat használ, amelyek láncokat tartalmaznak, amelyek beépített vagy felhasználó által meghatározott szabályokat tartalmaznak. Hála nekik, a rendszergazda megfelelően tudja szűrni a rendszer hálózati forgalmát.
Az iptables kézikönyve szerint jelenleg 3 típusú táblázat létezik:
SZŰRŐ
- ez az alapértelmezett táblázat, amely tartalmazza a beépített láncokat: NAT
- táblázat, amely akkor jelenik meg, amikor egy csomag új kapcsolatot próbál létrehozni. A következő beépített funkcióval rendelkezik: MÁNGORLÓ
- ez a táblázat a csomagok módosítására szolgál. A kernel verzióig 2.4 ennek a táblázatnak csak két lánca volt, de most 5: Ebben a cikkben néhány hasznos parancsot láthat, amelyek segítenek a Linux doboz tűzfalának kezelésében az iptables segítségével. E cikk alkalmazásában egyszerűbb parancsokkal kezdem, és a végére bonyolultabbra megyek.
Először is tudnia kell, hogyan kell kezelni az iptables szolgáltatást különböző Linux disztribúciókban. Ez meglehetősen egyszerű:
Cent/RHEL 7 és Fedora 22+ rendszeren # systemctl indítsa el az iptables -t. # systemctl állítsa le az iptables -t. # systemctl indítsa újra az iptables -t.
Cent/RHEL 6/5 és Fedora # /etc/init.d/iptables start # /etc/init.d/iptables stop. # /etc/init.d/iptables indítsa újra.
Ha ellenőrizni szeretné a meglévő szabályokat, használja a következő parancsot:
# iptables -L -n -v.
Ennek az alábbihoz hasonló kimenetet kell visszaadnia:
Láncbemenet (házirend ACCEPT 1129K csomag, 415 M bájt) pkts bájt cél prot opt in out forrás cél 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 ELFOGADOD udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
Lánc ELŐRE (házirend elfogadása 0 csomag, 0 bájt) pkts bájt cél prot opt in out forrás cél 0 0 ACCEPT all - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
Lánc OUTPUT (házirend ACCEPT 354K csomag, 185M bájt) pkts bájt cél prot opt in out forrás cél
Ha inkább egy adott táblázat szabályait szeretné ellenőrizni, akkor használja a -t
opciót, majd az ellenőrizni kívánt táblázatot. Például ellenőrizze a szabályokat a NAT
táblázatot használhatja:
# iptables -t nat -L -v -n.
Ha szokatlan vagy visszaélésszerű tevékenységet észlel egy IP -címről, akkor az alábbi szabály segítségével blokkolhatja azt:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
Ahol változtatni kell "xxx.xxx.xxx.xxx"
a tényleges IP -címmel. Legyen nagyon óvatos a parancs futtatásakor, mivel véletlenül blokkolhatja saját IP -címét. Az -A
opció hozzáfűzi a szabályt a kiválasztott lánc végéhez.
Ha csak letiltani szeretné TCP forgalmat az adott IP -címről, használhatja a -p
opciót, amely megadja a protokollt. Így a parancs így fog kinézni:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
Ha úgy döntött, hogy többé nem szeretné blokkolni az adott IP -címről érkező kéréseket, akkor a következő paranccsal törölheti a letiltási szabályt:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP.
Az -D
opció törli egy vagy több szabályt a kiválasztott láncból. Ha inkább a hosszabb opciót szeretné használni, akkor használhatja --töröl
.
Néha érdemes blokkolni a bejövő vagy kimenő kapcsolatokat egy adott porton. Ez egy jó biztonsági intézkedés, és a tűzfal beállításakor valóban gondolni kell erre a kérdésre.
A kimenő kapcsolatok blokkolása egy adott porton:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP.
A bejövő kapcsolatok engedélyezéséhez használja:
# iptables -A INPUT -p tcp --dport xxx -j ACCEPT.
Mindkét példában változik "xxx"
az engedélyezni kívánt porttal. Ha blokkolni szeretne UDP forgalom helyett TCP, egyszerűen változtass "tcp"
val vel "udp"
a fenti iptables szabályban.
A használatával egyszerre több portot is engedélyezhet multiport, alább megtalálhatja a bejövő és kimenő kapcsolatokra vonatkozó ilyen szabályt:
# iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport --sport 22,80,443 -j ACCEPT.
Érdemes korlátozni bizonyos kapcsolatokat egy adott porton egy adott hálózatra. Tegyük fel, hogy engedélyezni szeretné a kimenő kapcsolatokat a porton 22
hálózatba kötni 192.168.100.0/24
.
Ezt a paranccsal teheti meg:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT.
Egyes munkáltatók szeretik letiltani a hozzáférést Facebook dolgozóiknak. Az alábbiakban egy példa látható a Facebook forgalmának blokkolására.
jegyzet: Ha Ön rendszergazda, és alkalmaznia kell ezeket a szabályokat, ne feledje, hogy a kollégái esetleg nem beszélnek veled :)
Először keresse meg a Facebook által használt IP -címeket:
# host facebook.com A facebook.com címe 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
Ezután letilthatja ezt a Facebook -hálózatot:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP.
Ne feledje, hogy a Facebook által használt IP -címtartomány országonként eltérő lehet.
Néha érdemes átirányítani az egyik szolgáltatás forgalmát egy másik portra. Ezt a következő paranccsal érheti el:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --port 25 -j REDIRECT -a 2525 -ös porthoz.
A fenti parancs továbbítja az összes bejövő forgalmat a hálózati interfészen eth0
, kikötőből 25
kikötőbe 2525
. A portokat megváltoztathatja a szükséges portokkal.
Előfordulhat, hogy az IP -címek túl sok kapcsolatot kérnek a webhely webportjaihoz. Ez számos problémát okozhat, és az ilyen problémák megelőzése érdekében a következő szabályt használhatja:
# iptables -A INPUT -p tcp --port 80 -m limit -limit 100/perc -limit -burst 200 -j ACCEPT.
A fenti parancs korlátozza a bejövő kapcsolatokat percenként 100
és beállít egy határt 200
. A limitet és a limit-sorozatot saját igényei szerint szerkesztheti.
Bizonyos rendszergazdák biztonsági okokból szeretnék blokkolni a bejövő ping kéréseket. Bár a fenyegetés nem olyan nagy, jó tudni, hogyan lehet letiltani az ilyen kéréseket:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
Loopback hozzáférés (hozzáférés innen: 127.0.0.1
) fontos, és mindig hagyja aktív állapotban:
# iptables -A INPUT -i lo -j ACCEPT. # iptables -A KIMENET -o lo -j ACCEPT.
Ha naplózni szeretné a leesett csomagokat a hálózati interfészen eth0
, a következő parancsot használhatja:
# iptables -A INPUT -i eth0 -j LOG --log -prefix "IPtables drop csomagok:"
Ezt követően módosíthatja az értéket "-napló-előtag"
valamivel az Ön választása szerint. Az üzenetek bejelentkeznek /var/log/messages
és ezekkel kereshet:
# grep "Az IPtable dobott csomagokat:"/var/log/messages.
A következő módokon blokkolhatja a rendszerhez való hozzáférést egy adott MAC -címről:
# iptables -A INPUT -m mac --mac -source 00: 00: 00: 00: 00: 00 -j DROP.
Természetesen változtatnia kell "00:00:00:00:00:00"
a letiltani kívánt MAC -címmel.
Ha nem szeretné, hogy túl sok egyidejű kapcsolatot létesítsen egyetlen IP -címről az adott porton, akkor használja az alábbi parancsot:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit -above 3 -j REJECT.
A fenti parancs legfeljebb 3
kapcsolatok ügyfelenként. Természetesen megváltoztathatja a port számát, hogy megfeleljen a különböző szolgáltatásoknak. Szintén a --connlimit-fenti
meg kell változtatni, hogy megfeleljen az Ön igényeinek.
Miután meghatározta az iptables szabályait, időnként keresni szeretne, és szükség lehet azok módosítására. A szabályok használatával való keresés egyszerű módja a következő:
# iptables -L $ tábla -v -n | grep $ karakterlánc.
A fenti példában módosítania kell $ táblázat
a tényleges táblával, amelyen belül keresni szeretne, és $ karakterlánc
a keresett karakterlánccal.
Íme egy példa:
# iptables -L INPUT -v -n | grep 192.168.0.100.
Az iptables segítségével meghatározhatja saját láncát, és egyéni szabályokat tárolhat benne. A lánc meghatározásához használja:
# iptables -N egyéni szűrő.
Most ellenőrizheti, hogy megvan -e az új szűrő:
# iptables -L.
Láncbemenet (házirend elfogadása) cél prot opt forrás forrása.
Lánc ELŐRE (politika ELFOGAD) cél prot opt forrás forrása
Lánc OUTPUT (házirend elfogadása) cél prot opt forrás forrása
Lánc egyéni szűrő(0 hivatkozás) cél prot opt forrás forrása
Ha ki szeretné öblíteni a tűzfalláncokat, használhatja:
# iptables -F.
A láncokat az alábbi táblázatból öblítheti le:
# iptables -t nat -F.
Meg tudsz változni "nat"
az aktuális táblával, mely láncokat kívánja leöblíteni.
Ha el szeretné menteni a tűzfal szabályait, használhatja a iptables-save
parancs. A szabályok használatával fájlba mentheti és tárolhatja a következőket:
# iptables-save> ~/iptables.rules.
Rajtad áll, hogy hol tárolja a fájlt, és hogyan fogja elnevezni.
Ha vissza szeretné állítani az iptables szabályok listáját, használhatja iptables-restore
. A parancs így néz ki:
# iptables-restoreTermészetesen a szabályfájl elérési útja eltérő lehet.
21. Állítsa be az IPtables szabályait a PCI megfelelőséghez
Előfordulhat, hogy egyes rendszergazdáknak PCI -kompatibilisnek kell konfigurálniuk szervereiket. A különböző PCI megfelelőségi gyártók számos követelményt támasztanak, de kevés a közös.
Sok esetben több IP -címmel kell rendelkeznie. Az alábbi szabályokat kell alkalmazni a webhely IP -címére vonatkozóan. Legyen különösen óvatos az alábbi szabályok alkalmazásakor, és csak akkor használja őket, ha biztos abban, amit csinál:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP.Ha cPanelt vagy hasonló vezérlőpultot használ, előfordulhat, hogy blokkolnia kell annak portjait is. Íme egy példa:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP.jegyzet: Annak érdekében, hogy megfeleljen a PCI -szállító követelményeinek, alaposan ellenőrizze jelentését, és alkalmazza a szükséges szabályokat. Bizonyos esetekben előfordulhat, hogy bizonyos portokon blokkolnia kell az UDP forgalmat.
22. Létrehozott és kapcsolódó kapcsolatok engedélyezése
Mivel a hálózati forgalom elkülönül a bejövő és a kimenő oldalon, engedélyezni kell a kialakult és a kapcsolódó bejövő forgalmat. A bejövő kapcsolatokhoz tegye a következőket:
# iptables -A INPUT -m conntrack --ctstate LÉTESÍTETT, KAPCSOLÓDÓ -j ACCEPT.Kimenő használatra:
# iptables -A OUTPUT -m conntrack -állam LÉTESÍTETT -j ACCEPT.23. Érvénytelen csomagokat dobjon az IP táblákba
Lehetséges, hogy egyes hálózati csomagokat érvénytelennek jelölnek. Vannak, akik szívesebben naplózzák ezeket a csomagokat, de mások inkább ejtik őket. Ha érvénytelenné szeretné tenni a csomagokat, használhatja:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP24. Csatlakozás letiltása a hálózati interfészen
Egyes rendszerek több hálózati interfésszel is rendelkezhetnek. Korlátozhatja a hozzáférést az adott hálózati interfészhez, vagy letilthatja a kapcsolatokat bizonyos IP -címekről.
Például:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.változás “Xxx.xxx.xxx.xxx” a letiltani kívánt IP -címmel (vagy hálózattal).
25. A kimenő levelek letiltása az IPTables segítségével
Ha a rendszer nem küld e -mailt, letilthatja a kimenő portokat az SMTP -portokon. Használhatja például ezt:
# iptables -A OUTPUT -p tcp --portok 25 465 587 -j REJECT.Következtetés
Iptables egy hatékony tűzfal, amelyből könnyen profitálhat. Létfontosságú, hogy minden rendszergazda megtanulja legalább a az iptables alapjai. Ha részletesebb információt szeretne találni az iptables -ről és annak lehetőségeiről, erősen javasoljuk, hogy olvassa el a kézikönyvet:
# férfi iptables.Ha úgy gondolja, hogy további parancsokat kell hozzáadnunk ehhez a listához, kérjük, ossza meg velünk az alábbi megjegyzés részben.