Weboldal keresés

IPTABLES VS TŰZFAL


Ma végigjárjuk az iptables-t és a tűzfalat, és megismerjük e kettő történetét, valamint a telepítést, valamint azt, hogy hogyan konfigurálhatjuk ezeket Linux-disztribúcióink számára.

Kezdjük anélkül, hogy további időt vesztegetnénk.

Először is tudnunk kell, mi az iptables. A vezető IT-szakemberek többsége tud róla, és korábban is dolgozott vele. Az Iptables egy olyan alkalmazás/program, amely lehetővé teszi a felhasználó számára, hogy konfigurálja a Linux kernel tűzfala és a láncok által biztosított biztonsági vagy tűzfal biztonsági táblákat, hogy a felhasználó a biztonsági követelményeinek megfelelően tűzfalszabályokat adhasson hozzá/eltávolíthassa. Az Iptables különböző kernelmodulokat és különböző protokollokat használ, hogy a felhasználó a legjobbat hozza ki belőle. Például az iptables az IPv4-hez (IP-verzió 4/32 bit), az ip6tables pedig az IPv6-hoz (IP-verzió 6/64 bit) a tcp-hez és az udp-hez egyaránt használható. Az iptables szabályokat általában a rendszeradminisztrátor, a rendszerelemző vagy az informatikai menedzser konfigurálja. Az egyes iptables-szabályok végrehajtásához root jogosultságokkal kell rendelkeznie. A Linux Kernel a Netfilter keretrendszert használja, hogy különféle hálózattal kapcsolatos műveleteket tudjon biztosítani, amelyeket az iptables használatával lehet végrehajtani. Korábban az ipchains-t a legtöbb Linux-disztribúcióban ugyanerre a célra használták. Minden iptables szabályt közvetlenül maga a Linux kernel kezel, és ezt kernel kötelességnek nevezik. Bármilyen grafikus felhasználói felületet vagy más biztonsági eszközt is használ a kiszolgáló tűzfalbiztonságának konfigurálásához, a nap végén a rendszer iptables-szabályokká alakítja, és továbbítja a kernelnek a művelet végrehajtásához.

Az iptables megjelenése a netfilterrel kezdődik. Paul Rusty Russell volt az első szerző és a netfilter/iptables mögött álló agytröszt. Később sok más technikus csatlakozott hozzá, majd megalakították és felépítették a Netfilter alapcsapatát, valamint közös erőfeszítésként fejlesztik és karbantartják a netfilter/iptables projektet, mint sok más nyílt forráskódú projektet. Harald Welte volt a korábbi vezető 2007-ig, majd Patrick McHardy volt a vezetője 2013-ig. Jelenleg a netfilter alapcsapatának vezetője Pablo Neira Ayuso.

Ha többet szeretne megtudni a netfilterről, látogasson el erre a linkre. Ha többet szeretne megtudni a netfilter történetéről, kérjük, látogasson el erre a linkre.

Ha többet szeretne megtudni az iptables előzményeiről, kérjük, látogasson el erre a linkre.

Napjainkban minden Linux kernelhez iptable tartozik, és minden híres modern Linux disztribúción megtalálható előre összerakva vagy előre telepítve. A legtöbb Linux rendszeren az iptables ebbe a /usr/sbin/iptables könyvtárba van telepítve. Megtalálható az /sbin/iptables mappában is, de mivel az iptables inkább szolgáltatáshoz hasonlít, nem pedig „esszenciális binárishoz”, az előnyben részesített hely az /usr/sbin könyvtárban marad.

Ubuntuhoz vagy Debianhoz

sudo apt-get install iptables

CentOS számára

sudo yum install iptables-services

A RHEL számára

sudo yum install iptables

Az iptables verziójának megismeréséhez írja be a következő parancsot a termináljába.

sudo iptables --version

OpenSUSE 42.1 esetén a leállításhoz írja be a következőt.

sudo /sbin/rcSuSEfirewall2 stop

Hogy újra kezdjem

sudo /sbin/rcSuSEfirewall2 start

Ubuntu esetén a leállításhoz írja be a következőt.

sudo service ufw stop

Hogy újra kezdjem

