Introducere
Firewall-ul este un sistem care oferă securitate rețelei filtrând traficul care intră și iese pe baza unui set de reguli stabilite de utilizator. În general, scopul firewall-ului este de a reduce sau de a elimina apariția unei comunicații nedorite în rețea, permițând comunicațiilor legitime să se desfășoare normal. În majoritatea infrastructurilor de servere, firewall-ul oferă o protecție de securitate, care combinată cu alte măsuri împiedică atacatorii să acceseze serverele în moduri rău intenționate.
În acest articol vom discuta cum funcționează firewall-ul, cu un accent mai mare pe firewall-ul stateful, cum ar fi IP-urile de masă și ID-ul firewall deoarece acestea se referă la serverele cloud. Apoi vom discuta despre o varietate de subiecte relevante legate de firewall-ul stateful.
Pachetele TCP (Transport Control Protocol – Protocolul de Control al Transmisiei)
Înainte de a discuta despre diferitele tipuri de firewall, haide să aruncăm o scurtă privire la cum arată traficul în rețeaua de Protocolul de Control al Transmisiei (TCP).
Traficul TCP se mișcă în jurul unei rețele în pachete, care sunt containere cu un pachet titlu, acestea conțin informații de control ca sursa și adresa de destinație, și pachetul secvență de informație și datele (cunoscute și sarcina utilă). În timp ce informația de control a fiecărui pachet ajută să se asigure că datele sale sunt livrate în mod corespunzător, elementele pe care le conțin furnizează firewall-ului o varietate de modalități pentru a potrivi pachetele după regulile firewall.
Este important să notăm că pentru primirea cu succes a pachetelor TCP recepționate este necesar ca receptorul să trimită pachetele de confirmare înapoi la expeditor. Combinația de control a informației în pachete de intrare și ieșire poate fi folosită pentru a determina (de exemplu nou, stabil, legat) starea de conectare între expeditor și receptor.
Tipuri de Firewall
Haideți să discutăm despre cele trei tipuri de firewall de bază: filtrarea de pachete (stateless, este un protocol de comunicații care tratează fiecare solicitare ca pe o tranzacție independentă și care nu are legătură cu nici o solicitare precedentă, comunicarea fiind formată din perechi independente de solicitări – răspuns), stateful – (este un firewall de rețea care urmărește starea de funcționare și caracteristicile conexiunilor de rețea care o traversează) și nivelul de aplicație.
Filtrarea de pachete sau stateless firewall lucrează inspectând pachete individuale în mod izolat. Ca atare, ei nu sunt conștienți de starea de izolare și pot doar permite sau refuza pachetele bazate pe pachete header individuale.
Firewall-urile stateful sunt în măsură să determine starea de conexiune a pachetelor ceea ce le face mai flexibile decât firewall-urile stateless. Ele lucrează colectând pachete asociate până când starea de conectare poate fi determinată înainte ca orice reguli de firewall să fie aplicate traficului.
Firewall-ul de aplicații merge cu un pas înainte analizând informația care este transmisă, ceea ce permite traficului de rețea să se potrivească împotriva regulilor firewall care sunt specifice pentru servicii individuale sau aplicații. Acestea sunt cunoscute ca firewall-uri bazate pe proxy.
În plus față de software-ul firewall, care este disponibil pe toate sistemele de operare moderne, funcționalitatea firewall-ului poate fi oferită și de dispozitivele hardware, cum ar fi routere și aparate firewall. Încă o dată discuția noastră se va axa pe soft-ul firewall stateful care rulează pe serverele care le sunt destinate să le protejeze.
Regulile Firewall
Așa cum am menționat mai sus, traficul de rețea care traversează un firewall este potrivit împotriva regulilor pentru a determina dacă ar trebui să fie permis prin intermediul său sau nu. Cea mai simplă modalitate prin care putem explica regulile firewall este prin folosirea câtorva exemple.
Să presupunem că avem un server cu o listă de reguli firewall care se aplică traficului de intrare:
Acceptă traficul de intrare nou și stabilește interfața rețelei publice de pe portul 80 și 443 (trafic web HTTP și HTTPS);
Reduc traficul primit de la adresele IP ale angajaților din biroul non-tehnic la portul 22 (SSH);
Acceptă traficul de intrare nou și stabilește traficul primit de la IP-ul biroului către interfața rețelei private de pe portul 22 (SSH).
De remarcat că primul cuvânt din fiecare exemplu este “accept”, „reject” sau „drop”. Aceasta specifică acțiunea pe care firewall-ul ar trebui să o facă în cazul în care o parte din traficul de rețea se potrivește cu o regulă. Accept permite traficul prin, reject blochează traficul și dă o eroare ”unreachable” de negăsit, iar drop blochează traficul fără să ofere răspuns. Restul regulilor constau în condiția ca fiecare pachet este compensat împotriva.
După cum se dovedește, traficul de rețea este potrivit împotriva unei liste de reguli firewall, secvențe sau lanțuri de la început la final. Mai exact, odată ce o regulă este potrivită, acțiunea asociată este aplicată traficului de rețea în cauză. În exemplul nostru, dacă un angajat contabil încearcă să stabilească o conexiune SSH la server, acesta va fi respins pe baza regulii nr. 2, înainte de regula nr. 3 și chiar verificat. Un administrator de sistem va fi acceptat pentru că se va potrivi cu regula nr. 3.
Politica implicită
Este tipic pentru un lanț de reguli firewall să nu acopere în mod explicit toate condițiile posibile. Din acest motiv lanțul firewall trebuie întotdeauna să aibă o politică implicită specificată, care constă într-o acțiune (accept, reject sau drop).
Să presupunem că politica implicită de exemplu lanțul de mai sus a fost setat la drop. Dacă orice computer din afara biroului încearcă să stabilească o conexiune SSH cu serverul, traficul va fi oprit pentru că nu se potrivește cu nici o condiție și cu nici o regulă.
Dacă politica de securitate implicită a fost setată pe accept, oricine cu excepția propriilor angajați din afara departamentului tehnic, va putea stabili o conexiune cu orice serviciu deschis de pe server. Acesta este un exemplu de slabă configurare firewall pentru că ține doar o parte din angajați în afară.
Traficul de intrare și ieșire
Traficul unei rețele, din perspectiva unui server, poate fi de intrare sau de ieșire, un firewall menține un set distinct de reguli pentru fiecare din aceste cazuri. Traficul care își are originea în altă parte, traficul de intrare, este tratat în mod diferit față de traficul de ieșire pe care serverul îl trimite. Este tipic pentru un server să permită cele mai multe ieșiri de trafic, deoarece serverul are de obicei “încredere” în ieșirile proprii. Totuși, regulile de ieșire pot fi folosite pentru a preveni comunicarea nedorită în cazul în care un server este compromis de către un atacator sau un executabil rău intenționat.
Pentru a maximiza beneficiile de securitate ale unui firewall, trebuie să identificați toate căile prin care doriți ca alte sisteme să interacționeze cu server-ul, trebuie să creați reguli explicite care să permită oprirea traficului. Reține că normele de ieșire trebuie să fie setate pentru ca server-ul să permită trimiterea confirmărilor de ieșire către orice conexiune de intrare. De asemenea un server va avea nevoie să inițieze propriul trafic de ieșire din diverse motive, de exemplu descărcarea de actualizări sau conectarea la o bază de date – de asemenea este important să includă acele cazuri în setul de reguli de ieșire.
Scrierea Regulilor de Ieșire
Să presupunem că exemplul nostru de firewall traficul de ieșire este setat implicit la drop. Acest lucru înseamnă că regulile de intrare accept vor fi inutile fără niște reguli de ieșire complementare.
Pentru a complementa exemplul regulilor firewall de intrare (1 și 3) din secțiunea Firewall Rules și pentru a permite comunicarea corespunzătoare cu privire la acele adrese și porturi care apar, am putea folosi aceste reguli firewall de ieșire:
Acceptă traficul de ieșire stabilit la interfața rețelei publice de pe portul 80 și 443 (HTTP și HTTPS);
Acceptă traficul de ieșire stabilit la interfața rețelei private de pe portul 22 (SSH)
De observat că nu trebuie să scriem o regulă explicită pentru traficul de intrare care să permită (regula 2), deoarece server-ul nu are voie să confirme sau să stabilească acea conexiune.
Soft-ul și Instrumentele Firewall
Acum că am văzut cum funcționează firewall-ul să aruncăm o privire la pachetele comune de software care ne pot ajuta să configurăm efectiv un firewall. Deși există multe alte pachete legate de firewall, acestea sunt eficiente și sunt cele pe care le vom întâlni adesea.
Iptables
Iptables este un firewall standard care e inclus implicit în majoritatea distribuțiilor Linux (o variantă modernă numită nftables va începe să îl înlocuiască). Este de fapt un capăt frontal pentru cârligele de la nivelul kernel-ului care poate manipula grupul de rețea Linux. Acționează prin potrivirea fiecărui pachet care traversează interfața rețelei împotriva unui set de reguli pentru a decide ce e de făcut.
UFW
UFW care vine de la Uncomplicated Firewall este o interfață pentru iptables care este orientată spre simplificarea procesului de configurare a unui firewall.
FirewalID
FirewallD este o soluție completă de firewall care este disponibilă implicit pe serverele cu CentOS 7. De altfel, FirewalID utilizează iptables pentru a configura netfilter.
Fail2ban
Fail2ban este software de prevenire a intruziunilor care poate configura automat firewall-ul pentru a bloca tentativele de conectare brute force și atacurile DDOS.
Concluzii
Acum că ați înțeles cum funcționează firewall-ul, ar trebui să căutați să implementați un firewall care să vă îmbunătățească setările de securitate a server-ului.