Android

Cum să configurați un firewall cu firewalld pe centos 7

Настройка firewall в CentOS 7 (firewalld)

Настройка firewall в CentOS 7 (firewalld)

Cuprins:

Anonim

Un firewall configurat corect este unul dintre cele mai importante aspecte ale securității generale a sistemului.

FirewallD este o soluție completă de firewall care gestionează regulile iptables ale sistemului și oferă o interfață D-Bus pentru operarea lor. Începând cu CentOS 7, FirewallD înlocuiește iptables ca instrument implicit de gestionare a firewall-ului.

În acest tutorial, vă arătăm cum puteți configura un firewall cu FirewallD pe sistemul dvs. CentOS 7 și vă explicăm conceptele de bază FirewallD.

Cerințe preliminare

Înainte de a începe cu acest tutorial, asigurați-vă că sunteți conectat la serverul dvs. cu un cont de utilizator cu privilegii sudo sau cu utilizator root. Cea mai bună practică este să rulați comenzi administrative ca utilizator sudo în loc de root. Dacă nu aveți un utilizator sudo în sistemul dvs. CentOS, puteți crea unul urmând aceste instrucțiuni.

Conceptele de bază pentru firewalld

FirewallD utilizează conceptele de zone și servicii, în loc de lanț iptables și reguli. Pe baza zonelor și serviciilor pe care le veți configura, puteți controla ce trafic este permis sau interzis pentru și din sistem.

FirewallD poate fi configurat și gestionat folosind utilitatea liniei de comandă firewall-cmd .

Zonele firewalld

Zonele sunt seturi de reguli predefinite care specifică ce trafic trebuie permis în funcție de nivelul de încredere în rețelele 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 eliminate fără nicio notificare. Sunt permise doar conexiunile de ieșire. bloc: Toate conexiunile primite sunt respinse cu un mesaj icmp-host-prohibited pentru IPv4 și icmp6-adm-prohibited pentru IPv6n. Sunt permise doar conexiunile de ieșire. public: Pentru utilizare în zone publice neîncredute. Nu aveți încredere în alte computere din rețea, dar puteți permite conexiuni de intrare selectate. extern: Pentru utilizare pe rețele externe cu mascare NAT activat atunci când sistemul dvs. acționează ca un gateway sau un router. Sunt permise numai conexiunile de intrare selectate. intern: Pentru utilizare în rețelele interne atunci când sistemul dvs. acționează ca un gateway sau un router. Alte sisteme din rețea sunt în general de încredere. Sunt permise numai conexiunile de intrare selectate. dmz: utilizat pentru calculatoarele din zona dvs. demilitarizată care au acces limitat la restul rețelei. Sunt permise numai conexiunile de intrare selectate. de 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 uz casnic. Alte computere din rețea sunt în general de încredere. Sunt permise numai conexiunile de intrare selectate. de încredere: toate conexiunile de rețea sunt acceptate. Ai încredere în toate calculatoarele din rețea.

Servicii firewall

Serviciile Firewalld sunt reguli predefinite care se aplică într-o zonă și definesc setările necesare pentru a permite traficul de intrare pentru un anumit serviciu.

Firewalld Runtime și Setări permanente

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

Configurația de execuție este configurația de execuție reală și nu este persistentă la repornirea. Când serviciul Firewalld începe, se încarcă configurația permanentă, care devine configurația de rulare.

În mod implicit, atunci când efectuați modificări la configurația Firewalld folosind utilitarul firewall-cmd , modificările sunt aplicate la configurația runtime. Pentru a face modificările permanente, trebuie să utilizați opțiunea --permanent .

Instalarea și activarea FirewallD

  1. Firewalld este instalat în mod implicit pe CentOS 7, dar dacă nu este instalat pe sistemul dvs., puteți instala pachetul tastând:

    sudo yum install firewalld

    Serviciul Firewalld este dezactivat în mod implicit. Puteți verifica starea firewallului cu:

    sudo firewall-cmd --state

    Pentru a porni serviciul FirewallD și a-l activa pe tipul de boot:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Lucrul cu zonele Firewalld

După activarea serviciului FirewallD pentru prima dată, zona public este setată ca zonă implicită. Puteți vizualiza zona implicită tastând:

sudo firewall-cmd --get-default-zone

public

Pentru a obține o listă cu toate zonele disponibile, introduceți:

sudo firewall-cmd --get-zones

block dmz drop external home internal public trusted work

În mod implicit, toate interfețele de rețea sunt alocate zonei implicite. Pentru a verifica ce zone sunt utilizate de tipul de interfață de rețea:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

Rezultatul de mai sus ne spune că ambele interfețe eth0 și eth1 sunt atribuite zonei publice.

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 setată ca implicită, folosită atât de interfețele eth0 cât și de eth1 . De asemenea, conexiunile legate de clientul DHCP și SSH sunt permise.

