Ubuntu Iptables: Ako ovládať sieťovú prevádzku pomocou iptables?


“...Unixová pomôcka užívateľského priestoru, ktorá umožňuje správcom systému konfigurovať pravidlá filtrovania IP paketov implementované modulom sieťového filtra jadra. ” Iptables funguje ako firewall pomocou pravidiel filtrovania paketov na základe rôznych kritérií, ako sú IP adresa, port a protokoly.

Táto príručka bude diskutovať o tom, ako nakonfigurovať a používať pravidlá iptables v systéme Ubuntu na zabezpečenie vašej siete. Či už ste začínajúcim používateľom Linuxu alebo skúseným správcom systému, z tejto príručky sa tak či onak dozviete niečo užitočné o iptables.

Iptables sú predinštalované na Ubuntu a väčšine distribúcií založených na Debiane. Ubuntu tiež obsahuje firewall GUFW, grafickú alternatívu, ktorú môžete použiť na prácu s iptables.

POZNÁMKA: Ak chcete používať a konfigurovať iptables, budete vo svojom systéme potrebovať privilégiá sudo. Viac o sudo sa dozviete v nasledujúcom návode.

Teraz, keď viete, čo je Iptables, poďme sa do toho pustiť!

Ako používať iptables na správu návštevnosti IPv4?

Ak chcete používať Iptables na správu siete a prenosu IPv4, musíte pochopiť nasledovné:

Príkaz Iptables

Iptables ponúka výber možností, ktoré vám umožňujú prispôsobiť a vyladiť vaše pravidlá iptables. Poďme diskutovať o niektorých z týchto parametrov a uvidíme, čo robia.

POZNÁMKA: Môžete nakonfigurovať sadu pravidiel, ktoré spravujú špecifickú podmnožinu, známu ako reťazce iptables.

Parametre iptables

Skôr než začneme vytvárať a konfigurovať pravidlá iptables, pochopme najprv základy iptables, ako je všeobecná syntax a predvolené argumenty.

Zvážte nasledujúci príkaz:

sudo iptables -I INPUT -s 192.168.0.24 -j DROP

Vyššie uvedený príkaz hovorí iptables, aby vytvorili pravidlo v reťazci. Pravidlo zahodí všetky pakety z IP adresy 192.168.0.24.

Preskúmajme príkaz riadok po riadku, aby sme mu lepšie porozumeli.

  • Prvý príkaz iptables volá pomocný program príkazového riadka iptables.

  • Ďalej je argument -I použitý na vloženie. Argument vloženia pridá pravidlo na začiatok reťazca iptables, a tak získa vyššiu prioritu. Ak chcete pridať pravidlo na konkrétnom čísle v reťazci, použite argument -I, za ktorým nasleduje číslo, ku ktorému má byť pravidlo priradené.

  • Argument -s pomáha špecifikovať zdroj. Preto používame argument -s, za ktorým nasleduje adresa IP.

  • Parameter -j s iptables určuje skok na konkrétny cieľ. Táto možnosť nastavuje akciu, ktorú Iptables vykoná, keď sa nájde zodpovedajúci paket. Iptables štandardne ponúka štyri hlavné ciele, medzi ktoré patria: ACCEPT, DROP, LOG a REJECT.

Iptables ponúka výber parametrov, ktoré môžete použiť na konfiguráciu rôznych pravidiel. Rôzne parametre, ktoré môžete použiť na konfiguráciu pravidiel iptables, zahŕňajú:

-p –protocol

Určuje protokol pripojenia; napríklad TCP, UDP atď.

-d –destination

Určuje cieľ, ktorým môže byť adresa, názov siete alebo názov hostiteľa.

-j –jump

Nastaví akciu, ktorú vykoná iptables po nájdení paketu.

-o –out-interface

Nastavuje rozhranie, cez ktoré iptable odosiela paket.

-i –in-interface

Nastavuje rozhranie používané na vytváranie sieťových paketov.

-c –set-counters

Umožňuje správcovi nastaviť počítadlá bajtov a paketov pre zadané pravidlo.

-g –goto chain

Parameter určuje, že spracovanie by malo po návrate pokračovať v reťazci užívateľského nastavenia.

-f –fragment

Hovorí iptables, aby aplikovalo pravidlo iba na druhý a nasledujúci fragment fragmentovaných paketov.

Možnosti iptables

Príkaz iptables podporuje širokú škálu možností. Niektoré bežné zahŕňajú:

-D –delete

Odstráni pravidlo zo zadaného reťazca

-F –flush

Odstráni všetky pravidlá, jedno po druhom

-L –list

Zobrazuje všetky pravidlá v zadanom reťazci

-I –insert

