Ú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
iptablesbude 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ť:
|
1 |
sudo apt-get install iptables-persistent |

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:
|
1 |
sudo netfilter-persistent save |

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:
|
1 |
sudo invoke-rc.d iptables-persistent save |
-
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:
|
1 |
sudo service iptables save |
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:
|
1 2 |
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT |

-
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:
|
1 |
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
![]()
-
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:
|
1 |
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT |
![]()
-
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:
|
1 |
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT |

-
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:
|
1 |
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP |
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.
|
1 |
sudo iptables -A INPUT -s 15.15.15.51 -j DROP |
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:
|
1 |
sudo iptables -A INPUT -s 15.15.15.51 -j REJECT |
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:
|
1 |
iptables -A INPUT -i eth0 -s 15.15.15.51 -j DROP |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp -s 15.15.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A OUTPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp -s 15.15.0/24 --dport 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp -s 15.15.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -i eth1 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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ť.
|
1 2 |
sudo iptables -A INPUT -p tcp -s 15.15.0/24 --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -i eth1 -p tcp --dport 5432 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -o eth1 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 25 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 25 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 143 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 143 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 993 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 993 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 110 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 110 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 2 |
sudo iptables -A INPUT -p tcp --dport 995 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 995 -m conntrack --ctstate ESTABLISHED -j ACCEPT |
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:
|
1 |
sudo iptables -A OUTPUT -p tcp --dport 25 -j REJECT |
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!

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