Výukový program iptables
Iptables je firewall príkazového riadka, ktorý filtruje pakety podľa definovaných pravidiel. S Iptables môžu používatelia prijať, odmietnuť alebo pokračovať v spojení; je neuveriteľne všestranný a široko používaný napriek tomu, že bol nahradený nftables.
Po prečítaní tohto návodu pochopíte pravidlá Iptables a definujete pravidlá Iptables na ochranu vašej domácej siete.
Poznámka: Príkaz sudo bol pridaný pre čitateľov, ktorí potrebujú skopírovať a vložiť pravidlá uvedené v tomto návode iptables.
Slovník iptables:
TARGET: Pri použití iptables je cieľom akcia, ktorú má Iptables použiť, keď sa paket zhoduje s pravidlom.
REŤAZ: Reťaz je zoznam pravidiel. dostupné vstavané reťazce sú: INPUT, OUTPUT, FORWARD, PREROUTING a POSTROUTING.
TABLE: Tabuľky sú funkcie iptables pre každý účel. Napríklad existuje tabuľka pre úlohy smerovania a ďalšia tabuľka pre filtrovanie úloh; každá tabuľka obsahuje reťazce pravidiel.
Dostupné tabuľky sú filter, nat, raw, security a mangle. Každá tabuľka obsahuje vstavané reťazce (pravidiel). Nasledujúci zoznam ukazuje, ktoré reťazce obsahujú jednotlivé tabuľky:
FILTER | INPUT | OUTPUT | FORWARD | ||
---|---|---|---|---|---|
NAT | PREROUTING | POSTROUTING | OUTPUT | ||
RAW | PREROUTING | OUTPUT | |||
MANGLE | PREROUTING | POSTROUTING | OUTPUT | INPUT | FORWARD |
SECURITY | INPUT | OUTPUT | FORWARD |
V závislosti od akcie, ktorú chcete, aby iptables vykonal, musíte zadať tabuľku pomocou voľby -t, za ktorou nasleduje názov tabuľky. V tomto návode sa možnosť -t nepoužíva. Tento tutoriál sa zameriava na účely filtrovania pomocou tabuľky filtrov, ktorá sa štandardne používa, keď nie je zadaná možnosť -t. Pri čítaní tohto návodu sa naučíte niektoré z vyššie uvedených pojmov.
Ako nainštalovať:
Ak chcete nainštalovať Iptables na Debian a jeho založené distribúcie Linuxu, spustite:
Pred inštaláciou Iptables na linuxové distribúcie založené na RedHat musíte vypnúť Firewalld spustením:
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld
Potom nainštalujte Iptables vykonaním:
sudo systemctl start iptables
sudo systemctl start ip6tables
sudo systemctl enable iptables
sudo systemctl enable ip6tables
sudo systemctl start ip6tables
Začíname s Iptables:
Pred spustením skontrolujte predchádzajúce pravidlá zadaním príkazu iptables na zoznam existujúcich politík a pravidiel pomocou parametra -L (–list).
Výstup vyššie zobrazuje 3 riadky:Reťazový INPUT, Reťazec VPRED a Reťazový VÝSTUP. Kde INPUT odkazuje na pravidlá týkajúce sa prichádzajúcej prevádzky, OUTPUT odkazuje na pravidlá aplikované na odchádzajúce prenosy a FORWARD odkazuje na pravidlá smerovania.
Výstup tiež ukazuje, že neexistujú žiadne definované pravidlá a akceptujú sa všetky definované politiky.
Existujú 3 typy zásad: AKCEPTOVAŤ, ODMIETNUŤ a ZRUŠIŤ.
Zásada AKCEPTOVAŤ povoľuje pripojenia; zásada ODMIETNUŤ odmietne pripojenia a vráti chybu; zásada DROP odmieta pripojenia bez toho, aby spôsobovala chyby. Pri použití DROP sú pakety UDP zahodené a správanie bude rovnaké ako pri pripájaní k port bez služby. Pakety TCP vrátia ACK/RST, čo je rovnaká odpoveď, akou odpovie otvorený port bez služby. Pri použití ODMIETNUTIA ICMP paket vráti zdrojovému hostiteľovi cieľ – nedosiahnuteľný.
Keď pracujete s Iptables, musíte najprv definovať tri politiky pre každý reťazec; potom môžete pridať výnimky a špecifikácie. Pridávanie pravidiel vyzerá takto:
sudo iptables -P OUTPUT <ACCEPT/DROP/REJECT>
sudo iptables -P FORWARD <ACCEPT/DROP/REJECT>
Povolené a reštriktívne pravidlá pre Iptables:
Iptables môžete použiť s povolenou politikou akceptovaním všetkých prichádzajúcich pripojení okrem tých, ktoré konkrétne zrušíte alebo odmietnete. V tomto prípade je povolené každé pripojenie, pokiaľ nedefinujete pravidlo na jeho konkrétne odmietnutie.
Naopak, reštriktívne politiky odmietajú všetky pripojenia okrem tých, ktoré špecificky akceptujete. V tomto prípade je každé pripojenie odmietnuté, pokiaľ nedefinujete pravidlo na jeho prijatie.
Uplatnenie reštriktívnych pravidiel na Iptables:
Nasledujúci príklad ukazuje, ako použiť reštriktívnu politiku s Iptables zrušením všetkej prichádzajúcej prevádzky okrem povolenej.
Blokovanie prichádzajúcich prenosov.
DÔLEŽITÉ: ak použijete nasledujúce 3 pravidlá, môžete zostať bez internetového pripojenia. Pomocou pravidiel uvedených v časti „Pravidlá pripájania Iptables a stavy Iptables“ pridáte potrebné výnimky na obnovenie vášho prístupu na internet. Na vyprázdnenie pravidiel môžete dôsledne spúšťať sudo iptables -F.
Môžete zablokovať všetku prichádzajúcu premávku, čím umožníte iba odchádzajúcej prevádzke prehliadať web a aplikácie, ktoré potrebujete.
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
Kde :
-P=Zásady
sudo iptables -P INPUT DROP: prikáže iptables odmietnuť všetku prichádzajúcu komunikáciu bez odpovede zdroju.
sudo iptables -P OUTPUT ACCEPT: definuje politiku ACCEPT pre odchádzajúce prenosy.
sudo iptables -P FORWARD DROP: inštruuje iptables, aby nevykonávali úlohy smerovania, pričom zahodí všetky pakety určené inému hostiteľovi (pokúšajú sa prejsť cez firewallované zariadenie) bez odpovede.
Príklad vyššie umožňuje prehliadanie webu a pripojenia spustené lokálnym zariadením (-P OUTPUT ACCEPT), ale zabráni pripojeniam iniciovaným iným hostiteľom (-P INPUT DROP), ako je ssh pokusy o prístup k vášmu zariadeniu nevracajú chybové správy.
Keď povolíte Iptables s reštriktívnou politikou ako v predchádzajúcom príklade, musíte pridať pravidlá na úpravu vašej konfigurácie. Ak napríklad zachováte vyššie uvedenú konfiguráciu bez pridania primeranej výnimky pre rozhranie spätnej slučky (lo), niektoré aplikácie nemusia fungovať správne. Budete tiež musieť povoliť prichádzajúce prenosy, ktoré patria alebo súvisia s pripojením spusteným vaším zariadením.
Iptables Pravidlá pridávania a stavy Iptables
Je dôležité pochopiť, že Iptables uplatňuje pravidlá podľa objednávky. Keď definujete pravidlo po predchádzajúcom pravidle, druhé pravidlo prepíše posledné, ak sa paket zhoduje s rovnakým pravidlom.
Páči sa mi predchádzajúci príklad; zablokovali ste všetku prichádzajúcu komunikáciu, musíte pridať výnimky pre rozhranie spätnej slučky; to možno dosiahnuť pridaním parametra -A (Append).
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
Modul (-m) conntrack –ctstate ESTABLISHED,RELATED dáva Iptables pokyn, aby potvrdil, či je stav pripojenia STANBLISHED alebo RELATED k existujúcemu pripojeniu pred použitím definovanej politiky pravidiel.
Iptables môžu kontrolovať 4 možné stavy:
Stav Iptables NOVÝ: Paket alebo prenos, ktorý povolíte alebo zablokujete, sa pokúsi nadviazať nové pripojenie.
Stav Iptables ESTABLISHED: Paket alebo prenos, ktorý povolíte alebo zablokujete, je súčasťou vytvoreného pripojenia.
Stav iptables SÚVISIACE: Paket alebo prenos začína nové pripojenie, ale súvisí s existujúcim pripojením.
Stav iptables NEPLATNÝ: paket alebo prenos je bez stavu neznámy.
Prvý riadok vyššie uvedeného príkladu inštruuje Iptables, aby prijal prichádzajúce pakety z prevádzky prichádzajúcej z alebo súvisiacej s pripojeniami spustenými vaším zariadením. Druhý riadok inštruuje Iptables, aby akceptovali iba odchádzajúce prenosy z už vytvorených spojení.
Iptables Append na akceptovanie spätnej slučky a definovanie rozhraní:
Rozhranie spätnej slučky používajú programy, ktoré potrebujú interakciu s localhostom. Ak nepovolíte spätnú slučku, niektoré aplikácie nemusia fungovať.
Nasledujúci príkaz umožňuje spätné pripojenie:
sudo iptables -A OUTPUT -o lo -j ACCEPT
Kde -i a -o sa používajú na špecifikáciu sieťového zariadenia pre prichádzajúcu prevádzku (-i) a odchádzajúcu prevádzku (-o).
Použitie tolerantnej politiky s Iptables:
Môžete tiež definovať povoľujúcu politiku umožňujúcu všetku komunikáciu okrem špecifikovanej zrušenej alebo odmietnutej. Môžete povoliť všetko okrem konkrétnej IP alebo rozsahu IP, alebo môžete odmietnuť pakety na základe ich hlavičiek, medzi ďalšími možnosťami.
Nasledujúci príklad ukazuje, ako použiť tolerantnú politiku umožňujúcu všetku komunikáciu okrem rozsahu IP blokovaného pre službu ssh.
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP
sudo iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.168.1.100-192.168.1.110 -j REJECT
Vo vyššie uvedenom príklade sa uplatňuje oprávnená politika, ale blokuje ssh prístup ku všetkým IP adresám patriacim do rozsahu 192.168.1.100 a 192.168.1.110.
Kde -p určuje protokol, –dport (alebo –destination-port) cieľový port (22,ssh) a modul iprange s argumentom –src-range (zdrojový rozsah) umožňuje definovať rozsah IP. Voľba -j (–jump) inštruuje iptables, čo robiť s paketom; v tomto prípade zastupujeme ODMIETNUTIE.
Blokovanie portov pomocou Iptables
Nasledujúci príklad ukazuje, ako zablokovať konkrétny port pre všetky pripojenia, port ssh.
Ukladanie zmien Iptables
Pravidlá iptables nie sú trvalé; po reštarte sa pravidlá neobnovia. Aby boli vaše pravidlá trvalé, spustite nasledujúce príkazy, pričom prvý riadok ukladá pravidlá do súboru /etc/iptables.up.rules a druhý riadok slúži na vytvorenie súboru pre iptables, ktorý sa spustí po reštarte.
nano /etc/network/if-pre-up.d/iptables
Do súboru pridajte nasledovné a zatvorte ukladanie zmien (CTRL+X).
/sbin/iptables-restore < /etc/iptables.up.rules
Nakoniec udeľte povolenia na spustenie súboru spustením:
Pravidlá preplachovania alebo odstraňovania Iptables:
Všetky svoje pravidlá Iptables môžete odstrániť spustením nasledujúceho príkazu:
Ak chcete odstrániť konkrétny reťazec, napríklad INPUT, môžete spustiť:
Záver:
Iptables patria medzi najsofistikovanejšie a najflexibilnejšie firewally na trhu. Napriek tomu, že bol nahradený, zostáva jedným z najrozšírenejších obranných a smerovacích softvérov.
Jeho implementáciu sa môžu rýchlo naučiť noví používatelia Linuxu so základnými znalosťami TCP/IP. Keď používatelia pochopia syntax, definovanie pravidiel sa stáva jednoduchou úlohou.
Existuje oveľa viac doplnkových modulov a možností, ktoré neboli zahrnuté v tomto úvodnom návode. Viac príkladov iptables si môžete pozrieť na stránke Iptables pre začiatočníkov.
Dúfam, že tento tutoriál Iptables bol užitočný. Pokračujte v sledovaní Linuxovej rady a získajte ďalšie tipy a návody pre Linux.