Nakonfigurujte FirewallD na serveri pomocou CentOS 8 a 7

Počnúc CentoOS 7 sa objavil nový nástroj na konfiguráciu pravidiel filtrovania prenosu. firewalld. Odporúča sa používať na správu pravidiel iptables. V systéme CentOS 8 sa namiesto štandardného balíka na filtrovanie iptables používa rámec nftables a keď nakonfigurujete pravidlá brány firewall prostredníctvom brány firewall, skutočne konfigurujete nftables. V tomto článku sa budeme zaoberať inštaláciou, základnými koncepciami a konfiguráciou firewallu na serveri so systémom CentOS 8 (v systéme CentOS 7 je všetko rovnaké).


obsah:

  • Základné pojmy, zóny a pravidlá firewallu
  • Nainštalujte a povoľte firewalld na CentOS
  • Práca s pravidlami firewallu
  • Firewalld: Blokovanie IP, výnimka
  • Presmerovanie portov v firewalld

FirewallD - firewall na ochranu servera pred nežiaducou prevádzkou s podporou dynamickej správy pravidiel (bez reštartovania) a implementáciou pretrvávajúcich pravidiel brány firewall. Funguje ako rozhranie pre iptables a nftables. FirewallD je možné použiť na takmer všetkých distribúciách Linuxu.

Základné pojmy, zóny a pravidlá firewallu

Skôr ako začnete s inštaláciou a konfiguráciou firewalld, zoznámime sa s konceptom zón, ktoré sa používajú na určenie úrovne dôvery v rôzne zlúčeniny. Pre rôzne zóny firewalld môžete použiť rôzne pravidlá filtrovania, určiť aktívne možnosti brány firewall vo forme preddefinovaných služieb, protokolov a portov, presmerovania portov a podrobných pravidiel.

Firewalld filtruje prichádzajúcu komunikáciu podľa zón v závislosti od pravidiel platných pre danú zónu. ak IP-adresa odosielateľa žiadosti vyhovuje pravidlám ktorejkoľvek zóny, paket bude odoslaný cez túto zónu. Ak adresa nezodpovedá žiadnej zo zón nakonfigurovaných na serveri, paket bude spracovaný predvolenou zónou. Pri inštalácii firewalld volá sa predvolená zóna verejnosť.

V bráne firewall existujú zóny, v ktorých sú už vopred nakonfigurované povolenia pre rôzne služby. Môžete použiť tieto nastavenia alebo vytvoriť svoje vlastné zóny. Zoznam predvolených zón, ktoré sa vytvoria počas inštalácie brány firewall (uložené v adresári / usr / lib / firewalld / zones /):

klesnúťminimálna úroveň dôvery. Všetky prichádzajúce spojenia sú blokované bez odpovede, povolené sú iba odchádzajúce pripojenia;
blokzóna je podobná predchádzajúcej, ale keď sa prichádzajúce žiadosti odmietnu, odošle sa správa Ipv4 alebo icmp6-adm zakázaná pre Ipv6;
verejnosťPredstavuje verejné, nedôveryhodné siete. Vybraté prichádzajúce spojenia môžete povoliť jednotlivo;
externýexterné siete pri použití brány firewall ako brány. Je nakonfigurovaný tak, aby maskoval NAT, takže vaša interná sieť zostáva súkromná, ale prístupná;
internýantonym vonkajšej zóny. Hostiteľ má dostatočnú úroveň dôvery, je k dispozícii množstvo ďalších služieb;
DMZPoužíva sa pre počítače umiestnené v DMZ (izolované počítače bez prístupu do zvyšku siete). Povolené sú iba určité prichádzajúce spojenia;
prácezóna pre pracovné stroje (väčšina počítačov v sieti je dôveryhodná);
domovzóna domácej siete. Môžete dôverovať väčšine počítačov, ale sú podporované iba určité prichádzajúce pripojenia;
dôveryhodnýDôverujte všetkým počítačom v sieti. Najotvorenejšie zo všetkých dostupných možností si vyžaduje vedomé použitie.