Vloží pravidlo do určeného reťazca (odovzdané ako číslo, ak nie je zadané žiadne číslo; pravidlo sa pridá na začiatok)

-C –check

Dopyty na zhodu pravidla; požiadavka v špecifikovanom pravidle

-v –verbose

Pri použití s parametrom -L zobrazí viac podrobností

-N –new-chain <name>

Pridá nový reťazec definovaný používateľom

-X –delete-chain <name>

Odstráni špecifický reťazec definovaný používateľom

Tabuľky iptables

Linuxové jadro má predvolené tabuľky, ktoré obsahujú súbor súvisiacich pravidiel. Tieto predvolené tabuľky majú sadu predvolených reťazcov, ale používatelia si môžu pravidlá prispôsobiť pridaním pravidiel definovaných používateľom.

POZNÁMKA: Predvolené tabuľky budú vo veľkej miere závisieť od konfigurácie jadra a nainštalovaných modulov.

Tu sú predvolené tabuľky iptables:

1: Filtračné tabuľky

Tabuľka filtrov je predvolená tabuľka, ktorá obsahuje reťazce používané na filtrovanie sieťových paketov. Niektoré z predvolených reťazcov v tejto tabuľke zahŕňajú:

Chain Description
Input Iptables use this chain for any incoming packets to the system, i.e., packets going to local network sockets.
Output Iptables use the output chain for locally generated packets, i.e., packets going out of the system.
Forward This chain is what the Iptables use for packets routed or forwarded via the system.

2: Tabuľky NAT

NAT alebo tabuľka sieťových adries je smerovacie zariadenie používané na úpravu zdrojových a cieľových IP adries v sieťovom pakete. Hlavným použitím tabuľky NAT je prepojenie dvoch sietí v rozsahu súkromných adries s verejnou sieťou.

NAT bol vyvinutý na podporu maskovania skutočných IP adries, čo umožňuje súkromným rozsahom IP adries dosiahnuť vonkajšiu sieť. To pomáha chrániť podrobnosti o interných sieťach pred odhalením vo verejných sieťach.

Tabuľka NAT sa použije, keď paket iniciuje nové spojenie.

Iptables majú predvolenú tabuľku pre adresovanie NAT. Táto tabuľka má tri hlavné reťazce:

Chain Description
PREROUTING Allows the modification of packet information before arriving in the INPUT chain—used for incoming packets
OUTPUT Reserved for packets created locally, i.e., before network routing occurs
POSTROUTING Allows the modification of outgoing packets— Packets leaving the OUTPUT chain

Nižšie uvedený diagram zobrazuje prehľad tohto procesu na vysokej úrovni.

Na zobrazenie tabuliek smerovania NAT použite príkaz uvedený nižšie.

iptables -t nat -n -v -L

3: Mangle Tables

Mandlový stôl sa používa hlavne na špeciálnu úpravu paketov. Zjednodušene povedané, používa sa na úpravu hlavičiek IP sieťového paketu. Modifikácia paketov môže zahŕňať zmenu TTL hodnoty paketu, zmenu platných sieťových skokov pre paket atď.

Tabuľka obsahuje nasledujúce predvolené reťazce:

POSTROUTING

Používa sa pre odchádzajúce pakety

INPUT

Používa sa pre pakety prichádzajúce priamo na server

OUTPUT

Používa sa pre lokálne pakety

Forward

Vyhradené pre pakety smerované cez systém

4: Surové tabuľky

Hlavným účelom nespracovanej tabuľky je nakonfigurovať výnimky pre pakety, ktoré nie sú určené na spracovanie systémom sledovania. Nespracovaná tabuľka nastavuje na pakety značku NOTRACK, čím vyzve funkciu conntrack, aby paket ignorovala.

Conntrack je sieťová funkcia linuxového jadra, ktorá umožňuje linuxovému jadru sledovať všetky sieťové pripojenia, čo umožňuje jadru identifikovať pakety tvoriace sieťový tok.

Surová tabuľka má dva hlavné reťazce:

Chain Description
PREROUTING Reserved for packets received by network interfaces
OUTPUT Reserved for packets initiated by local processes

5: Tabuľka zabezpečenia

Primárne použitie tejto tabuľky je nastavenie interného bezpečnostného mechanizmu zabezpečenia pre Linux (SELinux), ktorý označuje pakety. Bezpečnostnú značku možno použiť na pripojenie alebo paket.

Používa sa pre pravidlá povinného riadenia prístupu a je druhou tabuľkou, ku ktorej sa pristupuje po tabuľke filtrov. Ponúka nasledujúce predvolené reťazce:

Chain Description
INPUT Reserved for incoming packets to the system
OUTPUT Used for locally created packets
FORWARD Used for packets routed through the system

