Konfigurácia brány firewall systému Linux pomocou iptables na serveri CentOS / RHEL 7

V tomto článku si ukážeme, ako spravovať bránu firewall systému Linux pomocou klasických aplikácií iptables Namiesto firewallu v CentOS / RHEL 7 môžete filtrovať prichádzajúcu a odchádzajúcu komunikáciu. Tento článok popisuje, ako nakonfigurovať iptables na CentOS 7 tak, aby filtroval prichádzajúcu komunikáciu pomocou príkladu virtuálneho servera založeného na cloudu nasadeného od nuly. myserver01, prístupné z internetu.

obsah:

  • Zakázanie brány firewall v systéme CentOS 7
  • Pravidlá syntaxe a iptables v CentOS / Red Hat
  • Vytváranie pravidiel filtrovania prevádzky v iptables
  • Povoliť protokoly iptables
  • Ukladanie a obnovovanie pravidiel filtrovania iptables

Zakázanie brány firewall v systéme CentOS 7

CentOS 7 štandardne používa na riadenie brány firewall systémovú službu firewalld. Poskytuje svoje vlastné rozhranie, ale nakoniec funguje aj pomocou pomocného programu iptables. Zároveň by mal byť firewall ovládaný buď cez firewalld alebo priamo cez iptables.

firewalld nie je náhradou, ale obalom okolo iptables, môžete z neho použiť to, čo sa vám páči viac alebo vhodnejšie v konkrétnych podmienkach. iptables je univerzálnejší, je to základný nástroj, ale je trochu ťažšie ho zvládnuť. firewalld poskytuje jednoduchšie rozhranie, ale napríklad CentOS 6 ho nemôže použiť a pre ďalšie distribúcie musíte mať potrebné inštalačné balíčky. Ak okrem toho používate aplikácie, ktoré vykonávajú nastavenia v bráne firewall, musia byť kompatibilné s bránou firewalld (príkladom takýchto aplikácií je docker, fail2ban).

Skontrolujte stav brány firewall a vypnite ju.

systemctl status firewalld

Na výstupe z príkazu oblasť so slovom krúžila červeno povolené, znamená, že spustenie je zapnuté a oblasť krúžila žlto so slovom aktívny, znamená, že služba je spustená.

Zastavíme službu a vypneme automatické načítanie:

systemctl zastaviť firewalld
systemctl zakáže firewalld

Opätovná kontrola stavu:

Teraz sa zobrazí výstup príkazu invalidný - pre automatické vkladanie (vypnuté) a - neaktívne znamená, že služba je vypnutá.

Pravidlá syntaxe a iptables v CentOS / Red Hat

iptables - Toto je pomôcka, ktorá konfiguruje pravidlá brány firewall v systéme Linux.

Iptables zoskupuje pravidlá firewallu do tabuliek, hlavné sú:

  • stôl filter - Používa sa na filtrovanie prenosu, to znamená povoľovanie a odmietanie spojení
  • stôl nat - používa sa na preklad adresy (NAT)
  • stôl mangeľ - ďalšie modifikácie hlavičiek paketov ip.

Najprv skontrolujte, či je v systéme nainštalovaný iptables (mal by byť predvolený):

rpm -q iptables

Výstup z príkazu ukazuje, že aktuálne nainštalovaná verzia iptables je 1.4.21.

Práca s príkazmi iptables na príkazovom riadku vyžaduje privilégiá typu root, takže budeme aj naďalej pracovať ako root.

Ak chcete zobraziť aktuálne pravidlá, vykonajte príkaz:

iptables [-t tabuľka] -L [reťazec] [parametre]

Poznámka: Ak pri vyvolaní príkazu nezadáte názov tabuľky, tabuľka sa použije ako predvolená filter.

Napríklad výsledok príkazu iptables -L, keď ešte v tabuľkách neboli vytvorené žiadne pravidlá:

Zvážte podrobnejšie výstup príkazu.

stôl filter obsahuje tri typy pravidiel, tzv. reťaz (reťaz):

  • INPUT - prichádzajúce ip pakety určené pre samotného hostiteľa sú spracované v tomto reťazci;
  • OUTPUT - odchádzajúce ip pakety od samotného hostiteľa sú spracované v tomto reťazci;
  • VPRED - tento reťazec je potrebný na presmerovanie ip paketov. Používa sa, ak chcete server používať ako smerovač.