sudo service ufw start

Debian és RHEL esetén írja be a következőt a leállításhoz.

sudo /etc/init.d/iptables stop

Hogy újra kezdjem

sudo /etc/init.d/iptables start

CentOS esetén a leállításhoz írja be a következőt.

sudo service iptables stop

Hogy újra kezdjem

sudo service iptables start

Az iprables-ben jelenleg jelenlévő és aktív szabályok megismeréséhez egyszerűen nyisson meg egy terminált, és írja be a következőket.

sudo iptables -L

Ha nincsenek szabálykilépések az iptables-on, az azt jelenti, hogy ha eddig nincsenek szabályok hozzáadva az iptables tűzfalához, akkor valami hasonlót fog látni az alábbi képen.

Ezen a fenti képen látható, hogy három (3) lánc van, ezek INPUT, FORWARD, OUTPUT, és nincsenek szabályok. Valójában még nem adtam hozzá egyet sem.

Írja be a következőket az iptables tűzfal láncainak állapotának megtekintéséhez.

sudo iptables -S

A fenti paranccsal megtudhatja, hogy a láncai elfogadják-e vagy sem.

Törölje az összes iptables szabályt

Ha törölni szeretné az összes szabályt az iptables tűzfaláról, írja be a következőt. Ezt általában az iptables szabályok kiürítésének nevezik.

sudo iptables -F

Ha csak az INPUT láncot vagy az egyes láncokat szeretné kiöblíteni, akkor adja ki az alábbi parancsokat igényei szerint.

sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD

ELFOGADJA vagy DROP láncokat

Egy adott lánc elfogadásához vagy eldobásához adja ki a következő parancsok bármelyikét a terminálon, hogy megfeleljen a követelményeknek.

iptables --policy INPUT DROP

A fenti szabály nem fogad el semmit, ami az adott szerverre érkezik. Az ELFOGADÁS állapot visszaállításához tegye a következőket

iptables --policy INPUT ACCEPT

Ugyanez vonatkozik a többi láncra is

iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Megjegyzés: Alapértelmezés szerint az iptables összes lánca ( INPUT, OUTPUT, FORWARD ) ELFOGADÁS módban van. Ez az úgynevezett Policy Chain Default Behavior.

Bármilyen port engedélyezése

Ha bármilyen webszervert futtat a gazdagépen, akkor engedélyeznie kell az iptables tűzfalat, hogy a szerver figyelje a 80-as portot vagy válaszoljon rá. Alapértelmezés szerint a webszerver a 80-as porton fut. Akkor tegyük meg.

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

A fenti sorban az A jelentése append azt jelenti, hogy új szabályt adunk az iptables listához. Az INPUT az INPUT láncot jelenti. A P a protokollt, a dport pedig a célportot jelenti. Alapértelmezés szerint bármely webszerver a 80-as porton fut. Hasonlóképpen engedélyezheti az SSH-portot is.

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Alapértelmezés szerint az SSH a 22-es porton fut. De jó gyakorlat, ha nem futtatja az SSH-t a 22-es porton. Mindig futtassa az SSH-t egy másik porton. Az SSH másik porton való futtatásához nyissa meg az /etc/ssh/sshd_config fájlt kedvenc szerkesztőjén, és módosítsa a 22-es portot egy másik portra.

Tegyük fel, hogy blokkolni akarjuk a 135-ös portot. Megtehetjük

sudo iptables -A INPUT -p tcp --dport 135 -j DROP

Ha meg szeretné akadályozni, hogy a szerver SSH-kapcsolatot kezdeményezzen a kiszolgálóról egy másik gazdagépre/kiszolgálóra, adja ki a következő parancsot

sudo iptables -A OUTPUT -p tcp --dport 22 -j DROP

Ha így tesz, senki sem használhatja az Ön szerverét SSH-kapcsolat létrehozására a szerverről. Az OUPUT lánc kiszűri és eldobja a kimenő tcp kapcsolatot egy másik gazdagép felé.

Adott IP engedélyezése porttal

sudo iptables -A INPUT -p tcp -s 0/0 --dport 22  -j ACCEPT

