Cum să configurați și să gestionați Paravanul de protecție pe CentOS 8

un firewall este o metodă de monitorizare și filtrare a traficului de rețea de intrare și ieșire. Funcționează prin definirea unui set de reguli de securitate care determină dacă să permită sau să blocheze traficul specific. Un firewall configurat corect este unul dintre cele mai importante aspecte ale securității generale a sistemului.

CentOS 8 este livrat cu un demon firewall numit firewalld. Este o soluție completă cu o interfață D-Bus care vă permite să gestionați dinamic firewall-ul sistemului.

în acest tutorial, vom vorbi despre cum să configurați și să gestionați firewall-ul pe CentOS 8. Vom explica, de asemenea, conceptele de bază FirewallD.

cerințe preliminare #

pentru a configura serviciul firewall, trebuie să fiți conectat ca root sau utilizator cu privilegii sudo.

concepte Firewalld de bază #

firewalld utilizează conceptele de zone și servicii. Pe baza zonelor și serviciilor pe care le veți configura, puteți controla ce trafic este permis sau blocat către și dinspre sistem.

Firewalld poate fi configurat și gestionat folosind utilitarul de linie de comandă firewall-cmd.

în CentOS 8, iptables este înlocuit cu nftables ca backend firewall implicit pentru demonul firewalld.

zone Firewalld #

zone sunt seturi predefinite de reguli care specifică nivelul de încredere al rețelelor la care este conectat computerul. Puteți atribui interfețe de rețea și surse unei zone.

mai jos sunt zonele furnizate de FirewallD ordonate în funcție de nivelul de încredere al zonei de la neîncredere la încredere:

  • picătură: Toate conexiunile primite sunt abandonate fără nicio notificare. Sunt permise numai conexiunile de ieșire.
  • block: toate conexiunile primite sunt respinse cu un mesaj icmp-host-prohibited pentru IPv4 și icmp6-adm-prohibited pentru IPv6n. sunt permise numai conexiunile de ieșire.
  • public: pentru utilizare în zone publice de încredere. Nu aveți încredere în alte computere din rețea, dar puteți permite conexiunile de intrare selectate.
  • extern: pentru utilizarea în rețele externe cu Nat masquerading activat atunci când sistemul dvs. acționează ca un gateway sau router. Sunt permise numai conexiunile de intrare selectate.
  • intern: pentru utilizarea în rețele interne atunci când sistemul dvs. acționează ca un gateway sau router. Alte sisteme din rețea sunt, în general, de încredere. Sunt permise numai conexiunile de intrare selectate.
  • dmz: utilizat pentru computerele situate în zona dvs. demilitarizată care au acces limitat la restul rețelei. Sunt permise numai conexiunile de intrare selectate.
  • lucru: folosit pentru mașini de lucru. Alte computere din rețea sunt, în general, de încredere. Sunt permise numai conexiunile de intrare selectate.
  • acasă: folosit pentru mașini de acasă. Alte computere din rețea sunt, în general, de încredere. Sunt permise numai conexiunile de intrare selectate.
  • trusted: toate conexiunile de rețea sunt acceptate. Aveți încredere în toate computerele din rețea.

Firewall services #

Firewalld services sunt reguli predefinite care se aplică într-o zonă și definesc setările necesare pentru a permite traficul de intrare pentru un anumit serviciu. Serviciile vă permit să efectuați cu ușurință mai multe sarcini într-un singur pas.

de exemplu, serviciul poate conține definiții despre deschiderea porturilor, redirecționarea traficului și multe altele.

Firewalld Runtime and Permanent Settings #

Firewalld utilizează două seturi de configurare separate, runtime și configurare permanentă.

configurația runtime este configurația de rulare reală și nu persistă la repornire. Când demonul firewalld pornește, încarcă configurația permanentă, care devine configurația runtime.

în mod implicit, atunci când efectuați modificări la configurația Firewalld utilizând utilitarul firewall-cmd, modificările sunt aplicate configurației runtime. Pentru a face modificările permanente adăugați opțiunea --permanent la comandă.

pentru a aplica modificările în ambele seturi de configurare, puteți utiliza una dintre următoarele două metode:

  1. modificați configurația runtime și faceți-o permanentă:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. schimbați configurația permanentă și reîncărcați demonul firewalld:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

activarea FirewallD #

pe CentOS 8, firewalld este instalat și activat în mod implicit. Dacă din anumite motive nu este instalat pe sistemul dvs., puteți instala și porni daemonul tastând:

