Centos 7 firewall cmd port deschis

Instalat în sistem de operare Firewall este folosit pentru a preveni trecerea traficului neautorizat între ele retele de calculatoare. Regulile speciale pentru firewall sunt create manual sau automat, care sunt responsabile pentru controlul accesului. Un sistem de operare dezvoltat pe nucleul Linux, CentOS 7 are un firewall încorporat și este gestionat folosind un firewall. FirewallD este activat în mod implicit și am dori să vorbim despre configurarea lui astăzi.

După cum am menționat mai sus, firewall-ul standard din CentOS 7 este utilitarul FirewallD. De aceea se va discuta despre configurarea unui firewall folosind acest instrument ca exemplu. Puteți seta reguli de filtrare folosind aceleași iptables, dar acest lucru se face într-un mod ușor diferit. Vă recomandăm să vă familiarizați cu configurația utilitarului menționat făcând clic pe următorul link și vom începe să analizăm FirewallD.

Elemente de bază pentru firewall

Există mai multe zone - seturi de reguli pentru gestionarea traficului bazate pe încredere în rețele. Tuturor acestora li se oferă propriile politici, a căror totalitate formează configurația firewall-ului. Fiecărei zone îi sunt alocate una sau mai multe interfețe de rețea, ceea ce vă permite, de asemenea, să ajustați filtrarea. Regulile aplicate depind direct de interfața utilizată. De exemplu, atunci când este conectat la Wi-Fi public firewall va creste nivelul de control, iar in rețeaua de acasă va deschide acces suplimentar pentru participanții lanțului. Firewall-ul în cauză conține următoarele zone:

  • de încredere — nivel maxim de încredere în toate dispozitivele din rețea;
  • acasă - grup retea locala. Există încredere în mediu, dar conexiunile de intrare sunt disponibile numai pentru anumite mașini;
  • lucru - zona de lucru. Există încredere în majoritatea dispozitivelor și sunt activate servicii suplimentare;
  • dmz este o zonă pentru calculatoare izolate. Astfel de dispozitive sunt deconectate de la restul rețelei și permit doar un anumit trafic de intrare;
  • intern — zonă de rețele interne. Încrederea se aplică tuturor mașinilor, se deschid servicii suplimentare;
  • extern - zona inversă față de cea anterioară. În rețelele externe, masqueradingul NAT este activ, închizând rețeaua internă, dar fără a bloca capacitatea de a obține acces;
  • public - o zonă de rețele publice cu neîncredere în toate dispozitivele și recepția individuală a traficului de intrare;
  • blocare - toate cererile primite sunt resetate cu o eroare trimisă icmp-gazdă-interzis sau icmp6-adm-interzis;
  • drop - nivel minim de încredere. Conexiunile de intrare sunt abandonate fără nicio notificare.

Politicile în sine pot fi temporare sau permanente. Când apar sau editează parametrii, acțiunea paravanului de protecție se schimbă imediat, fără a fi nevoie să reporniți. Dacă s-au aplicat reguli temporare, acestea vor fi resetate după ce FirewallD este repornit. De aceea regula permanentă se numește așa - va fi păstrată pentru bază permanentă când se utilizează argumentul -permanent.

Activarea FirewallD

Mai întâi trebuie să porniți FirewallD sau să vă asigurați că este într-o stare activă. Doar un demon funcțional (un program care rulează în fundal) va aplica regulile firewall. Activarea se face în doar câteva clicuri:

  1. Lansați clasic "Terminal" orice metodă convenabilă, de exemplu, prin meniu „Aplicații”.
  2. Introduceți comanda sudo systemctl start firewalld.service și apăsați tasta introduce.
  3. Utilitarul este administrat în numele superutilizatorului, așa că va trebui să vă confirmați autenticitatea introducând o parolă.
  4. Pentru a vă asigura că serviciul funcționează, specificați firewall-cmd --state .
  5. În deschis fereastra grafică re-autentificați.
  6. Va fi afișată o nouă linie. Sens "alergare" indică faptul că firewall-ul funcționează.

Dacă trebuie vreodată să dezactivați temporar sau definitiv paravanul de protecție, vă recomandăm să utilizați instrucțiunile prezentate în celălalt articol al nostru de la următorul link.

Vedeți regulile implicite și zonele disponibile

Chiar și un firewall care funcționează în mod normal are propriile reguli specifice și zone accesibile. Înainte de a începe editarea politicilor, vă recomandăm să vă familiarizați cu configurația curentă. Acest lucru se face folosind comenzi simple:

  1. Comanda firewall-cmd --get-default-zone vă va ajuta să determinați zona implicită.
  2. După activarea acestuia, veți vedea o nouă linie în care va fi afișat parametrul necesar. De exemplu, în captura de ecran de mai jos, zona este considerată activă "public".
  3. Cu toate acestea, mai multe zone pot fi active simultan și sunt asociate cu o interfață separată. Aflați aceste informații prin firewall-cmd --get-active-zones .
  4. Comanda firewall-cmd --list-all va afișa regulile configurate pentru zona implicită. Aruncă o privire la captura de ecran de mai jos. Vedeți că zona activă "public" regulă atribuită "Mod implicit"- operare implicită, interfață "enp0s3"și s-au adăugat două servicii.
  5. Dacă doriți să aflați toate zonele de firewall disponibile, introduceți firewall-cmd --get-zones .
  6. Parametrii unei anumite zone sunt determinați prin firewall-cmd --zone=name --list-all , unde Nume- numele zonei.