firewalld používajú sa dve sady pravidiel - trvalé a dočasné. Dočasné pravidlá fungujú až do reštartu servera. V predvolenom nastavení pri pridávaní pravidiel do firewalld, pravidlá sa považujú za dočasné (runtime). Ak chcete nepretržite pridávať pravidlo, musíte použiť príznak - stály. Tieto pravidlá sa budú uplatňovať po reštarte servera..

Nainštalujte a povoľte firewalld na CentOS

V systéme CentOS 7/8 je firewalld nainštalovaný v predvolenom nastavení pri inštalácii OS. Ak ste ho odstránili a chcete nainštalovať firewall, môžete použiť štandardného správcu yum / dnf:

# yum nainštalujte firewalld -y - pre Centos 7
# dnf nainštalujte firewalld -y - pre Centos 8

Démonovi firewalld automaticky sa spustil so spustením servera, musíte ho pridať do spustenia:

# systemctl povoliť firewalld

A spustiť:

# systemctl start firewalld

Skontrolujte stav služby:

# systemctl status firewalld

● firewalld.service - firewalld - dynamický démon brány firewall Načítané: načítané (/usr/lib/systemd/system/firewalld.service; enabled; predvoľba dodávateľa: enabled) Active: active (running) od Mon 2019-10-14 14:54 : 40 +06; Pred 22 rokmi Dokumenty: muž: firewalld (1) Hlavná PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid 14. októbra 14:54:40 server.vpn.ru systemd [1]: Spustenie firewallu - dynamický démon brány firewall ... 14. októbra 14:54:40 server.vpn.ru systemd [1]: Spustený firewalld - dynamický démon brány firewall.

Alebo príkazom:

# firewall-cmd - stav

Príkaz firewall-cmd je bránou firewalld k nftables / iptables.

# firewall-cmd - stav

tečúcou

Práca s pravidlami firewallu

Predvolené pravidlá:

Pred konfiguráciou pravidiel brány firewall je potrebné skontrolovať, ktorá zóna sa predvolene používa:

# firewall-cmd --get-default-zone

Pretože sme práve nainštalovali a nenakonfigurovali sme firewall, máme predvolenú zónu verejnosť.

Skontrolujte jadro. Je tiež jedna - verejnosť:

# firewall-cmd --get-active-zones

verejné rozhrania: eth0

Ako vidíte, sieťové rozhranie eth0 je ovládané zónou. verejnosť.

Môžete zobraziť zoznam sieťových rozhraní CentOS:

# ip zobrazí odkaz
alebo
# nmcli stav zariadenia

Ak chcete zobraziť základné pravidlá, zadajte:

# firewall-cmd - list-all

verejný (aktívny) cieľ: predvolená inverzia icmp-blokov: žiadne rozhrania: zdroje et0: služby: dhcpv6-klientske ssh porty: protokoly: maškaráda: žiadne forwardové porty: zdrojové-porty: icmp-bloky: bohaté pravidlá:

Ako vidíte zo zoznamu, do tejto zóny boli pridané obvyklé operácie týkajúce sa klienta DHCP a ssh..

Dostupné zóny

Ak chcete zobraziť zoznam všetkých zón, musíte spustiť príkaz:

# firewall-cmd --get-zones

Mám nasledujúci zoznam:

blokovať dmz pokles externej domácej dôveryhodnej verejnej práce

Ak chcete skontrolovať pravidlá konkrétnej zóny, pridajte príznak - zone.

# firewall-cmd --zone = domov - zoznam-všetko

domáci cieľ: predvolená inverzia icmp-blokov: žiadne rozhrania: zdroje: služby: dhcpv6-klient mdns mdns samba-client ssh porty: protokoly: maškaráda: žiadne predné porty: zdrojové porty: icmp-bloky: bohaté pravidlá:

Pravidlá všetkých zón si môžete prezerať pomocou príkazu:

# firewall-cmd - list-all-zones