sudo dnf install firewalldsudo systemctl enable firewalld --now

puteți verifica starea serviciului firewall cu:

sudo firewall-cmd --state

dacă Paravanul de protecție este activat, comanda ar trebui să imprime running. În caz contrar, veți vedea not running.

zone Firewalld #

dacă nu l-ați modificat, zona implicită este setată la public și toate interfețele de rețea sunt atribuite acestei zone.

zona implicită este cea care este utilizată pentru tot ceea ce nu este atribuit în mod explicit unei alte zone.

puteți vedea zona implicită tastând:

sudo firewall-cmd --get-default-zone
public

pentru a obține o listă cu toate zonele disponibile, tastați:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

pentru a vedea zonele active și interfețele de rețea atribuite acestora:

sudo firewall-cmd --get-active-zones

ieșirea de mai jos arată că interfețele eth0 și eth1 sunt atribuite zonei public :

public interfaces: eth0 eth1

puteți imprima setările de configurare a zonei cu:

sudo firewall-cmd --zone=public --list-all
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

din ieșirea de mai sus, putem vedea că zona publică este activă și folosește ținta implicită, care este REJECT. Rezultatul arată, de asemenea, că zona este utilizată de interfețele eth0 și eth1 și permite traficul DHCP client și SSH.

dacă doriți să verificați configurațiile tuturor tipurilor de zone disponibile:

sudo firewall-cmd --list-all-zones

comanda imprimă o listă uriașă cu setările tuturor zonelor disponibile.

schimbarea zonei țintă #

ținta definește comportamentul implicit al zonei pentru traficul de intrare care nu este specificat. Acesta poate fi setat la una dintre următoarele opțiuni: default, ACCEPT, REJECT, și DROP.

pentru a seta ținta zonei, specificați zona cu opțiunea --zone și ținta cu opțiunea --set-target.

de exemplu, pentru a schimba ținta zonei public la DROP veți rula:

sudo firewall-cmd --zone=public --set-target=DROP

atribuirea unei interfețe unei zone diferite #

puteți crea seturi specifice de reguli pentru diferite zone și le puteți atribui interfețe diferite. Acest lucru este util mai ales atunci când mai multe interfețe pe mașină.

pentru a atribui o interfață unei zone diferite, specificați zona cu opțiunea --zone și interfața cu opțiunea --change-interface.

de exemplu, următoarea comandă atribuie interfața eth1 zonei work :

sudo firewall-cmd --zone=work --change-interface=eth1

verificați modificările tastând:

sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0

schimbarea zonei implicite #

pentru a schimba zona implicită, utilizați opțiunea --set-default-zone urmată de numele zonei pe care doriți să o faceți implicită.

de exemplu, pentru a schimba zona implicită la home, executați următoarea comandă:

sudo firewall-cmd --set-default-zone=home

verificați modificările cu:

sudo firewall-cmd --get-default-zone
home

crearea de noi zone #

Firewalld vă permite, de asemenea, să vă creați propriile zone. Acest lucru este util atunci când doriți să creați reguli per aplicație.

în exemplul următor vom crea o nouă zonă numită memcached, vom deschide portul 11211 și vom permite accesul numai de la adresa IP 192.168.100.30 :

  1. creați zona:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. adăugați Regulile în zonă:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. Reîncărcați demonul firewalld pentru a activa modificările:

    sudo firewall-cmd --reload

Firewalld Services #

cu firewalld puteți permite traficul pentru anumite porturi și/sau surse bazate pe reguli predefinite numite servicii.

pentru a obține o listă cu toate tipurile de servicii disponibile implicit:

sudo firewall-cmd --get-services

puteți găsi mai multe informații despre fiecare serviciu prin deschiderea asociate .fișier xml în directorul /usr/lib/firewalld/services. De exemplu, serviciul HTTP este definit astfel:

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/></service>