După determinarea parametrilor necesari, puteți trece la modificarea și adăugarea acestora. Să aruncăm o privire mai atentă la câteva dintre cele mai populare configurații.

Configurarea zonelor de interfață

După cum știți din informațiile de mai sus, fiecare interfață are propria sa zonă implicită. Acesta va rămâne acolo până când setările sunt modificate de către utilizator sau în mod programatic. Este posibil să transferați manual o interfață într-o zonă pentru o sesiune, iar acest lucru se face prin activarea comenzii sudo firewall-cmd --zone=home --change-interface=eth0 . Rezultat "succes" indică faptul că transferul a avut succes. Să vă reamintim că astfel de setări sunt resetate imediat după repornirea firewall-ului.

Când modificați parametrii în acest fel, vă rugăm să rețineți că serviciile pot fi resetate. Unele dintre ele nu acceptă operarea în anumite zone, de exemplu, deși SSH este disponibil în "Acasă", dar in cele personalizate sau speciale serviciul va refuza sa functioneze. Puteți verifica dacă interfața a fost conectată cu succes la noua ramură introducând firewall-cmd --get-active-zones .

Dacă doriți să resetați setările făcute anterior, pur și simplu reporniți firewall-ul: sudo systemctl restart firewalld.service .

Uneori nu este întotdeauna convenabil să schimbați zona de interfață pentru o singură sesiune. În acest caz, va trebui să editați fișierul de configurare, astfel încât toate setările să fie introduse în mod permanent. Pentru a face acest lucru, vă recomandăm să utilizați un editor de text nano, care este instalat din depozitul oficial cu sudo yum install nano . În continuare, tot ce rămâne este să faci următoarele:

  1. Deschideți fișierul de configurare printr-un editor tastând sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 unde eth0— numele interfeței necesare.
  2. Confirmați autenticitatea cont pentru a efectua acțiuni ulterioare.
  3. Găsiți parametrul "ZONA"și schimbați-i valoarea la cea dorită, de exemplu, publică sau acasă .
  4. Țineți apăsate tastele Ctrl + O pentru a salva modificările.
  5. Nu schimbați numele fișierului, doar faceți clic pe introduce.
  6. Ieșire editor de text prin Ctrl+X.

Acum zona de interfață va fi așa cum ați specificat-o până la data viitoare când editați fișierul de configurare. Pentru ca setările actualizate să intre în vigoare, rulați sudo systemctl restart network.service și sudo systemctl restart firewalld.service .

Setarea zonei implicite

Mai sus, am demonstrat deja o comandă care ne-a permis să aflăm zona implicită. De asemenea, poate fi modificat prin setarea unui parametru la alegere. Pentru a face acest lucru, trebuie doar să tastați sudo firewall-cmd --set-default-zone=name în consolă, unde Nume— denumirea zonei solicitate.

Succesul comenzii va fi indicat prin inscripție "succes" pe o linie separată. După aceasta, toate interfețele curente vor fi legate la zona specificată, dacă nu se specifică altfel în fișierele de configurare.

Crearea de reguli pentru programe și utilitare

Chiar la începutul articolului, am vorbit despre acțiunea fiecărei zone. Definirea serviciilor, utilităților și programelor în astfel de ramuri vă va permite să aplicați parametri individuali pentru fiecare dintre ele, pentru a se potrivi nevoilor fiecărui utilizator. Pentru a începe, vă recomandăm să vă familiarizați cu lista completă a celor disponibile acest moment servicii: firewall-cmd --get-services .

Rezultatul va fi afișat direct în consolă. Fiecare server este separat de un spațiu și puteți găsi cu ușurință instrumentul care vă interesează în listă. Dacă serviciul necesar nu este disponibil, acesta ar trebui să fie instalat suplimentar. Citiți despre regulile de instalare în documentația oficială a software-ului.

Comanda de mai sus arată numai numele serviciilor. Informații detaliate pentru fiecare dintre ele sunt obținute printr-un fișier individual aflat la /usr/lib/firewalld/services. Astfel de documente sunt în format XML, calea, de exemplu, către SSH arată astfel: /usr/lib/firewalld/services/ssh.xml, iar documentul are următorul conținut:

SSH
Secure Shell (SSH) este un protocol pentru conectarea și executarea comenzilor pe mașini la distanță. Oferă comunicații criptate securizate. Dacă intenționați să vă accesați mașina de la distanță prin SSH printr-o interfață cu firewall, activați această opțiune. Aveți nevoie de pachetul openssh-server instalat pentru ca această opțiune să fie utilă.

Asistența de service într-o anumită zonă este activată manual. ÎN "Terminal" ar trebui să lansați comanda sudo firewall-cmd --zone=public --add-service=http , unde --zone=public- zona de activare, și --add-service=http— numele serviciului. Vă rugăm să rețineți că o astfel de modificare se va aplica doar unei sesiuni.

Adăugarea permanentă se face prin sudo firewall-cmd --zone=public --permanent --add-service=http , iar rezultatul "succes" indică finalizarea cu succes a operațiunii.

Vedere lista plina Puteți crea reguli permanente pentru o anumită zonă afișând lista într-o linie separată de consolă: sudo firewall-cmd --zone=public --permanent --list-services .

Rezolvarea problemei lipsei de acces la serviciu

În mod implicit, regulile firewall listează cele mai populare și mai sigure servicii ca fiind permise, dar unele standard sau aplicații terță parte el blochează. În acest caz, utilizatorul va trebui să modifice manual setările pentru a rezolva problema de acces. Acest lucru se poate face în două moduri diferite.