Itt a -s 0/0 bármely IP-címmel rendelkező bejövő forrást jelöl. Tehát nincs mód arra, hogy a szerver válaszoljon egy tcp-csomagra, amelynek célportja a 22. Ha csak egy adott IP-t szeretne engedélyezni, használja a következőt.

sudo iptables -A INPUT -p tcp -s 12.12.12.12/32 --dport 22  -j ACCEPT

A fenti példában csak a 12.12.12.12 IP-címet engedélyezi az SSH-porthoz való csatlakozáshoz. A többi IP-cím nem fog tudni csatlakozni a 22-es porthoz. Hasonlóképpen engedélyezheti a CIDR-értékek használatával. Mint például

sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22  -j ACCEPT

A fenti példa bemutatja, hogyan engedélyezheti egy teljes IP-blokk csatlakozását a 22-es porton. Az IP-címet 12.12.12.1-től 12.12.12.255-ig fogadja el.

Ha le akarja tiltani az ilyen IP-címtartományokat, tegye a fordítottját úgy, hogy az ACCEPT szót DROP-ra cseréli, az alábbiak szerint

sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22  -j DROP

Tehát nem teszi lehetővé a kapcsolat létrehozását a 22-es porton 12.12.12.1 és 12.12.12.255 közötti IP-címekről.

ICMP blokkolása

Ha blokkolni szeretné az ICMP (ping) kéréseket a szerverére és onnan, próbálkozzon a következővel. Az első blokkolja, hogy ne küldjön ICMP ping echo kérést egy másik gazdagépnek.

sudo iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP

Most próbálja meg pingelni a google.com webhelyet. Az Ön OpenSUSE szervere nem fogja tudni pingelni a google.com webhelyet.

Ha blokkolni szeretné a bejövő ICMP (ping) visszhangkérést a szerverén, egyszerűen írja be a következőt a termináljára.

sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP

Most nem fog válaszolni egyetlen ICMP ping echo kérésre sem. Tegyük fel, hogy a szerver IP-címe 13.13.13.13. És ha megping pingeli a szervere IP-címét, akkor látni fogja, hogy a szerver nem válaszol erre a ping kérésre.

MySql/MariaDB port blokkolása

Mivel a Mysql tartja az adatbázist, ezért meg kell védenie az adatbázist a külső csatolástól. Csak a megbízható alkalmazáskiszolgáló IP-címei csatlakozzanak a MySQL-kiszolgálóhoz. Mások blokkolásához

sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT

Tehát a 192.168.1.0/24 IP blokkon kívül semmilyen MySql-kapcsolatot nem igényel. Alapértelmezés szerint a MySql a 3306-os porton fut.

SMTP blokkolása

Ha nem fut levelezőszerver a gazdagépen, vagy ha a szervere nincs beállítva úgy, hogy levelezőszerverként működjön, akkor blokkolnia kell az SMTP-t, hogy a szerver ne küldjön spamet vagy levelet egyetlen tartományba sem. Ezt meg kell tennie a szerverről kimenő levelek letiltásához. Ehhez

sudo iptables -A OUTPUT -p tcp --dport 25 -j DROP

DDoS letiltása

Mindannyian ismerjük a DDoS kifejezést. Megszabadulásához adja ki a következő parancsot a terminálon.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT

A numerikus értéket az igényeinek megfelelően kell konfigurálnia. Ez csak egy szabvány, amelyet fenn kell tartani.

Többet védhetsz azáltal

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/lo/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling 
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

Port Scanning blokkolása

Több száz ember van, akik átvizsgálják a szerver nyitott portjait, és megpróbálják megbontani a szerver biztonságát. blokkolni

sudo iptables -N block-scan
sudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j RETURN
sudo iptables -A block-scan -j DROP

Itt a block-scan egy új lánc neve.

Rossz portok blokkolása

Előfordulhat, hogy néhány rossz portot is le kell tiltania a szerverén. Ezt a következőképpen teheti meg.

badport="135,136,137,138,139,445"
sudo iptables -A INPUT -p tcp -m multiport --dport $badport -j DROP
sudo iptables -A INPUT -p udp -m multiport --dport $badport -j DROP

