Späť na blog

Konfigurácia firewallu Iptables: Základné pravidlá a príkazy

Konfigurácia firewallu Iptables: Základné pravidlá a príkazy

Úvod

Iptables​ je nástroj príkazového riadku pre ​firewall ​. To znamená, že ide o softvér, ktorý vám umožňuje nakonfigurovať firewall vo vašom systéme. Zvyčajne je predvolene dostupný v systémoch ​Linux​. V tejto príručke si ​povieme o niektorých bežných pravidlách a príkazoch, ktoré patria k firewallu iptables​. Vždy, keď sa nejaké spojenie pokúsi nadviazať kontakt s vaším systémom, firewall sa odvolá na tieto pravidlá, aby určil, aký by mal byť ďalší krok.

Príkazy Iptables

Táto príručka predstaví niektoré z najdôležitejších príkazov iptables. Na sledovanie príručky budete musieť mať základné pochopenie toho, čo je iptables a ako funguje. Pomôže vám to lepšie pochopiť pravidlá, ktoré implementujete pomocou nasledujúcich príkazov. Pamätajte, že ktorýkoľvek z nižšie uvedených príkazov je možné použiť samostatne. Na druhej strane ich môžete tiež kombinovať a prispôsobovať svojim špecifickým potrebám.

Veci, ktoré treba mať na pamäti

Skôr ako budete čítať ďalej, tu je niekoľko vecí, ktoré by ste mali mať na pamäti:

  • Poradie pravidiel v iptables je dôležité.
  • Ak chcete pridať nové pravidlo na koniec reťazca, váš príkaz ​iptables bude musieť použiť ​-A.​​
  • Ak chcete pridať pravidlo na inú pozíciu, musíte použiť možnosť ​-I . Táto možnosť vám umožňuje určiť presné umiestnenie pravidla. Ak chcete umiestniť pravidlo na začiatok reťazca, jednoducho nezadávajte číslo pravidla.
  • Aby ste zabezpečili konzistentný prístup k vášmu serveru, predvolene zablokujte SSH prevádzku na porte 22.
  • V prípade, že tak neurobíte a stratíte prístup k serveru, môžete sa znova pripojiť pomocou konzoly. Povoľte SSH prevádzku, aby ste mohli zmeniť nastavenia firewallu.
  • Ak si niekedy budete chcieť prezrieť aktuálne nastavenú sadu pravidiel, použite príkazy sudo iptables -S​ a ​ ​sudo iptables -L.

Okrem toho máme ​podrobný návod, ako zobraziť a vymazať pravidlá firewallu iptables​, čo vám ďalej pomôže čo najlepšie využiť váš firewall iptables.

Teraz, keď máme predpoklady za sebou, poďme sa ponoriť do niektorých z ​bežných príkazov iptables​:

Ako uložiť pravidlá

Začneme tým, že určíme, ako môžete uložiť svoje pravidlá. Je dôležité poznamenať, že pravidlá iptables sú dočasné. To znamená, že po reštartovaní systému sa stratia – pokiaľ ich neuložíte. Tu je návod, ako môžete manuálne uložiť svoje nové pravidlá na serveroch ​Ubuntu​ a ​CentOS​ v tomto poradí:

  • Ubuntu

Najjednoduchší spôsob, ako uložiť nové pravidlá na serveri Ubuntu, je použiť balík iptables-persistent​. Môžete jednoducho ​vytvoriť Ubuntu server podľa tohto návodu​.

Prvým krokom na uloženie nových pravidiel iptables je inštalácia balíka iptables-persistent ​pomocou apt-get. Tu je návod, ako ho získať:

Iptables Firewall 1

Počas procesu inštalácie sa musíte rozhodnúť, či chcete uložiť aktuálne nastavené pravidlá firewallu. Ak chcete namiesto toho pravidlá aktualizovať a uložiť zmeny, použite tento príkaz:

Iptables Firewall 2

Vyššie uvedený príkaz zvyčajne funguje pre verzie Ubuntu novšie ako 16.04. Ak používate staršiu verziu, použite namiesto toho tento príkaz:

  • CentOS

Svoj firewall môžete nakonfigurovať pomocou iptables na systéme CentOS 6 alebo starších verziách. CentOS 7 namiesto toho používa FirewallD. Postupujte podľa tohto návodu, aby ste sa dozvedeli, ako nastaviť FirewallD na CentOS 7.

Svoje nové pravidlá v systéme CentOS môžete uložiť pomocou init skriptu ​iptables. Pozrite si nasledujúci príkaz:

Tento príkaz uloží vaše nové pravidlá pre firewall iptables. Aktuálne aktívne pravidlá iptables nájdete v /etc/sysconfig/iptables​ súbore.