Port forwarding

După cum știți, toate serviciile de rețea folosesc un anumit port. Este ușor de detectat de firewall și blocarea poate fi efectuată folosindu-l. Pentru a evita astfel de acțiuni din firewall, trebuie să deschideți portul necesar cu comanda sudo firewall-cmd --zone=public --add-port=0000/tcp , unde --zone=public- zona portuara, --add-port=0000/tcp— numărul portului și protocolul. Opțiunea firewall-cmd --list-ports va afișa o listă de porturi deschise.

Dacă trebuie să deschideți porturile incluse în interval, utilizați linia sudo firewall-cmd --zone=public --add-port=0000-9999/udp , unde --add-port=0000-9999/udp— gama de porturi și protocolul acestora.

Comenzile de mai sus vă vor permite doar să testați utilizarea unor astfel de parametri. Dacă a avut succes, ar trebui să adăugați aceleași porturi la setările permanente, iar acest lucru se face introducând sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp sau sudo firewall-cmd -- zone=public --permanent --add-port=0000-9999/udp . Lista de porturi permanente deschise este vizualizată astfel: sudo firewall-cmd --zone=public --permanent --list-ports .

Definiția serviciului

După cum puteți vedea, adăugarea de porturi nu provoacă dificultăți, dar procedura devine mai complicată atunci când se utilizează un număr mare de aplicații. Devine dificil să urmăriți toate porturile în uz, așa că o opțiune mai bună ar fi să definiți serviciul:


Tot ce trebuie să faci este să alegi cea mai potrivită metodă pentru rezolvarea problemelor de acces la serviciu și să urmezi instrucțiunile furnizate. După cum puteți vedea, toate acțiunile sunt efectuate destul de ușor și nu ar trebui să apară dificultăți.

Crearea de zone personalizate

Știți deja că FirewallD a creat inițial un număr mare de zone diferite cu anumite reguli. Cu toate acestea, există situații când administrator de sistem trebuie să creați o zonă personalizată, cum ar fi "publicweb" pentru un server web instalat sau „privateDNS”— pentru serverul DNS. Folosind aceste două exemple, ne vom uita la adăugarea de ramuri:


În acest articol, ați învățat cum să creați zone personalizate și să adăugați servicii la acestea. Am vorbit deja despre setarea lor implicită și alocarea interfețelor mai sus, tot ce trebuie să faceți este să indicați numele corecte. Nu uitați să reporniți firewall-ul după ce faceți modificări permanente.

După cum puteți vedea, firewall-ul FirewallD este un instrument destul de cuprinzător care vă permite să creați cea mai flexibilă configurație de firewall. Tot ce rămâne este să vă asigurați că utilitarul începe cu sistemul și că regulile specificate își încep imediat activitatea. Faceți acest lucru cu comanda sudo systemctl enable firewalld.

Primul pas pentru a proteja serverul de amenințările externe este un firewall, care filtrează traficul de intrare și de ieșire. În acest articol vreau să discut despre configurarea iptables, un caz special al unui firewall pe CentOS și, de asemenea, să vorbesc despre instalarea și dezactivarea acestuia. Ghidul meu nu va fi exhaustiv, voi lua în considerare doar acele aspecte pe care le consider cele mai importante și pe care eu însumi le folosesc în munca mea.

Acest articol face parte dintr-o singură serie de articole despre server.

Introducere

Iptables este în prezent un standard de facto printre distribuțiile Linux moderne. Nici nu-mi amintesc de la început ce altceva este folosit ca firewall. Deci, orice administrator Linux trebuie să se ocupe de configurarea acestui firewall în munca sa.

Există diferite conexiuni la acest firewall care sunt folosite pentru o configurație mai „convenabilă”. Ubuntu are ufw, în centos - firewalld, pe ceilalți nu îi cunosc. Personal, nu văd nicio comoditate în utilizarea acestor instrumente. Sunt obișnuit să configurez un firewall Linux la modă veche, așa cum am învățat chiar la începutul muncii mele. Cred că acesta este cel mai simplu și mai convenabil mod, pe care îl voi împărtăși cu voi. Esența sa se rezumă la faptul că un script este creat cu reguli de firewall. Acest script poate fi editat cu ușurință pentru a se potrivi nevoilor dumneavoastră și transferat de la server la server.

Se dezactivează firewalld

Am atins deja problema dezactivării firewalld în subiectul despre . Mai întâi de toate, să dezactivăm firewalld, care este prezent implicit în centos 7 imediat după instalare:

# systemctl opri firewalld

Acum să-l eliminăm de la pornire, astfel încât să nu se pornească din nou după o repornire:

# systemctl dezactivează firewalld

După aceasta, setările firewall-ului de pe server devin complet deschise. Puteți vizualiza regulile iptables cu comanda:

Instalarea iptables

De fapt, avem deja un firewall pe serverul nostru și funcționează, pur și simplu nu există reguli, totul este deschis. Va trebui să instalăm utilități suplimentare de management, fără de care este imposibil să configurați iptables. De exemplu, nu va fi posibil să reporniți firewall-ul:

# systemctl restart iptables.service A eșuat la lansarea apelului de metodă: Unitatea iptables.service a eșuat la încărcare: Nu există un astfel de fișier sau director.

Sau nu o veți putea adăuga la autorun:

# systemctl enable iptables.service Nu s-a putut lansa apelul de metodă: Nu există un astfel de fișier sau director

