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 iptablesCentOS számára
sudo yum install iptables-servicesA RHEL számára
sudo yum install iptablesAz iptables verziójának megismeréséhez írja be a következő parancsot a termináljába.
sudo iptables --versionOpenSUSE 42.1 esetén a leállításhoz írja be a következőt.
sudo /sbin/rcSuSEfirewall2 stopHogy újra kezdjem
sudo /sbin/rcSuSEfirewall2 start
Ubuntu esetén a leállításhoz írja be a következőt.
sudo service ufw stopHogy újra kezdjem
sudo service ufw startDebian és RHEL esetén írja be a következőt a leállításhoz.
sudo /etc/init.d/iptables stopHogy újra kezdjem
sudo /etc/init.d/iptables startCentOS esetén a leállításhoz írja be a következőt.
sudo service iptables stopHogy újra kezdjem
sudo service iptables startAz 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 -LHa 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 -SA 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 -FHa 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 INPUTsudo iptables -F OUTPUTsudo iptables -F FORWARDELFOGADJA 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 DROPA 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 ACCEPTUgyanez vonatkozik a többi láncra is
iptables --policy OUTPUT DROPiptables --policy FORWARD DROPMegjegyzé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 ACCEPTA 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 ACCEPTAlapé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 DROPHa 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 DROPHa í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 ACCEPTItt 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 ACCEPTA 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 ACCEPTA 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 DROPTehá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 DROPMost 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 DROPMost 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 ACCEPTTehá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 DROPDDoS 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 ACCEPTA 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_backlogPort 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-scansudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST RST -m limit —limit 1/s -j RETURNsudo iptables -A block-scan -j DROPItt 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 DROPIgé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 iptablesEz 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 iptablesMost ellenőrizze az iptables állapotát.
sudo systemctl status iptablesMost 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 ufwAz UFW eltávolítása után adja ki az alábbi parancsot a terminálban
sudo apt-get install firewall-appletVagy
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 -yA 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 firewalldMivel 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-zonesvagy
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-servicesItt 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=internalvagy
sudo firewall-cmd --set-default-zone=publicA zóna megváltoztatása után ellenőrizze, hogy megváltozik-e vagy sem.
sudo firewall-cmd --get-default-zonesudo firewall-cmd --permanent --zone=public --add-port=80/tcpEz 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 --reloadMost 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-allA 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/tcpA „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=ftpA „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=smtpCseré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=ftpsudo firewall-cmd --zone=public --remove-service=smtpHa 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-onA „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-offsudo 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.









