SlideShare a Scribd company logo

Iptables gyorstalpaló

Hogyan készítsünk egy alap tűzfalat gyorsan Debian alapú disztrok alatt.

1 of 2
Download to read offline
Linux
Netfilter gyorstalpaló
Vessük is bele magunk rögtön a konfigurációba. Aki figyelt órákon az nagyjából tudja a netfilter
felépítését (táblák, láncok, szabályok) és hogy milyen célokra használható, milyen funkciókkal
rendelkezik.
Most nem tudok egy ötpercesben több óra elméletet összefoglalni, egy gyors áttekintés után
megnézzük az egyes konfigurációkat, beállításokat.
Mire használjuk a netfiltert? Iptables-zel konfiguráltunk csomagszűrést, címfordítást internet
rétegben, ezekhez jöttek pár kiegészítő modulok is.
A legfontosabb, hogy a netfilter a Linux kernel része, így nem kellett külön programot telepítenünk
a működéshez, viszont a különböző utasításokat valahol rögzítenünk kellett és indításkor
megoldani, hogy ezek a szabályok érvénybe lépjenek. - Sokan használják az iptables-save és
iptables-restore módszert, aki tudja mit csinál, az természetesen csinálhatja úgy is (csak tudjam,
hogy úgy csinálta). -
Két módszer létezik arra, hogy a létrehozott szabályrendszerünkhöz a parancsfájlunk futtatásra
kerüljön induláskor. Az egyik, hogy az adott interface felcsatolásakor futtatjuk, a másik, hogy a
rc.local (/etc/rc.local) – ez minden futatási szintnél indít - vagy inittab-ben adjuk hozzá futásra pl.
„/bin/sh /root/iptables-start.sh”. Azért arra figyeljünk, hogy futtatási joga legyen a root-nak rajta.
Most először egy példát az interfaces (ifup)-os inicializáláskori futtatásra: nano
/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
pre-up /root/tuzfal.sh
Láthatjátok, hogy itt a történet csak arról szól, hogy mielőtt felcsatolná az interfacet (persze nem árt
ha auto indul a csatoló mert különben nincs nagyon értelme) fogja és futtatja a pre-up-nál megadott
shell scriptet.
Shell szkriptekről annyit röviden, hogy célszerű az elején beírni a rendszernek, hogy milyen
parancsértelmezőt használjon, mert egyáltalán nem biztos hogy pl. az rc.local-ba elé írtuk a /bin/sh-
t. Ezért szoktuk úgy kezdeni az sh fájlt, hogy „#!/bin/sh” vagy ugyanezt bash-el ha szükség van rá.
Nézzük a fájl tartalmát. Az első dolog általában az, hogy lenullázzuk a számlálókat (bájt és
csomag), kiürítjük a szabályokat és kitöröljük a láncokat. Ehhez ennyit kell beírni:
iptables -Z
iptables -F
iptables -X
Ezután jöhet az érdemi része a dolognak. Meg kell adni az alapértelmezett szabályokat, policyket az
egyes láncokhoz. Röviden ezek az INPUT, OUTPUT és FORWARD. Ez utóbbi egyébként alapból
nincs is engedélyezve a kernelben, mármint az ip továbbítás (forwarding). Ez elengedhetetlen ugye
a címfordításhoz, így majd ott a kernel konfigban is kell állítani.
Ha nem akarunk bonyolult konfigurációt akkor megtehetjük, hogy csak a tűzfalas host gépet védjük
és az átmenő forgalomhoz, illetve a kifelé menő kommunikációt nem korlátozzuk.
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Ez a konfiguráció nem „whitelisting” módszer, tehát nem az van hogy minden tiltunk és majd ami
szerintünk elengedhetetlenül szükség azt majd engedélyezzük, így nem is biztonságos annyira.
Természetesen az igazi az ha alapból mindent „DROP”-ra állítunk.
Nézzünk egy csomagszűrési – filter táblán fogunk dolgozni – szabályt, amely használja a multiport
modult. A multiport nélkül is lehet dolgozni, de akkor csak porttartományt vagy egyetlen portot
lehet szabályonként konfigurálni.
iptables -A INPUT -i eth0-p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED
-j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Az első szabály arról szól, hogy az elsődleges csatolót megjelöljük mint bejövő csatoló az INPUT
lánchoz és ahol a célport 80 vagy 443 TCP-n azokat elfogadjuk, feltéve hogy ezek új vagy kiépült
kapcsolatok. Ha nem használnánk az -m multiportot -ot akkor nem dports lenne hanem dport és
csak annyit adnánk meg hogy –dport 80. A state modul plusz biztonságot ad, de nem kötelező
használni.
A második és harmadik szabály a loopback eszközünkre vonatkozik. A helyi folyamatok gyakran
egymás közötti kommunikációnál, már ha az TCP/IP-n megy akkor azt ezen a belső csatolón
végzik, emiatt itt célszerű minden forgalmat engedélyezni, nagy baj nem történhet így.
A legegyszerűbb cone NATolás amit néztünk az a dinamikus forrás címfordítás volt, más néven
MASQ/masquerade vagyis címálcázás. Ehhez a következő konfigurációt kell használni:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
A címálcázásról lehet még olvasgatni akit érdekel itt:
http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/Masquerading-Simple-
HOWTO.html.
Na most mondtam, hogy alapból a Linuxban a forwarding nincs engedélyezve. Azt szokták páran
csinálni hogy a shell script végére még annyit beírnak hogy „echo 1 >
/proc/sys/net/ipv4/ip_forward” és akkor a script indulásakor átállítja a helyi folyamat
nyilvántartásban hálózati csomagtovábbításhoz, hogy az engedélyezve legyen.
echo 1 > /proc/sys/net/ipv4/ip_forward
Ennél egy picit szebb ha a „sysctl.conf”-ban átírjátok az ipv4 forwardingot 0-ról 1-re, mert akkor ez
állandó kernel konfig lesz. A dőlt betűs részek lényegében maga az iptables-start.sh tartalma, csak
felejtsétek az elejéről a „#!/bin/sh” -t. Beni