Pentru a evita astfel de erori, instalați pachetul necesar cu utilitare:

# yum -y instalează iptables-services

Acum puteți adăuga iptables la pornire și rulare:

# systemctl enable iptables.service # systemctl start iptables.service

Configurarea unui firewall

Folosesc un script pentru a gestiona regulile firewall. Să-l creăm:

# mcedit /etc/iptables.sh

În continuare îl vom completa cu regulile necesare. Voi analiza toate părțile semnificative ale scenariului și O voi da integral în formular fisier text la finalul articolului. Regulile sunt făcute sub formă de imagini pentru a interzice copierea și lipirea. Acest lucru poate duce la erori în funcționarea regulilor, pe care le-am întâlnit și eu în timpul pregătirii articolului.

Vom lua în considerare o situație în care serverul este o poartă de acces la Internet pentru o rețea locală.

Mai întâi de toate, să setăm toate variabilele pe care le vom folosi în script. Acest lucru nu este necesar, dar este recomandat deoarece este convenabil să transferați setările de la server la server. Va fi suficient să reatribuiți pur și simplu variabilele.

Înainte de a aplica noile reguli, ștergem toate lanțurile:

Blocăm tot traficul care nu se potrivește cu niciuna dintre reguli:

Permiteți tot traficul localhost și local:

Permitem ping:

Dacă nu aveți nevoie de acest lucru, atunci nu adăugați reguli de permitere pentru icmp.

Deschidem accesul la internet la serverul însuși:

Dacă doriți să deschideți toate conexiunile la server de intrare, adăugați următoarea regulă:

Acum să adăugăm protecție împotriva celor mai comune atacuri de rețea. Mai întâi, să aruncăm toate pachetele care nu au nicio stare:

Blocarea pachetelor nule:

Protejați-vă de atacurile syn-flood:

Dacă nu setați restricții privind accesul din rețeaua locală, atunci permitem tuturor să acceseze Internetul:

În continuare interzicem accesul de pe Internet la rețeaua locală:

Pentru ca rețeaua noastră locală să utilizeze Internetul, activăm nat:

Pentru a nu pierde accesul la server, după aplicarea regulilor, permitem conexiuni prin ssh:

Și la sfârșit notăm regulile astfel încât acestea să se aplice după o repornire:

Am compilat o configurare simplă care blochează toate conexiunile de intrare cu excepția ssh și permite accesul din rețeaua locală la Internet. În același timp, ne-am protejat de unele atacuri de rețea.

Salvați scriptul, faceți-l executabil și rulați:

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

Să revizuim regulile și să verificăm dacă toate regulile sunt în vigoare:

# iptables -L -v -n

Vă rugăm să rețineți că trebuie să aplicați regulile doar dacă aveți acces la consola serverului. Dacă există o eroare în setări, este posibil să pierdeți accesul. Asigurați-vă că, în caz de urgență, puteți dezactiva firewall-ul și ajustați setările.

Deschiderea porturilor

Acum să ne extindem puțin configurația și să deschidem porturi în iptables pentru unele servicii. Să presupunem că avem un server web care rulează și trebuie să deschidem accesul la acesta de pe Internet. Adăugați reguli pentru traficul web:

A fost adăugată permisiunea pentru conexiunile de intrare pe porturile 80 și 443, pe care serverul web le folosește în activitatea sa.

Daca ai instalat server de mail, atunci trebuie să permiteți conexiunile de intrare la acesta pe toate porturile utilizate:

Pentru o funcționare corectă servere DNS, trebuie să deschideți portul UDP 53

Port forwarding

Să luăm în considerare o situație în care este necesar să redirecționăm porturile de la o interfață externă către un computer din rețeaua locală. Să zicem că trebuie să obțineți acces rdp la computerul 10.1.3.50 de pe Internet. Redirecționăm portul TCP 3389:

Dacă nu doriți să expuneți un port cunoscut din exterior, puteți redirecționa de la un port non-standard către portul rdp al computerului țintă:

Dacă redirecționați un port din exterior către rețeaua locală, asigurați-vă că comentați regula care blochează accesul de la rețeaua externă la cea internă. În exemplul meu, această regulă este: $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

Sau înainte de această regulă, creați o regulă de autorizare pentru accesul extern la serviciul intern, de exemplu, astfel:

$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT

Activarea jurnalelor

În timpul instalării, este util să activați jurnalele pentru a monitoriza pachetele blocate și să aflați de ce nu există acces la serviciile necesare pe care se pare că le-am deschis deja. Trimit toate pachetele blocate în lanțuri separate (block_in, block_out, block_fw) corespunzătoare direcției de trafic și marchez fiecare direcție în jurnal. Acest lucru face mai convenabil să faci debriefing. Adăugați următoarele reguli la sfârșitul scriptului, înainte de a salva setările:

Puteți urmări toate pachetele blocate în fișierul /var/log/messages.

După ce terminați configurarea, comentați aceste rânduri și dezactivați înregistrarea. Cu siguranță merită să faceți acest lucru, deoarece buștenii cresc foarte repede. Eu personal nu văd niciun sens practic în stocarea unor astfel de informații.

Cum se dezactivează iptables

Dacă decideți brusc că nu mai aveți nevoie de firewall, îl puteți dezactiva după cum urmează:

# systemctl opri iptables.service

Această comandă oprește firewall-ul. Și următoarele îl elimină de la pornire:

# systemctl dezactivează iptables.service