Oproti každému reťazcu je predvolená politika, ktorá určuje, čo treba urobiť, ak pripojenie nepatrí do žiadneho z pravidiel. Predvolená politika môže mať dve hodnoty a určuje prístup k samotnej organizácii brány firewall:

  • ACCEPT - štandardne sú povolené všetky pripojenia, pravidlá blokujú nežiaduce pripojenia;
  • DROP - štandardne sú všetky spojenia odmietnuté, pravidlá umožňujú potrebné pripojenia.

Vytváranie pravidiel filtrovania prevádzky v iptables

Iptables filter podľa rozhrania

Začnime vytvárať pravidlá. Syntax príkazu na pridanie nového pravidla na koniec zadaného reťazca vyzerá takto:

iptables [-t table] -A -j

Začneme tým, že povoľujeme prenos cez rozhranie lokálneho spätného vedenia (127.0.0.1), ktoré je potrebné pre fungovanie niektorých aplikácií:

iptables -A INPUT -i lo -j ACCEPT

Poďme analyzovať v poradí:

  1. Zadáme reťazec INPUT, t. pravidlo platí pre prichádzajúce spojenia.
  2. Ďalej použite kľúč -i (v rozhraní), na určenie prichádzajúceho rozhrania, do ktorého prichádza ip paket.
  3. Príkaz dokončíme pomocou kľúča -j (skok), určenie akcie, ktorá bude vykonaná pre všetky pakety ip, ktoré spĺňajú kritériá z článku 2. V takom prípade ACCEPT umožní pripojenie. Okrem toho základné akcie s prepojeniami tiež zahŕňajú:
    • DROP - zakážte spojenie, zdroj spojenia nie je informovaný, ip paket je jednoducho vyradený;
    • REJECT - vypne spojenie, zdroj spojenia je informovaný správou.

Iptables filter podľa portu, protokolu alebo IP adresy

Teraz pridajte pravidlo povolenia na pripojenie k nášmu Linuxovému serveru cez SSH na porte 22.

iptables -A INPUT -p tcp --port 22 -j ACCEPT

V tomto pravidle sú kritériami port a protokol. Protokol (tcp, udp, icmp, all) sa nastavuje pomocou kľúča -p (-protocol), cieľový port (t. j. port, na ktorý prichádzajú ip pakety na server) -DPORT.

poznámka: ak chcete v kritériách použiť cieľový alebo zdrojový port (-DPORT alebo -šport) a potom špecifikujte protokol.

Napríklad môžete určiť rozsah portov dvojbodkou

--dport 6000: 6063

Ak poznáme ip adresy klientov, z ktorých sa pripojíme k serveru, bude bezpečnejšie povoliť prístup iba z týchto ip adries. V takom prípade pridajte do kritérií parameter -s (-src, -source) a špecifikujte adresu ip alebo podsieť zdroja pripojenia, napríklad pomocou tohto pravidla:

iptables -A INPUT -p tcp -s 94.41.174.122 - správa 22 -j ACCEPT

prístup na port 22 bude povolený iba z adresy ip 94.41.174.122.

Čiastočne povoľujú žiadosti o icmp, 3 typy:

iptables -A INPUT -p icmp - echo-request typu -mp -j ACCEPT
iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A INPUT -p icmp - typ času prekročený -mpmp -j ACCEPT

Tieto pravidlá umožňujú nástroje ping, traceroute a umožňujú mechanizmu určiť MTU medzi dvoma hostiteľmi.

Filter stavu pripojenia iptables

Pre správnu funkciu budete musieť vytvoriť pravidlo, ktoré umožní už nadviazané spojenia:

iptables -A INPUT -m state - stav ZARADENÝ, SÚVISIACE -j AKCEPT

Kľúč sa tu používa v kritériách -m, načítať stavový modul, ktorý umožňuje zistiť aktuálny stav paketu ip z možných:

  • NOVINKA - označuje prichádzajúce ip pakety zapojené do nadviazania spojenia;
  • ESTABLISHED and RELATED - označuje prichádzajúce ip pakety, ktoré sa zúčastňujú na už vytvorených pripojeniach, alebo spojenia iniciované z už vytvorených spojení (pripojené spojenia);
  • INVALID - označuje prichádzajúce ip pakety, ak sa na ne nevzťahuje žiadna z vyššie uvedených podmienok.