Užitočné príkazy Iptables

Teraz prejdime k niektorým veľmi užitočným príkazom firewallu iptables, ktoré možno budete musieť použiť na svojom serveri.

  • Loopback pripojenia

Najprv preskúmame, ako môžete povoliť loopback pripojenia. Váš systém používa loopback rozhranie na odosielanie pripojení samému sebe. Predstavte si napríklad, že ste spustili tento príkaz: ​ping localhost​ alebo ​ping 127.0.0.1​. Váš server bude používať rozhranie spätnej slučky, alebo lo​, aby v podstate pingol sám seba. Inokedy ho server môže použiť, ak je váš aplikačný server nakonfigurovaný na pripojenie k adrese „localhost“.

Bez ohľadu na situáciu sa musíte uistiť, že váš firewall iptables tieto pripojenia neblokuje. Preto budete musieť povoliť pripojenia spätnej slučky, aby tieto funkcie mohli prebiehať.

Tu sú príkazy, ktoré spustíte na povolenie všetkej prevádzky prichádzajúcej na rozhranie spätnej slučky:

Iptables Firewall 3

  • Nadviazané a súvisiace prichádzajúce pripojenia

Ďalším typom pripojenia, ktoré možno budete musieť povoliť, je odchádzajúce pripojenie. Aby ste sa uistili, že váš server prijíma a odosiela prichádzajúcu aj odchádzajúcu prevádzku, musíte povoliť nadviazané a súvisiace prichádzajúce pripojenia. To umožňuje serveru odosielať spätnú prevádzku do odchádzajúcich pripojení. Na povolenie nadviazaných, ako aj súvisiacich prichádzajúcich pripojení použite tento príkaz:

Established and Related Incoming Connections

  • Nadviazané odchádzajúce pripojenia

Server zvyčajne odosiela odpovede na prichádzajúce pripojenia vo forme odchádzajúcej prevádzky nadviazaných pripojení. Ak ich chcete povoliť, použite nasledujúci príkaz:

Established Outgoing Connections

  • Z interného na externé

Niekedy môže byť potrebné nakonfigurovať firewall tak, aby umožnil prístup z internej siete do externej. V predvolenom nastavení by vaša externá sieť mala byť ​eth0​ a ​eth1 by mala byť vaša interná sieť. Ak je to tak, na povolenie prístupu použite tento príkaz:

Internal to External

  • Zahadzovanie neplatných paketov

Niekedy budú niektoré pakety sieťovej prevádzky označené ako neplatné. Vo väčšine prípadov môžete tieto neplatné pakety jednoducho zahodiť. Ak to chcete urobiť, použite nasledujúci príkaz:

Dropping Invalid Packets

Pravidlá pre blokovanie IP adries

Ďalej sa pozrieme na niektoré príkazy, ktoré môžete použiť na blokovanie pripojení prichádzajúcich z určitých IP adries. Aby sme si to zjednodušili, v našich príkazoch použijeme ako príklad IP adresu ​15.15.15.51 IP adresu. Túto hodnotu môžete nahradiť vašou konkrétnou IP adresou.

V ​-s 15.15.15.51, ​​to ​-s​ znamená zdroj (source). Príkaz teda špecifikuje zdrojovú IP adresu „15.15.15.51“. Podobne môžete špecifikovať zdrojovú IP adresu v akomkoľvek pravidle firewallu. To zahŕňa pravidlo povolenia aj odmietnutia.

Ak chcete pripojenie odmietnuť, v príkaze použijete REJECT namiesto DROP, takto:

V dôsledku toho váš server vráti chybu „connection refused“ (pripojenie odmietnuté) vždy, keď táto konkrétna IP adresa odošle požiadavku na pripojenie.

  • Blokovanie pripojení na konkrétne rozhranie

Môžete zablokovať všetky požiadavky na pripojenie prichádzajúce z konkrétnej IP adresy na konkrétne sieťové rozhranie. V našom príklade je IP adresa 15.15.15.51​ a sieťové rozhranie je ​eth0​. Na zablokovanie pripojení použite tento príkaz:

Skvelé je, že sieťové rozhranie môžete špecifikovať v akomkoľvek pravidle. To znamená, že akékoľvek pravidlo môže byť aplikované a obmedzené len na konkrétnu sieť.

Pravidlá pre službu: SSH

SSH ​sa stáva dôležitým, ak používate cloudový server. V tomto prípade musíte povoliť prichádzajúce pripojenia SSH na porte 22. Povolenie týchto pripojení vám umožní pripojiť sa k serveru a spravovať ho. Tu si rozoberieme niekoľko bežných pravidiel týkajúcich sa SSH.

  • Povolenie všetkých prichádzajúcich SSH