Dezactivând firewall-ul, am permis toate conexiunile.

Concluzie

După cum am promis, postez un script terminat cu setul de bază de reguli pe care l-am luat în considerare

Aș dori să subliniez încă o dată că atunci când configurați iptables trebuie să fiți extrem de atenți. Nu începeți această afacere dacă nu aveți acces la consola serverului. Chiar și când scriam acest articol, am pierdut accesul la server din cauza unei erori ridicole din reguli. Această eroare a apărut din cauza copierii și a pierderii unei liniuțe duble - a fost înlocuită cu una singură.

curs online „Administrator Linux” la OTUS. Cursul nu este pentru începători pentru admitere aveți nevoie de cunoștințe de bază despre rețele și Instalare Linux la mașina virtuală. Formarea durează 5 luni, după care absolvenții de curs de succes vor putea susține interviuri cu partenerii. Ce vă va oferi acest curs:

  • Cunoașterea arhitecturii Linux.
  • Dezvoltare metode moderneși instrumente de analiză și procesare a datelor.
  • Abilitatea de a selecta o configurație pentru sarcinile necesare, de a gestiona procesele și de a asigura securitatea sistemului.
  • Cunoașterea instrumentelor de lucru de bază ale unui administrator de sistem.
  • Înțelegerea specificului implementării, configurării și întreținerii rețelelor construite pe Linux.
  • Capacitatea de a rezolva rapid problemele emergente și de a asigura funcționarea stabilă și neîntreruptă a sistemului.
Testează-te la testul de admitere și vezi programul pentru mai multe detalii.

FirewallD este un instrument de gestionare a paravanului de protecție disponibil în mod implicit pe serverele CentOS 7. Este practic un înveliș în jurul IPTables și vine cu un instrument de configurare grafică, firewall-config și un instrument de configurare firewall. Linie de comanda firewall-cmd. Cu serviciul IPtables, fiecare modificare necesită ștergerea vechilor reguli și crearea de noi reguli în fișierul ` /etc/sysconfig/iptables`, iar cu firewalld se aplică doar diferențele.

FirewallD zone

FirewallD folosește servicii și zone în loc de reguli și lanțuri în Iptables. În mod implicit, sunt disponibile următoarele zone:

  • cădere brusca– Eliminați toate pachetele de rețea de intrare fără răspuns, doar cele de ieșire conexiuni de retea disponibil.
  • bloc– Respingeți toate pachetele de rețea de intrare cu mesajul icmp-host-prohibited, sunt permise doar conexiunile de rețea de ieșire.
  • public– sunt acceptate doar conexiunile de intrare selectate, pentru utilizare în zone publice
  • extern– Pentru rețelele externe cu mascarading, sunt acceptate doar conexiunile de intrare selectate.
  • dmz– zona demilitarizată DMZ, accesibilă public din acces limitat la rețeaua internă, sunt acceptate doar conexiunile de intrare selectate.
  • muncă
  • Acasă– Pentru computerele din zona de domiciliu, sunt acceptate doar conexiunile de intrare selectate.
  • intern– Pentru computerele din rețeaua dumneavoastră internă, sunt acceptate doar conexiunile de intrare selectate.
  • de încredere– Toate conexiunile la rețea sunt acceptate.

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

# firewall-cmd --get-zones work drop intern extern de încredere acasă bloc public dmz

Pentru a vizualiza o listă de zone implicite:

# firewall-cmd --get-default-zone public

Pentru a schimba zona implicită:

Servicii de firewall

Serviciile FirewallD sunt fișiere de configurare XML care conțin informații de intrare în serviciu pentru firewalld. Pentru a obține o listă cu toate serviciile disponibile:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmcd pmwebapi pmvwebapi pmproxy popproxy pmvwebapispppprpr3 pop-webapispxy noi rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh sinergie syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmisie-client vdsm vnc-server wbem-https xmpp-client xmpppr-local xmpp-bosh xmppr

Fișierele de configurare XML sunt stocate în directoare /usr/lib/firewalld/services/Și /etc/firewalld/services/.

Configurarea unui firewall cu FirewallD

De exemplu, iată cum puteți configura un firewall cu FirewallD dacă rulați un server web, SSH pe portul 7022 și un server de e-mail.

Mai întâi vom seta zona implicită pentru DMZ.

# firewall-cmd --set-default-zone=dmz # firewall-cmd --get-default-zone dmz

Pentru a adăuga reguli de serviciu persistente pentru HTTP și HTTPS în DMZ, rulați următoarea comandă:

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

Deschideți portul 25 (SMTP) și portul 465 (SMTPS):

Firewall-cmd --zone=dmz --add-service=smtp --permanent firewall-cmd --zone=dmz --add-service=smtps --permanent

Porturi deschise, IMAP, IMAPS, POP3 și POP3S:

Firewall-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

Deoarece portul SSH este schimbat la 7022, vom elimina serviciul SSH (portul 22) și vom deschide portul 7022

Firewall-cmd --remove-service=ssh --permanent firewall-cmd --add-port=7022/tcp --permanent

Pentru a implementa modificările, trebuie să repornim firewall-ul:

Firewall-cmd --reîncărcare

În cele din urmă, puteți enumera regulile.

FirewallD este un instrument de gestionare a paravanului de protecție disponibil în mod implicit pe serverele CentOS 7. Este practic un înveliș în jurul IPTables și vine cu un instrument de configurare grafică, firewall-config și un instrument de linie de comandă, firewall-cmd. Cu serviciul IPtables, fiecare modificare necesită ștergerea vechilor reguli și crearea de noi reguli în fișierul ` /etc/sysconfig/iptables`, iar cu firewalld se aplică doar diferențele.