Zoznam bude pomerne veľký, pretože môže existovať veľa zón.

Zmeniť predvolenú zónu.

V predvolenom nastavení sú všetky sieťové rozhrania umiestnené v zóne verejnosť, ale dajú sa preniesť do ktorejkoľvek zóny pomocou príkazu:

# firewall-cmd --zone = home -change-interface = eth0

Po parametri -zóna = zadajte požadovanú zónu.

Ak chcete zmeniť predvolenú zónu, použite príkaz:

# firewall-cmd --set-default-zone = domov

Pridávanie pravidiel pre aplikácie

Ak chcete otvoriť port pre aplikáciu, môžete k výnimkám pridať službu. Zobraziť zoznam dostupných služieb:

# firewall-cmd --get-services

Výstup bude obsahovať veľké množstvo služieb. Podrobnosti o službe sú uvedené v xml file. Tieto súbory sa nachádzajú v adresári / usr / lib / firewalld / services.

Napríklad:

# cd / usr / lib / firewalld / services

# cat smtp.xml

  Pošta (SMTP) Táto voľba umožňuje prichádzajúce doručovanie pošty SMTP. Ak potrebujete povoliť vzdialeným hostiteľom pripojenie sa priamo k zariadeniu na doručovanie pošty, povoľte túto možnosť. Toto nemusíte povoliť, ak zbierate svoju poštu zo servera poskytovateľa internetových služieb prostredníctvom protokolu POP3 alebo IMAP alebo ak používate nástroj, ako je napríklad fetchmail. Upozorňujeme, že nesprávne nakonfigurovaný server SMTP môže povoliť vzdialeným počítačom používať váš server na odosielanie spamu.  

Súbor XML obsahuje popis služby, protokol a číslo portu, ktoré sa otvoria v bráne firewall.

Pri pridávaní pravidiel môžete použiť parameter -add-service, Otvorenie prístupu ku konkrétnej službe:

# firewall-cmd --zone = public --add-service = http

úspech

# firewall-cmd --zone = public --add-service = https

úspech

Po pridaní pravidiel môžete skontrolovať, či sa do určenej zóny pridajú služby:

# firewall-cmd --zone = verejné --list-services

http https ssh dhcpv6-client

Ak chcete, aby boli tieto pravidlá trvalé, musíte pri pridávaní pridať parameter -stály.

Postup odstránenia služby zo zóny:

# firewall-cmd - permanentný --zone = public --remove-service = http

# firewall-cmd --zone = verejné - trvalé --list-services

https ssh test dhcpv6-client

Ak chcete svoju službu pridať k výnimkám, môžete si vytvoriť súbor xml a vyplňte ho. Môžete kopírovať údaje z ľubovoľnej služby, zmeniť názov, popis a číslo portu.

Skopírujte súbor smtp.xml do adresára pre prácu s užívateľskými službami:

# cp /usr/lib/firewalld/services/smtp.xml / etc / firewalld / services

Zmeňte popis služby v súbore.

Samotný súbor xml musí byť tiež premenovaný na názov vašej služby. Potom musíte reštartovať firewalld a skontrolovať, či je naša služba v zozname:

# firewall-cmd --get-services

Zavolal som do služby test av zozname sa objavil:

syslog-tls telnet test tftp

Teraz môžete vytvorenú službu pridať do ktorejkoľvek zóny:

# firewall-cmd --zone = public --add-service = test - permanentný

úspech

# firewall-cmd --zone = verejné - trvalé --list-services

http https ssh test dhcpv6-client

Ak ste v zozname nenašli službu, ktorú potrebujete, môžete otvoriť požadovaný port na firewalle príkazom:

# firewall-cmd --zone = public -add-port = 77 / tcp - otvorený port 77 tcp
# firewall-cmd --zone = public -add-port = 77 / udp - otvorený port 77 udp
# firewall-cmd --zone = public -add-port = 77-88 / udp - rozsah otvorených portov 77-88 udp
# firewall-cmd --zone = verejné -list-porty - skontrolujte zoznam povolených portov