pentru a permite traficul HTTP de intrare (portul 80) pentru interfețele din zona publică, numai pentru tipul de sesiune curentă (configurare runtime:

sudo firewall-cmd --zone=public --add-service=http
dacă modificați zona implicită, puteți lăsa opțiunea --zone.

pentru a verifica dacă serviciul a fost adăugat cu succes, utilizați opțiunea --list-services :

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

pentru a menține portul 80 deschis după repornire, executați din nou aceeași comandă cu opțiunea --permanent sau executați:

sudo firewall-cmd --runtime-to-permanent

utilizați opțiunea --list-services împreună cu opțiunea --permanent pentru a verifica modificările:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

sintaxa pentru eliminarea serviciului este aceeași ca la adăugarea unuia. Doar folosi --remove-service în loc de --add-service Pavilion:

sudo firewall-cmd --zone=public --remove-service=http --permanent

comanda de mai sus elimină serviciul http din configurația permanentă a zonei publice.

crearea unui nou serviciu FirewallD #

după cum am menționat deja, serviciile implicite sunt stocate în directorul /usr/lib/firewalld/services. Cel mai simplu mod de a crea un nou serviciu este să copiați un fișier de serviciu existent în directorul /etc/firewalld/services, care este locația pentru serviciile create de utilizator și să modificați setările fișierului.

de exemplu, pentru a crea o definiție de serviciu pentru Plex Media Server, puteți utiliza fișierul de serviciu SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

deschideți fișierul plexmediaserver.xml nou creat și schimbați numele scurt și descrierea serviciului în etichetele <short> și <description>. Cea mai importantă etichetă pe care trebuie să o modificați este eticheta port, care definește numărul portului și protocolul pe care doriți să îl deschideți.

în exemplul următor, deschidem porturile 1900 UDP și 32400 TCP.

/etc/firewalld/servicii/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?><service version="1.0"><short>plexmediaserver</short><description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description><port protocol="udp" port="1900"/><port protocol="tcp" port="32400"/></service>

salvați fișierul și reîncărcați serviciul FirewallD:

sudo firewall-cmd --reload

acum Puteți utiliza serviciul plexmediaserver în zonele dvs. la fel ca orice alt serviciu.

deschiderea porturilor și a IP-urilor sursă #

Firewalld vă permite, de asemenea, să activați rapid tot traficul de la o adresă IP de încredere sau de pe un anumit port fără a crea o definiție a serviciului.

deschiderea unui IP sursă #

pentru a permite tot traficul de intrare de la o anumită adresă IP (sau interval), specificați zona cu opțiunea --zone și IP-ul sursă cu opțiunea --add-source.

de exemplu, pentru a permite tot traficul de intrare din 192.168.1.10 în zona public, executați:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

faceți ca noua regulă să fie persistentă:

sudo firewall-cmd --runtime-to-permanent

verificați modificările utilizând următoarea comandă:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

sintaxa pentru eliminarea unui IP sursă este aceeași ca la adăugarea unuia. Doar folosi --remove-source în loc de --add-source opțiune:

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

deschiderea unui port sursă #

pentru a permite tot traficul de intrare pe un anumit port, specificați zona cu opțiunea --zone și portul și protocolul cu opțiunea --add-port.

de exemplu, pentru a deschide portul 8080 în zona publică pentru sesiunea curentă, executați rana:

sudo firewall-cmd --zone=public --add-port=8080/tcp

protocolul poate fi fie tcp, udp, sctp, sau dccp.

verificați modificările:

sudo firewall-cmd --zone=public --list-ports
8080

pentru a menține portul deschis după repornire, adăugați regula la setările permanente executând aceeași comandă folosind steagul --permanent sau executând:

sudo firewall-cmd --runtime-to-permanent

sintaxa pentru eliminarea unui port este aceeași ca la adăugarea unui port. Utilizați doar --remove-port în loc de opțiunea --add-port.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

porturi de redirecționare #

pentru a redirecționa traficul de la un port la altul, activați mai întâi mascarea zonei dorite utilizând opțiunea --add-masquerade. De exemplu, pentru a activa Mascarea pentru zona external, tastați:

sudo firewall-cmd --zone=external --add-masquerade

redirecționați traficul de la un port la altul pe adresa IP #

în exemplul următor redirecționăm traficul de la portul 80 la portul 8080 pe același server:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

redirecționați traficul către o altă adresă IP #

în exemplul următor redirecționăm traficul de la portul 80 la portul 80 pe un server cu IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

redirecționați traficul către un alt server pe un alt port #

în exemplul următor redirecționăm traficul de la portul 80 la portul 8080 pe un server cu IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

pentru a face regula înainte persistentă, utilizați:

sudo firewall-cmd --runtime-to-permanent

concluzie #

ați învățat cum să configurați și să gestionați serviciul firewalld pe sistemul dvs. CentOS 8.

asigurați-vă că permiteți toate conexiunile de intrare care sunt necesare pentru buna funcționare a sistemului dvs., limitând în același timp toate conexiunile inutile.



+