FirewallD zone

FirewallD folosește servicii și zone în loc de reguli și lanțuri în Iptables. În mod implicit, sunt disponibile următoarele zone:

  • cădere brusca– Eliminați toate pachetele de rețea de intrare fără răspuns, sunt disponibile doar conexiunile de rețea de ieșire.
  • bloc– Respingeți toate pachetele de rețea de intrare cu mesajul icmp-host-prohibited, sunt permise doar conexiunile de rețea de ieșire.
  • public– sunt acceptate doar conexiunile de intrare selectate, pentru utilizare în zone publice
  • extern– Pentru rețelele externe cu mascarading, sunt acceptate doar conexiunile de intrare selectate.
  • dmz– zona demilitarizată DMZ, accesibilă publicului cu acces limitat la rețeaua internă, sunt acceptate doar conexiunile de intrare selectate.
  • muncă
  • Acasă– Pentru computerele din zona de domiciliu, sunt acceptate doar conexiunile de intrare selectate.
  • intern– Pentru computerele din rețeaua dumneavoastră internă, sunt acceptate doar conexiunile de intrare selectate.
  • de încredere– Toate conexiunile la rețea sunt acceptate.

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

# firewall-cmd --get-zones work drop intern extern de încredere acasă bloc public dmz

Pentru a vizualiza o listă de zone implicite:

# firewall-cmd --get-default-zone public

Pentru a schimba zona implicită:

Servicii de firewall

Serviciile FirewallD sunt fișiere de configurare XML care conțin informații de intrare în serviciu pentru firewalld. Pentru a obține o listă cu toate serviciile disponibile:

# firewall-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmcd pmwebapi pmvwebapi pmproxy popproxy pmvwebapispppprpr3 pop-webapispxy noi rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh sinergie syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmisie-client vdsm vnc-server wbem-https xmpp-client xmpppr-local xmpp-bosh xmppr

Fișierele de configurare XML sunt stocate în directoare /usr/lib/firewalld/services/Și /etc/firewalld/services/.

Configurarea unui firewall cu FirewallD

De exemplu, iată cum puteți configura un firewall cu FirewallD dacă rulați un server web, SSH pe portul 7022 și un server de e-mail.

Mai întâi vom seta zona implicită pentru DMZ.

# firewall-cmd --set-default-zone=dmz # firewall-cmd --get-default-zone dmz

Pentru a adăuga reguli de serviciu persistente pentru HTTP și HTTPS în DMZ, rulați următoarea comandă:

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

Deschideți portul 25 (SMTP) și portul 465 (SMTPS):

Firewall-cmd --zone=dmz --add-service=smtp --permanent firewall-cmd --zone=dmz --add-service=smtps --permanent

Porturi deschise, IMAP, IMAPS, POP3 și POP3S:

Firewall-cmd --zone=dmz --add-service=imap --permanent firewall-cmd --zone=dmz --add-service=imaps --permanent firewall-cmd --zone=dmz --add-service= pop3 --permanent firewall-cmd --zone=dmz --add-service=pop3s --permanent

Deoarece portul SSH este schimbat la 7022, vom elimina serviciul SSH (portul 22) și vom deschide portul 7022

Firewall-cmd --remove-service=ssh --permanent firewall-cmd --add-port=7022/tcp --permanent

Pentru a implementa modificările, trebuie să repornim firewall-ul:

Firewall-cmd --reîncărcare

În cele din urmă, puteți enumera regulile.

Începând cu CentoOS 7, a apărut un nou instrument pentru a configura regulile de filtrare a traficului firewalld. Este recomandat să îl utilizați pentru a gestiona regulile iptables. În CentOS 8, în loc de pachetul standard de filtrare iptables, se folosește acum cadrul nftables, iar când configurați regulile firewall prin firewalld, configurați de fapt nftables. În acest articol, ne vom uita la instalarea, conceptele de bază și configurarea firewalld pe un server care rulează CentOS 8 (CentOS 7 este același).


FirewallD– un firewall pentru a proteja serverul de traficul nedorit cu suport pentru managementul dinamic al regulilor (fără repornire) și implementarea regulilor de firewall permanente. Funcționează ca interfață pentru și nftables. FirewallD poate fi folosit pe aproape toate distribuțiile Linux.

Concepte, zone și reguli de bază pentru firewall

Înainte de a începe instalarea și configurarea firewalld, vom introduce conceptul de zone, care sunt folosite pentru a determina nivelul de încredere în diverse conexiuni. Pentru zone diferite firewalld puteți aplica diverse reguli de filtrare, specificați opțiuni active firewall sub formă de servicii predefinite, protocoale și porturi, redirecționare de porturi și reguli bogate.

Firewalld filtrează traficul de intrare în funcție de zonă în funcție de regulile aplicate zonei. Dacă IP- adresa expeditorului cererii se potrivește cu regulile unei anumite zone, apoi pachetul va fi trimis prin această zonă. Dacă adresa nu se potrivește cu niciuna dintre zonele configurate pe server, pachetul va fi procesat de zona implicită. La instalare firewalld se numește zona implicită public.

Firewalld are zone care sunt preconfigurate cu permisiuni pentru diferite servicii. Puteți utiliza aceste setări sau puteți crea propriile zone. Lista zonelor implicite care sunt create la instalarea firewalld (stocate în directorul /usr/lib/firewalld/zones/):