sudo firewall-cmd --list-all-zones

Comanda tipărește o listă uriașă cu setările tuturor zonei disponibile.

Schimbarea zonei unei interfețe

Puteți schimba cu ușurință Zona de interfață utilizând opțiunea --zone în combinație cu opțiunea --change-interface . Următoarea comandă va atribui interfața eth1 zonei de lucru:

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

Verificați modificările tastând:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Modificarea 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ă în casă, ar trebui să executați următoarea comandă:

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

Verificați modificările cu:

sudo firewall-cmd --get-default-zone

home

Deschiderea unui port sau serviciu

Cu FirewallD puteți permite traficul pentru anumite porturi pe baza regulilor 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 fișierului.xml aflat în directorul /usr/lib/firewalld/services . De exemplu, serviciul HTTP este definit astfel:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) 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. WWW (HTTP) 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.

Pentru a permite traficul HTTP de intrare (port 80) pentru interfețele din zona publică, numai pentru tipul sesiunii curente (configurație runtime):

sudo firewall-cmd --zone=public --add-service=http Dacă modificați zona implicită, puteți părăsi 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

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

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

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

Sintaxa pentru eliminarea serviciului este aceeași ca la adăugarea unui serviciu. Utilizați doar --remove-service în loc de opțiunea --add-service :

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

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

Ce se întâmplă dacă executați o aplicație precum Plex Media Server pentru care nu există un serviciu adecvat disponibil?

În situații ca acestea, aveți două opțiuni. Puteți deschide porturile corespunzătoare sau defini un nou serviciu FirewallD.

De exemplu, Plex Server ascultă portul 32400 și folosește TCP, pentru a deschide portul în zona publică pentru sesiunea curentă, folosiți opțiunea --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp Protocoalele pot fi fie tcp fie udp .

Pentru a verifica dacă portul a fost adăugat cu succes, utilizați opțiunea --list-ports :

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

32400/tcp

Pentru a menține portul 32400 deschis după repornire, adăugați regula la setările permanente, executând aceeași comandă folosind opțiunea --permanent .

Sintaxa pentru eliminarea unui port este aceeași ca la adăugarea unui port. Utilizați doar --remove-port în locul --add-port .

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

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 de a copia un fișier de servicii existent în directorul /etc/firewalld/services , care este locația pentru servicii create de utilizator și de a modifica setările fișierului.

De exemplu, pentru a crea o definiție de serviciu pentru Plex Media Server, putem folosi fișierul de servicii SSH:

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

Deschideți fișierul recent creat plexmediaserver.xml și schimbați numele scurt și descrierea pentru serviciul din și Etichete. Cea mai importantă etichetă pe care trebuie să o schimbați este eticheta port , care definește numărul de port și protocolul pe care doriți să îl deschideți.

În următorul exemplu, deschidem porturi 1900 UDP și 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver 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. plexmediaserver 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.

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..

Transmiterea portului cu Firewalld

Pentru a --add-masquerade traficul dintr-un port în alt port sau adresă, activați mai întâi masquerading-ul pentru zona dorită folosind comutatorul --add-masquerade . De exemplu, pentru a activa mascherarea pentru tipul de zonă external :

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

  • Transmite trafic de la un port la altul pe același server

În următorul exemplu trimitem 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

  • Transmite trafic către un alt server

În următorul exemplu, 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

  • Transmite trafic către un alt server de pe un alt port

În următorul exemplu, 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

Crearea unui set de reguli cu FirewallD

În exemplul următor, vom arăta cum să configurați firewallul dacă rulați un server web. Presupunem că serverul dvs. are o singură interfață eth0 și doriți să permiteți traficul de intrare numai pe porturile SSH, HTTP și

  1. Modificați zona implicită în dmz

    Vom folosi zona dmz (demilitarizată), deoarece implicit, aceasta permite doar trafic SSH. Pentru a schimba zona implicită la dmz și a o aloca interfeței eth0 , executați următoarele comenzi:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Deschide porturi HTTP și

    Pentru a deschide porturile HTTP și HTTPS adăugați reguli de serviciu permanente în zona dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Faceți modificările eficiente imediat reîncărcând firewall-ul:

    sudo firewall-cmd --reload

    Verificați modificările

    Pentru a verifica tipul de setări de configurare a zonei dmz:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    Rezultatul de mai sus ne spune că dmz este zona implicită, este aplicat pe interfața eth0 și porturile ssh (22) http (80) și https (443) sunt deschise.

Concluzie

Ați învățat cum puteți configura și gestiona serviciul FirewallD pe sistemul dvs. CentOS.

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

firewalld firewall iptables centos de securitate