Blokovať / povoliť odpovede ICMP:

# firewall-cmd --zone = public --add-icmp-block = echo-response
# firewall-cmd --zone = public --remove-icmp-block = echo-response

Odstrániť pridaný port:

# firewall-cmd --zone = public -remove-port = 77 / udp - odstrániť dočasné pravidlo 77 udp

# firewall-cmd - permanentný --zone = public -remove-port = 77 / udp - odstrániť pretrvávajúce pravidlo

Pridávanie vlastných zón

Môžete si vytvoriť svoju vlastnú zónu (pomenujem ju náš):

# firewall-cmd - permanentný - nový-zóna = náš

Po vytvorení novej zóny a po vytvorení služby je potrebné reštartovať počítač firewalld:

# firewall-cmd - obnoviť

úspech

# firewall-cmd --get-zones

blokovať dmz pokles externý domov interný verejne dôveryhodná práca

zóna náš k dispozícii. Môžete k nemu pridať služby alebo otvoriť určité porty.

Firewalld: Blokovanie IP, výnimka

Dôveryhodné adresy IP môžete pridať do výnimiek brány firewall alebo blokovať nechcené adresy.

Pridanie konkrétnej adresy IP (napríklad 8.8.8.8) na server prostredníctvom výnimiek firewalld, použite príkaz:

# firewall-cmd --zone = public --add-rich-Rule = 'Rule family = "ipv4" source address = "8.8.8.8" accept'

Skontrolujte oblasť a uistite sa, že IP pridané k výnimkám v pravidle pravidla Rich:

# firewall-cmd --zone = public - list-all

verejný (aktívny) cieľ: predvolená inverzia icmp-blokov: žiadne rozhrania: zdroje eth0: služby: dhcpv6-klient http https ssh testovacie porty: protokoly: maškaráda: žiadne forwardové porty: zdrojové porty: icmp-bloky: bohaté pravidlá: Rule family = "ipv4" source address = "8.8.8.8"

Blokovať IP, je potrebné vymeniť akceptovať na zamietnuť:

# firewall-cmd --zone = public --add-rich-Rule = 'Rule family = "ipv4" source address = "8.8.4.4" zamietnuť'

# firewall-cmd --zone = public - list-all

verejný (aktívny) cieľ: predvolená inverzia icmp-blokov: žiadne rozhrania: zdroje eth0: služby: dhcpv6-klient http https ssh testovacie porty: protokoly: maškaráda: žiadne forwardové porty: zdrojové porty: icmp-bloky: bohaté pravidlá: Rule family = "ipv4" source address = "8.8.8.8" akceptovať Rule family = "ipv4" source address = "8.8.4.4" zamietnuť

Konkrétnu službu môžete povoliť iba pre žiadosti z konkrétnej adresy IP:

# firewall-cmd --permanent - add-rich-Rule 'Rule family = "ipv4" source address = "10.10.1.0/24" service name = "https" akcept'

Ak naliehavo potrebujete zablokovať všetky požiadavky na server, použite príkaz panic:

# firewall-cmd --panic-on

Režim paniky môžete zakázať príkazom:

# firewall-cmd --panic-off

Alebo reštartujte server.

Konfiguráciu brány firewall môžete zablokovať, aby miestne služby s oprávneniami typu root nemohli zmeniť pravidlá brány firewall, ktoré ste vytvorili:

# firewall-cmd - odomknutie

Vypnúť režim zámku:

# firewall-cmd - odblokovanie

Presmerovanie portov v firewalld

V bráne firewall môžete vytvoriť pravidlo preposielania portov. Preposlanie portu 443 na 9090:

# firewall-cmd --zone = public --add-forward-port = port = 443: proto = tcp: toport = 9090 - permanentný

V systéme Windows môžete nastaviť presmerovanie portov pomocou programu netsh.

Odstránenie pravidla preposielania portov:

# firewall-cmd --zone = public --remove-forward-port = port = 443: proto = tcp: toport = 9090