Recommended

More Related Content

Similar to Iptables gyorstalpaló

Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaFerenc Kovács
 
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...Ferenc Szalai
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.Ferenc Kovács
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-re
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-reAlkalmazásszintű tűzfal (Zorp) illesztése OpenStack-re
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-reImre Halász
 
ZFS on Linux fájlrendszer ismertető
ZFS on Linux fájlrendszer ismertetőZFS on Linux fájlrendszer ismertető
ZFS on Linux fájlrendszer ismertetőIstván Pongrácz
 
Deep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarDeep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarLeventeDmsa1
 
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)Mihály Mészáros
 
A Redis lehetőségei
A Redis lehetőségeiA Redis lehetőségei
A Redis lehetőségeivvinston
 
Drupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákDrupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákJános Fehér
 

Similar to Iptables gyorstalpaló (14)

Linux alapok
Linux alapokLinux alapok
Linux alapok
 
Webalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálásaWebalkalmazások teljesítményoptimalizálása
Webalkalmazások teljesítményoptimalizálása
 
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
A ClusterGrid rendszer - avagy hogyan üzemeltessünk, több mint 1000 csomópont...
 
Sles admin
Sles adminSles admin
Sles admin
 
A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.A PHP 5.5 újdonságai.
A PHP 5.5 újdonságai.
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-re
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-reAlkalmazásszintű tűzfal (Zorp) illesztése OpenStack-re
Alkalmazásszintű tűzfal (Zorp) illesztése OpenStack-re
 
ZFS on Linux fájlrendszer ismertető
ZFS on Linux fájlrendszer ismertetőZFS on Linux fájlrendszer ismertető
ZFS on Linux fájlrendszer ismertető
 
Deep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCarDeep reinforcement learning with DonkeyCar
Deep reinforcement learning with DonkeyCar
 
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)
A jég (ICE), a kanyar (TURN), a bódulat (STUN) és a kijózanító tűzfal (Firewall)
 
A Redis lehetőségei
A Redis lehetőségeiA Redis lehetőségei
A Redis lehetőségei
 
Netacademy magyar
Netacademy magyarNetacademy magyar
Netacademy magyar
 
Drupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiákDrupal gyorstárazási stratégiák
Drupal gyorstárazási stratégiák
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 

