Bevezetés
Előfeltételek
1. lépés: Határozza meg a kiszolgálón használt szolgáltatásokat és portokat
2. lépés: Állítsa be az iptables szabályokat
3. lépés: Mentse el a konfigurációkat
Megoldások a véletlen blokkoláshoz
Bevezetés
A tűzfal egyfajta hálózati biztonsági eszköz, amely előre meghatározott szabálykészlete szerint szabályozza a bejövő és kimenő hálózati forgalmat. Használhatunk tűzfalat más biztonsági intézkedésekkel együtt, hogy megvédjük szervereinket a hackerek támadásaitól és támadásaitól.
A tűzfal kialakítása lehet dedikált hardver vagy a gépünkön futó szoftver. A CentOS 6 rendszeren az alapértelmezett tűzfalprogram az iptables.
Ebben a cikkben bemutatom, hogyan állíthat be egy alapvető iptables tűzfalat a Vultr "WordPress on CentOS 6 x64" alkalmazáson alapul, amely blokkolja az összes forgalmat, kivéve a web-, SSH-, NTP-, DNS- és ping-szolgáltatásokat. Ez azonban csak egy előzetes konfiguráció, amely kielégíti az általános biztonsági igényeket. Kifinomultabb iptables konfigurációra lesz szüksége, ha további igényei vannak.
Megjegyzés :
Ha IPv6-címet ad hozzá a szerveréhez, akkor az ip6tables szolgáltatást is be kell állítania. Az ip6tables konfigurálása nem tartozik a cikk hatókörébe.
A CentOS 6-tól eltérően az iptables már nem az alapértelmezett tűzfalprogram a CentOS 7-en, és a tűzfal nevű program váltotta fel. Ha a CentOS 7 használatát tervezi, a tűzfalat a tűzfal segítségével kell beállítania.
Előfeltételek
Frissen telepítsen egy kiszolgálópéldányt a Vultr „WordPress on CentOS 6 x64” alkalmazással, majd jelentkezzen be root felhasználóként.
1. lépés: Határozza meg a kiszolgálón használt szolgáltatásokat és portokat
Feltételezem, hogy ez a szerver csak WordPress blogot fog tárolni, és nem lesz használva routerként, és nem nyújt más szolgáltatásokat (pl. levelezés, FTP, IRC stb.).
Itt a következő szolgáltatásokra van szükségünk:
- HTTP (TCP a 80-as porton)
- HTTPS (TCP a 443-as porton)
- SSH (TCP alapértelmezés szerint a 22-es porton, biztonsági okokból módosítható)
- NTP (UDP a 123-as porton)
- DNS (TCP és UDP az 53-as porton)
- ping (ICMP)
Az összes többi felesleges port blokkolva lesz.
Az Iptables szabálylistával szabályozza a forgalmat. Amikor hálózati csomagokat küldenek a szerverünkre, az iptables az egyes szabályok alapján egymás után megvizsgálja azokat, és ennek megfelelően intézkedik. Ha egy szabály teljesül, a többi szabály figyelmen kívül marad. Ha nem teljesülnek a szabályok, az iptables az alapértelmezett házirendet fogja használni.
Az összes forgalom INPUT, OUTPUT és FORWARD kategóriába sorolható.
- Az INPUT forgalom lehet normál vagy rosszindulatú, ezt szelektíven kell engedélyezni.
- Az OUTPUT forgalmat általában biztonságosnak tekintik, és engedélyezni kell.
- A FORWARD forgalom haszontalan, ezért blokkolni kell.
Most állítsuk be az iptables szabályait igényeinknek megfelelően. Az összes következő parancsot az SSH-terminálról rootként kell bevinni.
Ellenőrizze a meglévő szabályokat:
iptables -L -n
Törölje ki az összes létező szabályt:
iptables -F; iptables -X; iptables -Z
Mivel az iptables konfigurációjának módosításai azonnal életbe lépnek, ha rosszul konfigurálja az iptables szabályokat, előfordulhat, hogy a rendszer letiltja a hozzáférést a szerverhez. A következő paranccsal megakadályozhatja a véletlen leállásokat. Ne felejtse [Your-IP-Address]el saját nyilvános IP-címére vagy IP-címtartományára cserélni (például 201.55.119.43 vagy 201.55.119.0/24).
iptables -A INPUT -s [Your-IP-Address] -p tcp --dport 22 -j ACCEPT
Engedélyezze az összes loopback (lo) forgalmat, és csökkentse az összes forgalmat 127.0.0.0/8-ra, kivéve a lo:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -d 127.0.0.0/8 -j REJECT
Néhány gyakori támadás blokkolása:
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
Minden létrehozott bejövő kapcsolat elfogadása:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
HTTP és HTTPS bejövő forgalom engedélyezése:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
SSH kapcsolatok engedélyezése:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
NTP-kapcsolatok engedélyezése:
iptables -A INPUT -p udp --dport 123 -j ACCEPT
DNS-lekérdezések engedélyezése:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
Ping engedélyezése:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Végül állítsa be az alapértelmezett házirendeket:
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
3. lépés: Mentse el a konfigurációkat
A fent végrehajtott változtatások mindegyike hatályba lépett, de nem véglegesek. Ha nem mentjük őket merevlemezre, a rendszer újraindítása után elvesznek.
Mentse el az iptables konfigurációját a következő paranccsal:
service iptables save
A változtatásaink a fájlba kerülnek /etc/sysconfig/iptables. A fájl szerkesztésével áttekintheti vagy módosíthatja a szabályokat.
Megoldások a véletlen blokkoláshoz
Ha konfigurációs hiba miatt le van tiltva a szerverről, bizonyos kerülő megoldásokkal továbbra is visszanyerheti hozzáférését.
- Ha még nem mentette el az iptables szabályok módosításait, akkor a Vultr webhely felületéről újraindíthatja a szervert, ekkor a változtatások el lesznek vetve.
- Ha elmentette a változtatásokat, bejelentkezhet a kiszolgálóra a konzolon keresztül a Vultr webhely felületéről, és megadhatja
iptables -Faz összes iptables szabályt. Ezután újra beállíthatja a szabályokat.