Keď sme sa pozreli na predvolené Iptables, poďme o krok ďalej a prediskutujeme, ako pracovať s pravidlami iptables.

Ako pracovať s pravidlami iptables?

Pravidlá iptables sa aplikujú vo vzostupnom poradí. To znamená, že prvé pravidlo v konkrétnom súbore sa použije ako prvé, nasleduje druhé, potom tretie a tak ďalej až do posledného.

Kvôli tejto funkcii vám iptables bránia pridávať pravidlá do množiny pomocou parametra -A; musíte použiť -I, za ktorým nasleduje číslo alebo ho vyprázdnením pridať na začiatok zoznamu.

Zobrazovanie iptables

Ak chcete zobraziť svoje iptables, použite príkaz iptables -L -v pre IPv4 a ip6tables -L -v pre IPv6.

Vkladanie pravidiel

Ak chcete vložiť pravidlá do množiny, musíte ich umiestniť v presnom poradí, rešpektujúc pravidlá používané rovnakým reťazcom. Zoznam pravidiel iptables si môžete pozrieť pomocou príkazu, ako je uvedené vyššie:

sudo iptables -L -v

Napríklad, ak chcete vložiť pravidlo umožňujúce prichádzajúce pripojenia na port 9001 cez TCP, musíme zadať číslo pravidla pre reťazec INPUT podľa pravidiel premávky pre web.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPT

Po zobrazení aktuálnych iptables by ste mali vidieť nové pravidlo v sade.

sudo iptables -L -v

Nahradenie pravidiel

Funkcia nahradenia funguje podobne ako vloženie, avšak používa príkaz iptables -R. Ak chcete napríklad upraviť vyššie uvedené pravidlo a nastaviť port 9001 na odmietnutie, postupujte takto:

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECT

Odstránenie pravidla

Ak chcete pravidlo vymazať, odovzdáme číslo pravidla. Ak chcete napríklad odstrániť vyššie uvedené pravidlo, môžeme zadať ako:

sudo iptables -D INPUT 1

Vo väčšine linuxových distribúcií sú iptables prázdne pre IPv4 aj IPv6. Ak ste teda nepridali žiadne nové pravidlo, dostanete výstup podobný tomu, ktorý je uvedený nižšie. To je riskantné, pretože to znamená, že systém povoľuje všetku prichádzajúcu, odchádzajúcu a smerovanú prevádzku.

Poďme na to, ako nakonfigurovať iptables:

Ako nakonfigurovať iptables?

Existuje mnoho spôsobov, ako nakonfigurovať pravidlá iptables. Táto časť používa príklady, ktoré vám ukážu, ako nastaviť pravidlá pomocou adries IP a portov.

Blokovanie a povolenie prenosu podľa portov

Na zablokovanie alebo povolenie všetkej prevádzky na sieťovom rozhraní môžete použiť konkrétny port. Zvážte nasledujúce príklady:

sudo iptables -A INPUT -j ACCEPT -p TCP --destination-port 1001 -i wlan0

Vyššie uvedené príkazy umožňujú prevádzku na porte 1001 TCP na rozhraní wlan0.

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

Tento príkaz robí opak vyššie uvedeného príkazu, pretože blokuje všetku komunikáciu na porte 1001 na wlan0.

Tu je podrobná kontrola príkazu:

  • Prvý argument (-A) pridáva nové pravidlo na koniec reťazca tabuliek.

  • Argument INPUT pridá zadané pravidlo do tabuľky.

  • Argument DROP nastavuje akciu, ktorá sa má vykonať, ako ACCEPT a DROP. To znamená, že akonáhle sa paket spojí, zahodí sa.

  • -p určuje protokol ako TCP a umožňuje prechod na iné protokoly.

  • –destination-port nastavuje pravidlo na prijatie alebo zrušenie všetkej prevádzky určenej pre port 1001.

  • -i povie iptables, aby aplikovalo pravidlo na prevádzku prichádzajúcu na rozhraní wlan0.

POZNÁMKA: Iptables nerozumejú aliasom sieťového rozhrania. Preto v systéme s viac ako jedným virtuálnym rozhraním budete musieť definovať cieľovú adresu manuálne a explicitne.

Napríklad:

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24

Pridávanie adries IP na bielu listinu a zoznam zakázaných adries

Pravidlá brány firewall môžete vytvoriť pomocou iptables. Jedným príkladom je zastavenie všetkej prevádzky a povolenie sieťovej prevádzky iba z explicitných adries IP.

Príklad:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -i lo -m comment --comment "Allow loopback connections" -j ACCEPT
iptables -A INPUT -p icmp -m comment --comment “Allow Ping to work as expected” -j