Iptables gyorstalpaló

  • 1. Linux Netfilter gyorstalpaló Vessük is bele magunk rögtön a konfigurációba. Aki figyelt órákon az nagyjából tudja a netfilter felépítését (táblák, láncok, szabályok) és hogy milyen célokra használható, milyen funkciókkal rendelkezik. Most nem tudok egy ötpercesben több óra elméletet összefoglalni, egy gyors áttekintés után megnézzük az egyes konfigurációkat, beállításokat. Mire használjuk a netfiltert? Iptables-zel konfiguráltunk csomagszűrést, címfordítást internet rétegben, ezekhez jöttek pár kiegészítő modulok is. A legfontosabb, hogy a netfilter a Linux kernel része, így nem kellett külön programot telepítenünk a működéshez, viszont a különböző utasításokat valahol rögzítenünk kellett és indításkor megoldani, hogy ezek a szabályok érvénybe lépjenek. - Sokan használják az iptables-save és iptables-restore módszert, aki tudja mit csinál, az természetesen csinálhatja úgy is (csak tudjam, hogy úgy csinálta). - Két módszer létezik arra, hogy a létrehozott szabályrendszerünkhöz a parancsfájlunk futtatásra kerüljön induláskor. Az egyik, hogy az adott interface felcsatolásakor futtatjuk, a másik, hogy a rc.local (/etc/rc.local) – ez minden futatási szintnél indít - vagy inittab-ben adjuk hozzá futásra pl. „/bin/sh /root/iptables-start.sh”. Azért arra figyeljünk, hogy futtatási joga legyen a root-nak rajta. Most először egy példát az interfaces (ifup)-os inicializáláskori futtatásra: nano /etc/network/interfaces auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 pre-up /root/tuzfal.sh Láthatjátok, hogy itt a történet csak arról szól, hogy mielőtt felcsatolná az interfacet (persze nem árt ha auto indul a csatoló mert különben nincs nagyon értelme) fogja és futtatja a pre-up-nál megadott shell scriptet. Shell szkriptekről annyit röviden, hogy célszerű az elején beírni a rendszernek, hogy milyen parancsértelmezőt használjon, mert egyáltalán nem biztos hogy pl. az rc.local-ba elé írtuk a /bin/sh- t. Ezért szoktuk úgy kezdeni az sh fájlt, hogy „#!/bin/sh” vagy ugyanezt bash-el ha szükség van rá. Nézzük a fájl tartalmát. Az első dolog általában az, hogy lenullázzuk a számlálókat (bájt és csomag), kiürítjük a szabályokat és kitöröljük a láncokat. Ehhez ennyit kell beírni: iptables -Z iptables -F iptables -X Ezután jöhet az érdemi része a dolognak. Meg kell adni az alapértelmezett szabályokat, policyket az egyes láncokhoz. Röviden ezek az INPUT, OUTPUT és FORWARD. Ez utóbbi egyébként alapból
  • 2. nincs is engedélyezve a kernelben, mármint az ip továbbítás (forwarding). Ez elengedhetetlen ugye a címfordításhoz, így majd ott a kernel konfigban is kell állítani. Ha nem akarunk bonyolult konfigurációt akkor megtehetjük, hogy csak a tűzfalas host gépet védjük és az átmenő forgalomhoz, illetve a kifelé menő kommunikációt nem korlátozzuk. iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT Ez a konfiguráció nem „whitelisting” módszer, tehát nem az van hogy minden tiltunk és majd ami szerintünk elengedhetetlenül szükség azt majd engedélyezzük, így nem is biztonságos annyira. Természetesen az igazi az ha alapból mindent „DROP”-ra állítunk. Nézzünk egy csomagszűrési – filter táblán fogunk dolgozni – szabályt, amely használja a multiport modult. A multiport nélkül is lehet dolgozni, de akkor csak porttartományt vagy egyetlen portot lehet szabályonként konfigurálni. iptables -A INPUT -i eth0-p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT Az első szabály arról szól, hogy az elsődleges csatolót megjelöljük mint bejövő csatoló az INPUT lánchoz és ahol a célport 80 vagy 443 TCP-n azokat elfogadjuk, feltéve hogy ezek új vagy kiépült kapcsolatok. Ha nem használnánk az -m multiportot -ot akkor nem dports lenne hanem dport és csak annyit adnánk meg hogy –dport 80. A state modul plusz biztonságot ad, de nem kötelező használni. A második és harmadik szabály a loopback eszközünkre vonatkozik. A helyi folyamatok gyakran egymás közötti kommunikációnál, már ha az TCP/IP-n megy akkor azt ezen a belső csatolón végzik, emiatt itt célszerű minden forgalmat engedélyezni, nagy baj nem történhet így. A legegyszerűbb cone NATolás amit néztünk az a dinamikus forrás címfordítás volt, más néven MASQ/masquerade vagyis címálcázás. Ehhez a következő konfigurációt kell használni: iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE A címálcázásról lehet még olvasgatni akit érdekel itt: http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/Masquerading-Simple- HOWTO.html. Na most mondtam, hogy alapból a Linuxban a forwarding nincs engedélyezve. Azt szokták páran csinálni hogy a shell script végére még annyit beírnak hogy „echo 1 > /proc/sys/net/ipv4/ip_forward” és akkor a script indulásakor átállítja a helyi folyamat nyilvántartásban hálózati csomagtovábbításhoz, hogy az engedélyezve legyen. echo 1 > /proc/sys/net/ipv4/ip_forward Ennél egy picit szebb ha a „sysctl.conf”-ban átírjátok az ipv4 forwardingot 0-ról 1-re, mert akkor ez állandó kernel konfig lesz. A dőlt betűs részek lényegében maga az iptables-start.sh tartalma, csak felejtsétek az elejéről a „#!/bin/sh” -t. Beni