cădere brusca nivel minim de încredere. Toate conexiunile de intrare sunt blocate fără răspuns, sunt permise doar conexiunile de ieșire;
bloc zona este similară cu cea anterioară, dar când cererile primite sunt respinse, este trimis mesajul icmp-host-prohibited pentru Ipv4 sau icmp6-adm-prohibited pentru Ipv6;
public reprezintă rețele publice, nesigure. Puteți permite conexiuni de intrare selectate în mod individual;
extern rețele externe atunci când utilizați un firewall ca gateway. Este configurat pentru masquerading NAT, astfel încât rețeaua dumneavoastră internă să rămână privată, dar accesibilă;
intern antonimul zonei externe. Gazda are un nivel suficient de încredere, sunt disponibile o serie de servicii suplimentare;
dmz utilizat pentru calculatoarele situate într-un DMZ (calculatoare izolate, fără acces la restul rețelei). Sunt permise doar anumite conexiuni de intrare;
muncă zona pentru mașini de lucru (majoritatea calculatoarelor din rețea sunt de încredere);
Acasă zona rețelei de domiciliu. Majoritatea PC-urilor pot fi de încredere, dar sunt acceptate doar anumite conexiuni de intrare;
de încredere ai încredere în toate mașinile din rețea. Cea mai deschisă dintre toate opțiunile disponibile, necesită o utilizare conștientă.

ÎN firewalld sunt utilizate două seturi de reguli - permanente și temporare. Regulile temporare funcționează până când serverul este repornit. În mod implicit, atunci când adăugați reguli la firewalld, regulile sunt considerate temporare ( timpul de rulare). Pentru a adăuga o regulă în mod permanent, trebuie să utilizați steag - permanentă. Astfel de reguli vor fi aplicate după repornirea serverului.

Instalarea și activarea firewalld pe CentOS

În CentOS 7/8, firewalld este instalat implicit cu sistemul de operare. Dacă l-ați eliminat și doriți să instalați firewalld, puteți utiliza managerul standard /dnf:

# yum install firewalld -y - pentru Centos 7
# dnf install firewalld -y - pentru Centos 8

Demonului firewalld a pornit automat când serverul a pornit, trebuie să îl adăugați la:

# systemctl activa firewalld

Și fugi:

# systemctl porni firewalld

Verificați starea serviciului:

# systemctl status firewalld

● firewalld.service - firewalld - daemon firewall dinamic Încărcat: încărcat (/usr/lib/systemd/system/firewalld.service; activat; prestabilit furnizor: activat) Activ: activ (în rulare) de luni 14-10-2019 14:54 :40 +06; acum 22 de secunde Documente: man:firewalld(1) PID principal: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 14 oct 14:54:40 server.vpn.ru systemd: Pornește firewalld - daemon firewall dinamic... 14 oct 14:54:40 server.vpn.ru systemd: Pornire firewalld - daemon firewall dinamic.

Sau cu comanda:

# firewall-cmd --state

Comanda firewall-cmd este o interfață firewall pentru nftables/iptables.

# firewall-cmd --state

Lucrul cu reguli firewalld

Reguli implicite:

Înainte de a configura regulile firewalld, trebuie să verificați care zonă este utilizată implicit:

# firewall-cmd --get-default-zone

Deoarece tocmai am instalat firewalld și nu l-am configurat încă, avem o zonă implicită public.

Să verificăm zona activă. Există și unul - public:

# firewall-cmd --get-active-zones

Interfețe publice: eth0

După cum puteți vedea, interfața de rețea eth0 este controlată de zonă public.

Pentru a vedea regulile de bază, introduceți:

# firewall-cmd --list-all

Țintă publică (activă): implicit icmp-block-inversion: fără interfețe: eth0 surse: servicii: dhcpv6-client ssh ports: protocoale: masquerade: fără forward-ports: source-ports: icmp-blocks: reguli bogate:

Din listare puteți vedea că operațiunile obișnuite legate de clientul DHCP și ssh au fost adăugate în această zonă.

Zone disponibile

Pentru a vizualiza o listă a tuturor zonelor, trebuie să rulați comanda:

# firewall-cmd --get-zones

Am primit urmatoarea lista:

Blocați dmz drop extern acasă intern public de încredere lucrare

Pentru a verifica regulile unei anumite zone, trebuie să adăugați steag - zonă.

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

Țintă principală: implicit icmp-block-inversion: fără interfețe: surse: servicii: dhcpv6-client mdns samba-client porturi ssh: protocoale: masquerade: fără porturi forward: porturi sursă: icmp-blocks: reguli bogate:

Regulile tuturor zonelor pot fi vizualizate cu comanda:

# firewall-cmd --list-all-zones

Lista va fi destul de mare, deoarece pot exista multe zone.

Schimbați zona implicită.

Implicit este tot interfețe de rețea situat in zona public, dar pot fi transferate în oricare dintre zone cu comanda:

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

După parametru --zonă= indicați zona dorită.

Pentru a schimba zona implicită, trebuie să utilizați comanda:

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

Adăugarea regulilor de aplicare

Pentru a deschide un port pentru o aplicație, puteți adăuga un serviciu la excepții. Afișează o listă de servicii disponibile:

Ieșirea va conține un număr mare de servicii. informatii detaliate despre serviciu este cuprinsă în sa xml fişier. Aceste fișiere se află în director /usr/lib/firewalld/services.

De exemplu:

# cd /usr/lib/firewalld/services