Nastavenie predvolenej politiky iptables

Minimálna sada povolení pravidiel pre firewall je pripravená, zostáva nastaviť predvolenú politiku, ktorá zakazuje všetky prichádzajúce pripojenia, ktoré nespĺňajú naše pravidlá. Použite kľúč v príkaze iptables -P, nastavuje predvolenú politiku pre daný reťazec, v našom prípade:

iptables -P INPUT DROP

pozor: Pred použitím tohto príkazu sa musíte uistiť, že vaše súčasné pravidlá umožňujú pripojenie k serveru, inak jednoducho zablokujete prístup k sebe!
Poďme sa pozrieť na výslednú tabuľku pravidiel iptables, pridajte kľúč -proti, ukázať verbálnejší výstup:
iptables -L -v

Povoliť protokoly iptables

Iptables vám umožňuje zapisovať informácie o odovzdávaní paketov ip do systémového denníka. Toto sa realizuje prostredníctvom konkrétnej akcie. LOG nad spojom, po ktorom sa ip paket pokračuje v pohybe pozdĺž neporušenej reťaze. Napríklad vytvorte pravidlo, ktoré zaznamená všetky udalosti pripojenia k portu 445 (tcp) v systémovom protokole:

iptables -A INPUT -p tcp --port 445 -j LOG --log-prefix "IN SMB DROP:"

tu -log-prefix nastaví predponu pre všetky správy zaznamenané podľa nášho pravidla. To je výhodné, ak máte niekoľko rôznych protokolovacích pravidiel alebo pre ďalšie spracovanie softvéru. Ak sa teraz pokúsite externe pripojiť k nášmu serveru na porte 445, napríklad prostredníctvom telnetu, v súbore / var / log / messages objavia sa záznamy:

Poďme analyzovať záver:

  • V SMB DROP: predpona, ktorú nastavíme s možnosťou -log-prefix
  • IN = eth0 rozhranie, na ktorom je prijatý paket ip, obsahuje prázdnu hodnotu pre odchádzajúce spojenia
  • OUT = rozhranie, z ktorého bol poslaný paket ip pre prichádzajúce spojenia, obsahuje prázdnu hodnotu
  • MAC = navzájom spojené v nasledujúcom poradí: cieľová adresa MAC, zdrojová adresa MAC, EtherType - 08:00 zodpovedá IPv4.
  • Src = ip adresa zdroja, z ktorého bol odoslaný ip paket
  • DST = cieľová adresa ip, na ktorú bol odoslaný paket ip
  • LEN = veľkosť paketu ip v bajtoch
  • SPT = zdrojový port, z ktorého bol odoslaný paket ip
  • DPT = cieľový port, na ktorý sa odosiela paket ip

Ukladanie a obnovovanie pravidiel filtrovania iptables

Nakoniec nakonfigurujte automatické načítanie pravidiel po reštarte servera. Na tento účel musí byť nainštalovaný balík. iptables-services a služba je aktivovaná. Nainštalujte balík cez yum:

yum install iptables-services
systemctl povolí iptables

Skontrolujte stav služby iptables:

systemctl status iptables

Možnosť spustenia je nastavená na povolené (on) parameter aktívny indikuje, ľe sluľba je spustená.

Pri načítaní služba prečíta obsah súboru / etc / sysconfig / iptables, a obnovte uložené pravidlá. Aby sme do toho naše pravidlá uložili, použijeme príkaz:

iptables-save> / etc / sysconfig / iptables

Pravidlá môžete zo súboru obnoviť príkazom:

iptables-restore < /etc/sysconfig/iptables

Teraz môžete reštartovať server a ubezpečiť sa, že pravidlá brány firewall sú obnovené v čase spustenia.

V nasledujúcom článku ukážeme, ako používať iptables na vytvorenie pravidiel presmerovania prenosu NAT pre prístupovú bránu na báze CentOS z / do vnútornej siete organizácie..