Nasledujúce príkazy povolia všetky prichádzajúce SSH pripojenia:

Vo vyššie uvedenej sade musíte použiť druhý príkaz iba vtedy, ak politika ​OUTPUT​ nie je nastavená na ​ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných SSH pripojení.

  • Povolenie prichádzajúceho SSH z podsiete

Predchádzajúci príkaz povoľuje všetky prichádzajúce pripojenia. Pomocou nasledujúcich príkazov môžete povoliť iba prichádzajúce pripojenia z konkrétnej IP adresy alebo podsiete. Povedzme, že chcete povoliť iba prichádzajúce pripojenia z ​15.15.15.0/24​ podsiete:

Podobne ako predtým, druhý príkaz musíte použiť iba vtedy, ak politika ​OUTPUT​ nie je nastavená na ​ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných SSH pripojení.

  • Povolenie odchádzajúceho SSH

Tieto príkazy použite, ak politika firewallu ​OUTPUT​ nie je nastavená na ​ACCEPT​ a chcete povoliť SSH pripojenia. To umožní vášmu serveru nadviazať SSH pripojenia k iným serverom:

Ak chcete ďalej využívať SSH na svojich cloudových serveroch, pozrite si naše návody na ​ ako použiť SSH na pripojenie k vzdialenému serveru v Ubuntu ​a ako nakonfigurovať váš Linux server na používanie autentifikácie pomocou SSH kľúčov​.

  • Povolenie prichádzajúceho Rsync z podsiete

Rsync​ je funkcia, ktorú môžete použiť na prenos súborov z jedného systému do druhého. Beží na porte 873. Ak teda chcete povoliť prichádzajúce Rsync pripojenia na porte 873 z konkrétnej IP adresy alebo podsiete, použite nasledujúce príkazy:

Ako vidíte, špecifikovali sme zdrojovú IP adresu spolu s cieľovým portom. Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ​ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných Rsync pripojení. Okrem toho si môžete pozrieť náš ​návod, ako využiť Rsync na synchronizáciu lokálnych a vzdialených adresárov na VPS​.

Pravidlá pre službu: Webový server

HTTP pripojenia sú zvyčajne prijímané na porte 80. Podobne HTTPS zvyčajne prichádza na porte 443. Webové servery ako ​Apache​ a ​Nginx​ počúvajú na týchto portoch, aby zachytili požiadavky na pripojenie. Niekedy môžu predvolené nastavenia spôsobiť, že váš server tieto prichádzajúce požiadavky odmietne alebo zahodí. Preto budete musieť nastaviť nové pravidlá, aby ste prevádzku povolili.

  • Povolenie všetkých prichádzajúcich HTTP pripojení

Všetky prichádzajúce HTTP pripojenia na porte 80 môžete povoliť pomocou týchto príkazov:

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných HTTP pripojení.

  • Povolenie všetkých prichádzajúcich HTTPS pripojení

Použite tieto príkazy na povolenie všetkých prichádzajúcich požiadaviek na HTTPS pripojenie na porte 443:

Druhý príkaz použijete iba vtedy, ak firewall iptables ​OUTPUT​ politika nie je nastavená na ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných HTTP pripojení.

  • Povolenie všetkých prichádzajúcich pripojení z HTTP a HTTPS

Ak chcete povoliť prevádzku z portov HTTP aj HTTPS, môžete použiť modul multiport. V takom prípade použite tieto príkazy:

Druhý príkaz použijete iba vtedy, ak firewall ​OUTPUT​ politika nie je nastavená na ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných HTTP a HTTPS pripojení.

Pravidlá pre službu: MySQL

Niekedy môže klient použiť vzdialený server na prístup k vášmu ​MySQL​ databázovému serveru. V takom prípade musíte manuálne povoliť prichádzajúcu prevádzku z príslušného portu. MySQL načúva požiadavkám na pripojenie z portu 3306.

  • Povolenie prichádzajúcich MySQL pripojení z podsiete

Ak chcete povoliť MySQL pripojenia z konkrétnej podsiete, budete musieť špecifikovať zdroj. V našom príklade povolíme prichádzajúcu prevádzku z 15.15.15.0/24​ podsiete pomocou týchto príkazov:

Druhý príkaz použijete iba vtedy, ak firewall ​OUTPUT​ politika nie je nastavená na ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných MySQL pripojení.

  • Povolenie MySQL pripojení k rozhraniu

Ak chcete tiež špecifikovať, ktoré sieťové rozhranie má prijímať MySQL pripojenia, môžete použiť tieto príkazy:

V tomto prípade povoľujeme pripojenia k súkromnému sieťovému rozhraniu s názvom eth1​.

Druhý príkaz použijete iba vtedy, ak firewall ​OUTPUT​ politika nie je nastavená na ACCEPT​. Povoľuje odchádzajúcu prevádzku nadviazaných MySQL pripojení.

Môžete postupovať podľa nášho ​návodu na jednoduché nastavenie MySQL na vašom serveri​.

Pravidlá pre službu: PostgreSQL

Váš klient môže použiť vzdialený server na prístup k vášmu ​PostgreSQL​ databázovému serveru. V takom prípade musíte tieto prichádzajúce pripojenia povoliť. Tieto pripojenia budú prebiehať cez port 5432.

  • Povolenie prichádzajúcich PostgreSQL pripojení z podsiete

Na povolenie prichádzajúcich PostgreSQL pripojení z konkrétnej podsiete alebo IP adresy môžete použiť nasledujúce príkazy. Ako vidíte, špecifikovali sme zdroj, ktorým je ​15.15.15.0/24​ podsieť.

Druhý príkaz použijete iba vtedy, ak firewall ​OUTPUT​ politika nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných PostgreSQL spojení.

  • Povolenie PostgreSQL spojení na konkrétne rozhranie

Ak chcete povoliť PostgreSQL spojenia iba na konkrétne sieťové rozhranie, použite tieto príkazy:

V tomto prípade povoľujeme spojenia na súkromné sieťové rozhranie s názvom eth1​. Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ​ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných PostgreSQL spojení.

Postupujte podľa tohto ​návodu na inštaláciu PostgreSQL na váš Ubuntu server​.

Pravidlá pre službu: Mail

Možno budete musieť nakonfigurovať firewall aj v súlade s poštovým serverom, ktorý používate. Napríklad ​Sendmail​ a ​Postfix​ môžu prijímať spojenia na rôznych portoch. Závisí to od protokolu, ktorý používate na doručovanie pošty. Ak chcete blokovať a povoliť určité poštové spojenia, musíte vedieť, aký protokol používate.

  • Povolenie prichádzajúcich SMTP spojení

SMTP spojenia zvyčajne prichádzajú na porte 25. Hoci SMTP tiež bežne používa port 587 pre odchádzajúcu poštu. Ak chcete povoliť serveru odpovedať na tieto spojenia, použite nasledujúce príkazy:

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných SMTP spojení.

  • Povolenie všetkých prichádzajúcich IMAP spojení

Ak chcete povoliť serveru odpovedať na všetky prichádzajúce IMAP spojenia na porte 143, jednoducho zadajte a spustite toto:​

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných IMAP spojení.

  • Povolenie všetkých prichádzajúcich IMAPS spojení

Použite tieto príkazy, aby váš server mohol odpovedať na IMAPS spojenia na porte 993:

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných IMAPS spojení.

  • Povolenie všetkých prichádzajúcich POP3 spojení

Tieto spojenia budú prichádzať na porte 993. Ak chcete, aby váš server odpovedal na požiadavky o IMAPS spojenie, použite nasledujúce príkazy:

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT​ nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných POP3 spojení.

  • Povolenie všetkých prichádzajúcich POP3S spojení

Použite tieto príkazy, aby ste umožnili vášmu serveru nadviazať spojenia s požiadavkami POP3S prichádzajúcimi na porte 995:

Druhý príkaz použijete iba vtedy, ak politika firewallu ​OUTPUT nie je nastavená na ACCEPT​. Umožňuje odchádzajúcu prevádzku nadviazaných POP3S spojení.

  • Ako zablokovať odchádzajúcu SMTP poštu

Namiesto povoľovania prichádzajúcich spojení a povolenia odpovede servera možno budete chcieť úplne zablokovať odchádzajúcu poštu. Všetku odchádzajúcu SMTP poštu na porte 25 môžete zablokovať pomocou tohto príkazu:

V dôsledku toho bude všetka odchádzajúca prevádzka na porte 25 odmietnutá firewallom iptables. Rovnakú štruktúru príkazu môžete použiť, ak chcete odmietnuť akúkoľvek inú službu. Stačí nahradiť port 25 príslušným číslom portu.

Záver

Táto príručka pokrýva základné príkazy firewallu iptables. Poskytuje vám základné nástroje, ktoré potrebujete na efektívnu konfiguráciu firewallu iptables. Majte na pamäti, že neexistuje univerzálne riešenie na všetko. Tieto príkazy sú mimoriadne flexibilné. To znamená, že ich môžete použiť akýmkoľvek spôsobom, ktorý najlepšie vyhovuje vám a vašim požiadavkám.

Príjemnú prácu s počítačom!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.