Mail (SMTP) Această opțiune permite livrarea e-mailurilor SMTP de intrare. Dacă trebuie să permiteți gazdelor de la distanță să se conecteze direct la aparatul dvs. pentru a livra e-mail, activați această opțiune. Nu trebuie să activați acest lucru dacă colectați e-mailurile de pe serverul ISP-ului dvs. prin POP3 sau IMAP sau dacă utilizați un instrument precum fetchmail. Rețineți că un SMTP configurat incorect serverul poate permiteți mașinilor de la distanță să vă folosească serverul pentru a trimite spam.

Fișierul XML conține o descriere a serviciului, a protocolului și a numărului de port care vor fi deschise în firewalld.

Când adăugați reguli, puteți utiliza parametrul --adăugați-serviciu pentru a deschide accesul la un anumit serviciu:

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

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

După adăugarea regulilor, puteți verifica dacă serviciile au fost adăugate în zona specificată:

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

Dhcpv6-client http https ssh

Dacă doriți să faceți aceste reguli permanente, trebuie să adăugați parametrul atunci când adăugați -permanent.

Pentru a elimina un serviciu dintr-o zonă:

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

Dhcpv6-client https test ssh

Dacă doriți să adăugați serviciul dvs. la excepții, puteți crea un fișier xml singur și completează-l. Puteți copia datele din orice serviciu, puteți schimba numele, descrierea și numărul portului.

Să copiem fișierul smtp.xmlîn directorul pentru lucrul cu serviciile utilizatorului:

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

Modificați descrierea serviciului din fișier.

Eu insumi fișier xml De asemenea, trebuie să-l redenumiți după numele serviciului dvs. După aceea, trebuie să reporniți firewalld și să verificați dacă serviciul nostru este în listă:

Am sunat la service Test si a aparut in lista:

Syslog-tls telnet test tftp

Acum puteți adăuga serviciul creat în orice zonă:

# firewall-cmd --zone=public --add-service=test --permanent

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

Dhcpv6-client http https ssh test

Dacă nu ați găsit serviciul de care aveți nevoie în listă, puteți deschide portul necesar pe firewalld cu comanda:

# firewall-cmd --zone=public -add-port=77/tcp - deschide portul 77 tcp
# firewall-cmd --zone=public -add-port=77/udp - deschide portul 77 udp
# firewall-cmd --zone=public -add-port=77-88/udp - deschideți intervalul de porturi 77-88 udp
# firewall-cmd --zone=public -list-ports - verifica lista de porturi permise

Blocați/permiteți răspunsurile ICMP:

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

Eliminați portul adăugat:

# firewall-cmd --zone=public -remove-port=77/udp - eliminați regula temporară 77 udp

# firewall-cmd --permanent --zone=public -remove-port=77/udp - eliminați regula permanentă

Adăugarea propriilor zone

Vă puteți crea propria zonă (o voi numi al nostru):

# firewall-cmd --permanent --new-zone=our

După crearea unei noi zone, precum și după crearea unui serviciu, este necesară o repornire firewalld:

# firewall-cmd --reîncărcare

# firewall-cmd --get-zones

Blocați dmz drop extern acasă intern munca noastră publică de încredere

Zona al nostru disponibil. Puteți adăuga servicii la acesta sau deschide porturi specifice.

Firewalld: blocarea adreselor IP, crearea de excepții

Puteți adăuga adrese IP de încredere la excepțiile firewall sau le puteți bloca pe cele nedorite.

Pentru a adăuga unul specific la excepții adresa IP(de exemplu 8.8.8.8) pe serverul dvs. prin firewalld, utilizați comanda:

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

Verificați zona și asigurați-vă IP adăugat la excepții în regulile bogate:

Țintă publică (activă): implicit icmp-block-inversion: fără interfețe: eth0 surse: servicii: dhcpv6-client http https porturi de testare ssh: protocoale: masquerade: fără porturi forward: porturi sursă: icmp-blocks: reguli bogate: rule family="ipv4" adresa sursă="8.8.8.8" accept

A bloca IP, trebuie înlocuit Accept pe respinge:

# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="8.8.4.4" reject"

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

Țintă publică (activă): implicit icmp-block-inversion: fără interfețe: eth0 surse: servicii: dhcpv6-client http https porturi de testare ssh: protocoale: masquerade: fără porturi forward: porturi sursă: icmp-blocks: reguli bogate: rule family="ipv4" sursă adresa="8.8.8.8" acceptă regula family="ipv4" surs address="8.8.4.4" respinge

Puteți permite un anumit serviciu numai pentru solicitările de la o anumită adresă IP:

#firewall-cmd --permanent --add-rich-rule "rule family="ipv4" source address="10.10.1.0/24" service name="https" accept"

Dacă aveți nevoie urgent să blocați toate cererile către server, utilizați comanda de panică:

# firewall-cmd --panic-on

Puteți dezactiva modul de panică fie cu comanda:

# firewall-cmd --panic-off

Sau repornind serverul.

Puteți bloca configurația firewalld, astfel încât serviciile locale cu drepturi root nu a putut modifica regulile de firewall pe care le-ați creat:

# firewall-cmd --lockdown-on

Dezactivați modul de blocare:

# firewall-cmd --lockdown-off

Redirecționare porturi în firewalld

Puteți crea o regulă de redirecționare a portului în firewalld. Pentru a redirecționa portul 443 la 9090:

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

Pentru a elimina o regulă de redirecționare a porturilor:

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




Top