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; |
blok | zó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; |
DMZ | Použí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áce | zóna pre pracovné stroje (väčšina počítačov v sieti je dôveryhodná); |
domov | zó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
# 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ý
Odstránenie pravidla preposielania portov:
# firewall-cmd --zone = public --remove-forward-port = port = 443: proto = tcp: toport = 9090