SÚHLASIŤ

iptables -A INPUT -s 192.168.0.1/24 -j ACCEPT
iptables -A INPUT -s 192.168.0.0 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP

Prvý riadok nastavuje pravidlo na povolenie všetkých zdrojových IP adries v podsieti 192.168.0.1/24. Môžete tiež použiť CIDR alebo jednotlivé IP adresy. V nasledujúcom príkaze nastavíme pravidlo, aby sme povolili všetku komunikáciu pripojenú k existujúcim pripojeniam. V posledných príkazoch nastavíme politiku pre INPUT a FORWARD, aby sa všetko zrušilo.

Používanie iptables na IPv6

Príkaz Iptables funguje iba na IPv4. Ak chcete použiť iptables na IPv6, musíte použiť príkaz ip6tables. Ip6tables používa surové, filtrovacie, bezpečnostné a mandlové tabuľky. Všeobecná syntax pre ip6tables je podobná ako pre iptables a tiež podporuje zodpovedajúce možnosti iptables, ako je pripojiť, odstrániť atď.

Zvážte použitie manuálových stránok ip6tables pre viac informácií.

Príklad sady pravidiel iptables pre bezpečnosť siete

Vytvorenie vhodných pravidiel brány firewall bude závisieť najmä od služby spustenej na systéme a používaných portov. Tu je však niekoľko základných pravidiel konfigurácie siete, ktoré môžete použiť na zabezpečenie svojho systému:

1: Povoliť prevádzku rozhrania Loopback a odmietnuť všetku spätnú slučku prichádzajúcu z iných rozhraní

iptables -A INPUT -i lo -j ACCEPT (You can also use ip6tables)
iptables -A INPUT ! -i lo -s 127.0.0.0 -j REJECT (ip6tables also applicable)

2: Odmietnite všetky požiadavky na ping

iptables -A INPUT -p icmp -m state --state NEW --icmp-type 8 -j REJECT

3: Povoliť pripojenia SSH

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

Toto sú príklady príkazov, ktoré môžete použiť na zabezpečenie vášho systému. Konfigurácia však bude do značnej miery závisieť od toho, k čomu alebo komu chcete pristupovať k rôznym službám.

UPOZORNENIE: Ak chcete IPv6 úplne zakázať, nezabudnite odkomentovať riadok, pretože to spomalí proces aktualizácie:

precedence ::ffff:0:0/96 100 found in /etc/gai.conf .

Je to preto, že správca balíkov APT rieši zrkadlovú doménu v IPv6 kvôli aktualizácii apt-get.

Ako nasadiť pravidlá iptables?

Ak chcete nasadiť svoje iptables na Ubuntu alebo iných systémoch založených na Debiane, začnite vytvorením dvoch súborov, ip4 a ip6, pre ich príslušné IP adresy.

V oboch súboroch pridajte pravidlá, ktoré chcete presadzovať, do príslušných súborov – pravidlá IPv4 do súboru ip4 a pravidlá IPv6 do súboru ip6.

Ďalej musíme importovať pravidlá pomocou príkazu:

sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)

Potom môžete overiť, či pravidlá platia, pomocou príkazu:

sudo iptables -L -v

Rýchly iptables-trvalý sprievodca

Ubuntu a bežné distribúcie založené na Debiane sa dodávajú s balíkom iptables-persistent, ktorý vám umožňuje jednoducho aplikovať pravidlá brány firewall po reštarte. Balík poskytuje súbory, ktoré môžete použiť na nastavenie pravidiel pre IPv4 alebo IPv6 a môžu byť použité automaticky pri štarte.

Pravidlá brány firewall môžete použiť aj pomocou UFW alebo GUFW. Zvážte nasledujúci návod, aby ste sa naučili používať UFW.

Ako nainštalovať iptables-persistent?

Uistite sa, že máte vo svojom systéme nainštalovaný iptables-persistent. Pomocou dpkg skontrolujte, či máte balík nainštalovaný.

Ak nie, použite nasledujúci príkaz:

sudo apt-get install iptables-persistent

Dvakrát sa zobrazí výzva na uloženie aktuálnych pravidiel IPv4 aj IPv6. Kliknutím na Áno uložte obe pravidlá.

Kliknutím na áno uložíte IPv6.

Po dokončení inštalácie skontrolujte, či máte podadresár iptables, ako je znázornené na obrázku nižšie.

Záver

V tomto návode sme prebrali základy iptables. Počnúc prácou s iptables, základnými príkazmi, predvolenými tabuľkami iptables a parametrami.

Z toho, čo ste sa naučili, by ste mali byť schopní používať iptables na vytváranie pravidiel brány firewall, ktoré pomáhajú zabezpečiť váš systém.