Igényei szerint további portokat is hozzáadhat.

A Firewalld dinamikusan felügyelt tűzfalat biztosít a hálózati/tűzfalzónák támogatásával, amely meghatározza a hálózati kapcsolatok vagy interfészek megbízhatósági szintjét. Támogatja az IPv4-et, az IPv6 tűzfalbeállításokat, az Ethernet-hidakat és az IP-készleteket. A futásidejű és az állandó konfigurációs lehetőségek elkülönülnek egymástól. Ezenkívül felületet biztosít a szolgáltatások vagy alkalmazások számára a tűzfalszabályok közvetlen hozzáadásához.

A korábbi rendszer-config-firewall/lokkit tűzfalmodell statikus volt, és minden változtatáshoz a tűzfal teljes újraindítása szükséges. Ez magában foglalta a tűzfal netfilter kernelmoduljainak eltávolítását és az új konfigurációhoz szükséges modulok betöltését is. A modulok kirakodása megszakította az állapotalapú tűzfalat és a létrehozott kapcsolatokat. A tűzfaldémon viszont dinamikusan kezeli a tűzfalat, és a teljes tűzfal újraindítása nélkül hajtja végre a változtatásokat. Ezért nincs szükség az összes tűzfal kernel modul újratöltésére. A tűzfaldémon használatához azonban minden tűzfalmódosítást ezzel a démonnal kell végrehajtani, hogy megbizonyosodjon arról, hogy a démon állapota és a kernel tűzfala szinkronban van. A tűzfaldémon nem tudja elemezni az iptables és ebtables parancssori eszközök által hozzáadott tűzfalszabályokat. A démon a D-BUS-on keresztül információt ad az aktuális aktív tűzfalbeállításokról, és a PolicyKit hitelesítési módszerekkel D-BUS-on keresztül is elfogadja a változtatásokat.

Tehát a tűzfal zónákat és szolgáltatásokat használ lánc és szabályok helyett a műveletek végrehajtásához, és képes dinamikusan kezelni a szabályokat, amelyek lehetővé teszik a frissítéseket és módosításokat a meglévő munkamenetek és kapcsolatok megszakítása nélkül.

A következő tulajdonságokkal rendelkezik.

  • D-Bus API.
  • Időzített tűzfalszabályok.
  • Gazdag nyelv bizonyos tűzfalszabályokhoz.
  • IPv4 és IPv6 NAT támogatás.
  • Tűzfal zónák.
  • IP-készlet támogatása.
  • A megtagadott csomagok egyszerű naplója.
  • Közvetlen interfész.
  • Lezárás: Azon alkalmazások engedélyezési listája, amelyek módosíthatják a tűzfalat.
  • Az iptables, ip6tables, ebtables és ipset tűzfal háttérprogramok támogatása.
  • Linux kernel modulok automatikus betöltése.
  • Integráció a Puppettel.

Ha többet szeretne megtudni a tűzfalról, kérjük, látogasson el erre a linkre.

A tűzfal telepítése előtt győződjön meg arról, hogy leállította az iptables alkalmazást, és győződjön meg arról is, hogy az iptables nem használja vagy nem működik többé. Ehhez

sudo systemctl stop iptables

Ez leállítja az iptables-okat a rendszerből.

Ezután győződjön meg arról, hogy a rendszer többé nem használja az iptables-t, ehhez adja ki az alábbi parancsot a terminálban.

sudo systemctl mask iptables

Most ellenőrizze az iptables állapotát.

sudo systemctl status iptables

Most készen állunk a tűzfal telepítésére a rendszerünkre.

Ubuntuhoz

Az Ubuntu telepítéséhez először el kell távolítania az UFW-t, majd telepítheti a Firewalld-t. Az UFW eltávolításához adja ki az alábbi parancsot a terminálon.

sudo apt-get remove ufw

Az UFW eltávolítása után adja ki az alábbi parancsot a terminálban

sudo apt-get install firewall-applet

Vagy

Megnyithatja az Ubuntu Szoftverközpontot, és megkeresheti vagy megkeresheti a „tűzfal-applet” kifejezést, majd telepítheti az Ubuntu rendszerére.

RHEL, CentOS és Fedora esetén

