fotka od ezioman.
O systéme iptables
iptables je nástroj firewall príkazového riadka, ktorý používa reťazce pravidiel na povolenie alebo blokovanie návštevnosti. Keď sa pripojenie pokúsi vytvoriť na vašom systéme, iptables vyhľadá pravidlo vo svojom zozname, aby sa zhodovalo s ním. Ak ju nenájdete, použije predvolenú akciu.
iptables takmer vždy prichádza predinštalovaný na ľubovoľnej distribúcii Linuxu. Ak chcete aktualizovať / nainštalovať, stačí načítať balík iptables:
sudo apt-get install iptables
Existujú alternatívy grafického rozhrania k iptables, ako je Firestarter, ale iptables nie je naozaj také ťažké, akonáhle budete mať niekoľko príkazov nadol. Pri konfigurácii pravidiel iptables by ste mali byť veľmi opatrní, najmä ak ste SSH'd na serveri, pretože jeden nesprávny príkaz vás môže natrvalo zablokovať, kým nie je ručne pevne nastavený na fyzickom počítači.
Druhy reťazcov
iptables používa tri rôzne reťazce: vstup, dopredu a výstup.
vstup - Tento reťazec sa používa na riadenie správania pri prichádzajúcich pripojeniach. Napríklad, ak sa používateľ pokúsi o SSH do vášho počítača / servera, iptables sa pokúsi porovnať IP adresu a port s pravidlom vo vstupnom reťazci.
vpred - Tento reťazec sa používa na prichádzajúce pripojenia, ktoré sa v skutočnosti neposkytujú lokálne. Premýšľajte o smerovači - dáta sa vždy odosielajú, ale zriedkavo sú určené pre samotný router; údaje sa presmerujú do cieľa. Pokiaľ nedosiahnete nejaký spôsob smerovania, NATing alebo niečo iné vo vašom systéme, ktoré vyžaduje presmerovanie, tento reťazec nebudete ani používať.
Existuje jeden istý spôsob, ako skontrolovať, či váš systém používa / potrebuje dopredný reťazec.
iptables -L -v
Výkon - Tento reťazec sa používa pre odchádzajúce spojenia. Napríklad, ak sa pokúsite ping howtogeek.com, iptables skontrolovať výstupný reťazec a zistiť, aké sú pravidlá týkajúce sa pingu a howtogeek.com predtým, ako urobí rozhodnutie povoliť alebo odmietnuť pokus o pripojenie.
Upozornenie
Napriek tomu, že ping externého hostiteľa sa zdá byť niečo, čo bude musieť prechádzať iba výstupným reťazcom, majte na pamäti, že na vrátenie dát sa použije aj vstupný reťazec. Ak používate systém iptables na uzamknutie systému, nezabudnite, že veľa protokolov bude vyžadovať obojsmernú komunikáciu, takže je potrebné správne nakonfigurovať vstupné aj výstupné reťazce. SSH je bežný protokol, ktorý ľudia zabúdajú na obe reťaze.
Štandardné správanie reťazca pravidiel
Pred vstupom a konfiguráciou konkrétnych pravidiel sa budete chcieť rozhodnúť, aké predpokladáte, aby sa predvolené správanie týchto troch reťazcov stalo. Inými slovami, čo chcete robiť, ak sa pripojenie nezhoduje s existujúcimi pravidlami?
Ak chcete zistiť, aké sú vaše reťazce pravidiel v súčasnosti nakonfigurované tak, aby vám pomohli s neprekonateľnou návštevnosťou, spustite program
iptables -L
Príkaz.
Viac ako nie, budete chcieť, aby váš systém v predvolenom nastavení prijímal pripojenia. Ak ste predtým nezmenili pravidlá reťazca pravidiel, toto nastavenie by malo byť už nakonfigurované. Či tak alebo onak, tu je príkaz na prijímanie pripojení v predvolenom nastavení:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
Predvoleným pravidlom prijatia môžete použiť iptables na zablokovanie špecifických adries IP alebo čísiel portov a zároveň naďalej akceptovať všetky ostatné pripojenia. Tieto príkazy sa dostaneme za minútu.
Ak radšej odmietnete všetky pripojenia a ručne zadáte, ktoré z nich chcete povoliť pripojenie, mali by ste zmeniť predvolenú politiku vašich reťazcov. Toto by pravdepodobne bolo užitočné iba pre servery, ktoré obsahujú citlivé informácie a kedykoľvek sa k nim pripojili rovnaké IP adresy.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Odpovede špecifické pre pripojenie
Pri konfigurácii predvolených pravidiel reťazca môžete začať pridávať pravidlá do iptables, takže vie, čo má robiť, keď narazí na spojenie z alebo na konkrétnu IP adresu alebo port. V tejto príručke sa budeme zaoberať tromi najzákladnejšími a bežne používanými "odpoveďami".
súhlasiť - Povoliť pripojenie.
Pokles - Odpojte spojenie, konajte tak, ako sa nikdy nestalo. To je najlepšie, ak nechcete, aby zdroj realizoval váš systém.
Odmietnuť - Nedovoľte pripojenie, ale vráťte chybu. To je najlepšie, ak nechcete, aby sa k vášmu systému pripojil určitý zdroj, ale chcete, aby vedeli, že váš firewall zablokoval.
Najlepším spôsobom, ako zobraziť rozdiel medzi týmito troma pravidlami, je ukázať, ako to vyzerá, keď sa počítač pokúša ping na Linuxovom počítači s iptables nakonfigurovaným pre každé z týchto nastavení.
Povolenie pripojenia:
Povolenie alebo blokovanie špecifických pripojení
S vašimi reťazcami pravidiel nakonfigurovanými, môžete teraz nakonfigurovať protokoly iptables, ktoré umožňujú alebo blokujú konkrétne adresy, rozsahy adries a porty. V týchto príkladoch nastavíme pripojenia
DROP
ale môžete ich prepnúť
ACCEPT
alebo
REJECT
v závislosti od vašich potrieb a konfigurácie reťazcov pravidiel.
Poznámka: V týchto príkladoch budeme používať
iptables -A
pridať pravidlá k existujúcemu reťazcu. iptables začína v hornej časti svojho zoznamu a prechádza každým pravidlom, kým nezistí, že sa zhoduje. Ak potrebujete vložiť pravidlo nad iným, môžete ho použiť
iptables -I [chain] [number]
zadajte číslo, ktoré by malo byť v zozname.
Pripojenia z jedinej adresy IP
Tento príklad ukazuje, ako zablokovať všetky pripojenia z adresy IP 10.10.10.10.
iptables -A INPUT -s 10.10.10.10 -j DROP
Pripojenia z rozsahu IP adries
Tento príklad ukazuje, ako zablokovať všetky adresy IP v rozsahu 10.10.10.0/24 siete. Na určenie rozsahu adries IP môžete použiť sieťovú masku alebo štandardný lomítok.
iptables -A INPUT -s 10.10.10.0/24 -j DROP
alebo
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Pripojenie k určitému portu
Tento príklad ukazuje, ako blokovať pripojenia SSH od 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
Ssh môžete nahradiť akýmkoľvek protokolom alebo číslom portu.
-p tcp
časť kódu hovorí iptables, aký druh pripojenia používa protokol. Ak ste zablokovali protokol, ktorý používa skôr UDP než TCP
-p udp
by bolo namiesto toho potrebné.
Tento príklad ukazuje, ako blokovať pripojenia SSH z ľubovoľnej adresy IP.
iptables -A INPUT -p tcp --dport ssh -j DROP
Štáty pripojenia
Ako sme už spomenuli, veľa protokolov bude vyžadovať obojsmernú komunikáciu. Napríklad, ak chcete povoliť pripojenie SSH do vášho systému, vstupné a výstupné reťazce budú potrebovať pravidlo pridané k nim. Ale čo, ak len chcete, aby bol SSH do vášho systému povolený? Nebude pridávať pravidlo do výstupného reťazca tiež umožňujú odchádzajúce pokusy SSH?
To je miesto, kde sa vyskytujú stavy pripojenia, ktoré vám dávajú schopnosť, ktorú by ste potrebovali na umožnenie dvojcestnej komunikácie, ale umožnili len vytvorenie jednosmerného spojenia. Pozrite sa na tento príklad, kde sú povolené pripojenia SSH OD 10.10.10.10, ale pripojenia SSH DO 10.10.10.10 nie sú. Napriek tomu je systém oprávnený posielať späť informácie cez SSH, ak už bola relácia už vytvorená, čo umožňuje komunikáciu SSH medzi týmito dvoma hostiteľmi.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT
Ukladanie zmien
Zmeny, ktoré vykonávate v pravidlách iptables, budú zlikvidované pri ďalšom spustení reštartu služby iptables, ak nevykonáte príkaz na uloženie zmien. Tento príkaz sa môže líšiť v závislosti od vašej distribúcie:
ubuntu:
sudo /sbin/iptables-save
Red Hat / CentOS:
/sbin/service iptables save
alebo
/etc/init.d/iptables save
Ďalšie príkazy
Zoznam aktuálne nakonfigurovaných pravidiel iptables:
iptables -L
Pridanie
-v
voľba vám poskytne informácie o paketoch a bajtoch a pridáte ich
-n
ukáže všetko číselne. Inými slovami - názvy hostiteľov, protokoly a siete sú uvedené ako čísla.
Ak chcete vymazať všetky aktuálne nakonfigurované pravidlá, môžete vydať príkaz flush.
iptables -F