Írja be az alábbi parancsot a tűzfal telepítéséhez CentOS rendszerére.

sudo yum install firewalld firewall-config -y

A tűzfal beállítása előtt ismernünk kell a tűzfal állapotát a telepítés után. Ennek tudásához írja be a következőt.

sudo systemctl status firewalld

Mivel a tűzfal zóna alapon működik, minden zónát és szolgáltatást ellenőriznünk kell, bár még nem végeztünk konfigurálást.

Zónákhoz

sudo firewall-cmd --get-active-zones

vagy

sudo firewall-cmd --get-zones

Az alapértelmezett zóna megismeréséhez adja ki az alábbi parancsot

sudo firewall-cmd --get-default-zone

És Szolgáltatásokhoz

sudo firewall-cmd --get-services

Itt láthatja a tűzfal által lefedett szolgáltatásokat.

Fontos megjegyzés, hogy minden módosítás után újra kell töltenie a tűzfalat, hogy a változtatások megtörténhessenek.

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

sudo firewall-cmd --set-default-zone=internal

vagy

sudo firewall-cmd --set-default-zone=public

A zóna megváltoztatása után ellenőrizze, hogy megváltozik-e vagy sem.

sudo firewall-cmd --get-default-zone
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

Ez hozzáadja a 80-as tcp portot a tűzfal nyilvános zónájához. A kívánt portot is hozzáadhatja, ha a 80-at lecseréli a sajátjára.

Most töltse be újra a tűzfalat.

sudo firewall-cmd --reload

Most ellenőrizze az állapotot, és ellenőrizze, hogy a tcp 80 port hozzáadva van-e vagy sem.

sudo firewall-cmd --zone=public --list-ports

Itt láthatja, hogy a 80-as tcp port hozzáadásra került.

Vagy akár valami ilyesmit is kipróbálhatsz.

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

A Tcp 80 port eltávolításához a nyilvános zónából írja be a következőt.

sudo firewall-cmd --zone=public --remove-port=80/tcp

A „siker” szöveg visszhangzik a termináljában.

A kívánt portot is megadhatja, ha a 80-ast saját portjára cseréli.

Az ftp szolgáltatás tűzfalhoz való hozzáadásához adja ki az alábbi parancsot

sudo firewall-cmd --zone=public --add-service=ftp

A „siker” szöveg visszhangzik a termináljában.

Hasonlóképpen az smtp szolgáltatás hozzáadásához adja ki az alábbi parancsot

sudo firewall-cmd --zone=public --add-service=smtp

Cserélje le az ftp-t és az smtp-t saját szolgáltatásával, amelyet hozzá szeretne adni a tűzfalhoz.

Az ftp és smtp szolgáltatások tűzfalról való eltávolításához adja ki az alábbi parancsot a terminálon.

sudo firewall-cmd --zone=public --remove-service=ftp
sudo firewall-cmd --zone=public --remove-service=smtp

Ha szeretné, a tűzfal használatával blokkolhat minden bejövő vagy kimenő csomagot/kapcsolatot. Ezt a tűzfal „pánikbekapcsolásának” nevezik. Ehhez adja ki az alábbi parancsot.

sudo firewall-cmd --panic-on

A „siker” szöveg visszhangzik a termináljában.

Miután ezt megtette, nem fog tudni pingelni egy gazdagépet, és nem is böngészhet egyetlen webhelyen sem.

Ennek kikapcsolásához adja ki az alábbi parancsot a terminálon.

sudo firewall-cmd --panic-off
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.4" accept'

Ezzel a tűzfal elfogadja a 192.168.1.4 forrás IP-ről származó IP v4 csomagokat.

Hasonlóképpen bármely IP-cím blokkolásához

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.4" reject'

Ezzel a tűzfal minden IP v4-csomagot eldob/eldob a forrás IP 192.168.1.4-ről.

Itt ragaszkodtam a Firewall alapjaihoz, hogy könnyen megérthesd a működési módszertanát és az iptables-szal való különbségeit.

Ez minden mára. Remélem, örömmel olvassa ezt a cikket.

Vigyázz magadra.

Kapcsolódó cikkek: