Firewall në Linux luan një rol jetik në sigurimin e një sistemi kompjuterik. Ai vepron si një pengesë, duke kontrolluar dhe filtruar trafikun e rrjetit për të mbrojtur sistemin nga aksesi i paautorizuar, sulmet dhe kërcënimet e tjera. Pa një Firewall të konfiguruar siç duhet, serveri mund të jetë i prekshëm ndaj llojeve të ndryshme të sulmeve kibernetike, duke çuar në pasoja të rënda për sigurinë dhe konfidencialitetin e të dhënave.
Në këtë artikull, ne do të shikojmë dy mjete kryesore për konfigurimin e Firewall-it Linux: firewalld dhe iptables. Ne do të bëjmë një analizë krahasuese të veçorive, funksionalitetit dhe avantazheve të tyre. Për më tepër, ne do të ofrojmë udhëzime të hollësishme për konfigurimin dhe përdorimin e secilit prej këtyre mjeteve, si dhe do të diskutojmë praktikat më të mira për sigurimin e sistemit tuaj me një Firewall në platformën Linux. Të gjitha veprimet do të demonstrohen në a server virtual me qasje rrënjësore.
Konfigurimi i murit të zjarrit në Linux
Firewalld (Firewall Daemon) është një program për menaxhimin e murit të zjarrit në sistemet operative Linux. Ai siguron një ndërfaqe përdoruesi për konfigurimin e rregullave të murit të zjarrit, duke lejuar ose bllokuar lidhjet e aplikacioneve të rrjetit. Ai është i para-instaluar si parazgjedhje në shumicën e shpërndarjeve të serverëve. Nëse Firewalld nuk është i instaluar paraprakisht, ai mund të instalohet në mënyrë të pavarur nga depot zyrtare të shpërndarjes.
Për sistemet Red Hat (si RHEL, CentOS, Fedora) instalimi kryhet me komandën:
yum install firewalld
Për Debian/Ubuntu:
apt-get install firewalld
Pas instalimit, mund të niset dhe aktivizohet menjëherë me komandën:
systemctl start firewalld
Tjetra, duhet të shtoni shërbimin në fillim:
systemctl enable firewalld

Në këtë pikë, ne rekomandojmë çaktivizimin e ufw, pasi përdorimi i njëkohshëm i këtij mjeti me firewalld ose iptables nuk rekomandohet. Kontrolloni statusin:
systemctl status ufw

Për ta ndaluar atë, futni komandën:
systemctl stop ufw
Për çaktivizimin e plotë:
ufw disable
Pas këtyre veprimeve, mund të vazhdoni me konfigurimin e murit të zjarrit.
Së pari, është e nevojshme të përcaktohen zonat e besimit. Firewalld përdor konceptin e zonave për të përcaktuar nivelin e besimit për ndërfaqet e rrjetit. Secilës ndërfaqe i caktohet një zonë dhe rregullat e murit të zjarrit zbatohen në bazë të zonës. Lista e të gjitha zonave të disponueshme hapet me komandën:
firewall-cmd --get-zones
Në mënyrë tipike, përdoren 4 zona kryesore:
- Publike: Kjo zonë është për rrjetet që ju i konsideroni të pasigurta;
- privat: Zbatohet për rrjetet shtëpiake ose lidhje të tjera të besuara të rrjetit;
- I brendshëm: Përdoret për rrjete të brendshme, si ato brenda një organizate ose rrjeti korporate;
- DMZ: Kjo zonë është vendi ku zakonisht vendosen serverë që duhet të jenë të aksesueshëm nga interneti.
Megjithatë, ky është vetëm një shembull. Ju mund të shtoni zonën tuaj duke përdorur komandën:
firewall-cmd --permanent --new-zone=nameyourzone
Pas shtimit, kërkohet një ringarkim:
firewall-cmd --reload
Për të fshirë një zonë, përdoret një metodë e ngjashme
firewall-cmd --permanent --delete-zone=nameyourzone
Pas përcaktimit të zonave, është e nevojshme të lejohet trafiku për shërbimet dhe portet e nevojshme. Për të lejuar një shërbim të caktuar, përdorni komandën:
firewall-cmd --zone=public --add-service=name
Ku emër është emri i shërbimit. Për shembull, për të lejuar trafikun për Apache:
firewall-cmd --zone=public --add-service=http
Për të përcaktuar portet e lejueshme, përdorni komandën:
firewall-cmd --zone=public --add-port=number/protocol
Për shembull, porti standard 22 për SSH do të duket kështu:
firewall-cmd --zone=public --add-port=22/tcp
Në këtë fazë, rregullat kryesore janë krijuar tashmë. Më pas, përcaktoni se si do të përpunohet trafiku në varësi të burimit, destinacionit, portit dhe kritereve të tjera. Për të shtuar një rregull (duke përdorur publik zona si shembull):
firewall-cmd --zone=public rule
Për shembull, për të lejuar trafikun hyrës nga çdo burim në portin 80 (HTTP):
firewall-cmd --zone=public --add-port=80/tcp --permanent
Për të hequr një rregull:
firewall-cmd --permanent --remove-rule=rule_specification
Ku sundojnë është lloji i rregullit (p.sh., port, shërbim, rregull i pasur, etj.), dhe rregull_specifikim është specifikimi i vetë rregullit.
Pasi të keni bërë ndryshime në konfigurimin e Firewalld, është e nevojshme t'i ruani dhe t'i zbatoni ato. Për të ruajtur ndryshimet, përdorni komandën:
firewall-cmd --runtime-to-permanent
Për të aplikuar ndryshimet:
firewall-cmd --reload
Pas përfundimit të konfigurimit, mund të verifikoni parametrat e zgjedhur duke hapur listën e të gjitha rregullave:
firewall-cmd --list-all

Nëse lind ndonjë problem, kontrolloni regjistrat e Firewalld me komandën:
journalctl -u firewalld
Shënim: Ne kemi mbuluar vetëm algoritmin e përgjithshëm për vendosjen e lidhjes. Mjeti ka funksionalitet të gjerë. Për informacion të plotë mbi të gjitha opsionet e disponueshme, mund të përdorni dokumentacioni zyrtar ose hapni ndihmën:
firewall-cmd --help
Konfigurimi i iptables në Linux
Ndryshe nga Firewalld, iptables është një mjet më i vjetër, por ende i përdorur gjerësisht në Linux për menaxhimin e murit të zjarrit. Ai siguron një qasje më të drejtpërdrejtë dhe fleksibël ndaj rregullave të filtrimit të paketave në nivelin e kernelit Linux. Sidoqoftë, iptables kërkon njohuri dhe përvojë më të avancuar në krahasim me Firewalld, duke e bërë atë më pak të aksesueshëm për fillestarët. Kontrolloni versionin e para-instaluar të mjetit me komandën:
iptables -V
Nëse mjeti nuk është i instaluar, do të duhet të instalohet. Komanda për instalim në Ubuntu, Debian:
apt install iptables
Për sistemet Red Hat (p.sh. CentOS, Fedora):
yum install iptables
Komanda për aktivizim pas instalimit:
systemctl start iptables
Për të shtuar në nisje, ekzekutoni:
systemctl enable iptables
Përpara se të filloni konfigurimin iptables, është e rëndësishme të kuptoni se si funksionon. Kjo ndihmohet nga sintaksa e programit. Ajo duket si më poshtë:
iptables -t table action chain additional_parameters
Le të thellohemi më thellë në çdo artikull.
Iptables ka katër tabela kryesore: filtër, nat, mangle dhe i papërpunuar. Secila është krijuar për përpunimin e llojeve të caktuara të paketave dhe ka zinxhirët e vet të rregullave:
- filter: Kjo është tabela më e përdorur, që përmban rregullat e filtrimit të paketave. Përdoret për të marrë vendime nëse do të lejohen ose mohohen paketat.
- nat: Kjo tabelë përdoret për modifikimin e adresave të rrjetit dhe porteve në pako. Shpesh përdoret për vendosjen e maskave (NAT).
- sakatoj: Në këtë tabelë, ju mund të modifikoni titujt e paketave. Përdoret për operacione të specializuara të paketave, të tilla si shënimi.
- i gjallë: Kjo tabelë përdoret për konfigurimin e rregullave që zbatohen përpara se të kalojnë përmes sistemit të gjurmimit të lidhjes. Zakonisht përdoret për vendosjen e rregullave që nuk duhet të modifikohen nga sistemi i gjurmimit, si p.sh. hedhja e paketave nga adresa të caktuara.
Çdo tabelë përmban një grup zinxhirësh. Zinxhirët janë një sekuencë rregullash që kontrollohen në mënyrë sekuenciale. Ekzistojnë tre zinxhirë të paracaktuar:
- INPUT (në hyrje). Rregullat në këtë zinxhir përcaktojnë se çfarë duhet bërë me paketat hyrëse.
- OUTPUT (dalëse). Ky zinxhir zbatohet për të gjitha paketat që kompjuteri juaj dërgon në pajisje ose kompjuterë të tjerë në rrjet.
- PËRPARA (përcjellim). Rregullat në këtë zinxhir përcaktojnë se çfarë duhet bërë me paketat e dërguara.
Së fundi, çdo zinxhir posedon një veprim (objektiv). Në praktikë, përdoren 5 veprime kryesore:
- PRANONI: Lëreni paketën të kalojë përmes murit të zjarrit.
- R DNI: Refuzoni paketën dhe hidheni atë pa asnjë përgjigje.
- REFUZOJË: Refuzoni paketën dhe dërgoni dërguesit një mesazh gabimi ICMP.
- LOG: Regjistroni paketën në regjistrin e sistemit dhe kryeni një veprim tjetër (p.sh., PRANO ose HIQ).
- KTHIMI: Ndalo kontrollin e rregullave në zinxhirin aktual dhe kthehu te zinxhiri i thirrjeve (nëse është e aplikueshme).
Për të filluar konfigurimin, hapni listën e rregullave ekzistuese me komandën:
iptables -L

Si një udhëzues për konfigurimin e Iptables, le të shohim shembuj praktikë të komandave më të përdorura. Për lehtësi, ne do t'i ndajmë shembujt në 3 grupe, në varësi të zinxhirit specifik.
Zinxhir INPUT:
- Lejo trafikun në hyrje nëpërmjet protokollit TCP në portin 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. Lejo trafikun në hyrje nëpërmjet protokollit UDP në portën 22:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Blloko trafikun në hyrje nga një adresë IP specifike:
iptables -A INPUT -s 192.168.1.100 -j DROP
Zinxhir OUTPUT:
- Lejo trafikun dalës nëpërmjet protokollit TCP në portin 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. Lejo trafikun dalës nëpërmjet protokollit UDP në portën 80:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Blloko trafikun dalës në një port të caktuar (për shembull, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
Zinxhir PËRPARA:
- Blloko trafikun e përcjellë nga një gamë specifike adresash IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Blloko përcjelljen e paketave nga një ndërfaqe rrjeti specifike:
iptables -A FORWARD -i eth1 -j DROP
3. Kufizoni numrin e lidhjeve të njëkohshme për një port specifik (në këtë shembull, 10 lidhje në minutë në portën 80):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Siç mund ta shihni, në çdo rast të veçantë, përdoret një argument (komandë) shtesë. Për të marrë një listë të plotë të argumenteve të mundshme dhe mbështetje të përgjithshme për funksionalitetin e mjetit, futni:
iptables -h

Për t'u siguruar që cilësimet janë të sakta, rifutni komandën për të parë listën e rregullave:
iptables -L

Për të fshirë një rregull specifik, përdorni komandën:
iptables -D chain rule_number
Për shembull, nëse dëshironi të fshini rregullin numër 1 nga zinxhiri INPUT, komanda do të duket si kjo:
iptables -D INPUT 1
Për të fshirë të gjitha rregullat me një komandë:
iptables -F
Shënim i rëndësishëm: rregullat iptables nuk ruhen automatikisht pas rindezjes së sistemit ose shërbimit. Për të ruajtur rregullat, ato duhet të shtohen në një skedar konfigurimi dhe të rikthehen pas rindezjes. Të iptables-save iptables-restore shërbimet komunale mund të ndihmojnë me këtë. Për të ruajtur rregullat, futni komandën:
iptables-save > /etc/iptables/rules.v4
Kjo ruan rregullat aktuale të iptables në skedarin rules.v4. Për të rivendosur pas rindezjes, futni:
iptables-restore < /etc/iptables/rules.v4
Kjo komandë rikthen rregullat nga skedari rules.v4.
Përfundim
Konfigurimi i Firewall-it në Linux duke përdorur firewalld ose iptables është një aspekt i rëndësishëm për të siguruar sigurinë e serverit. Të dy mjetet ofrojnë mjete të besueshme për menaxhimin e trafikut të rrjetit dhe mbrojtjen e sistemit nga aksesi i paautorizuar dhe sulmet kibernetike. Zgjedhja midis firewalld dhe iptables varet nga nevojat dhe preferencat specifike të përdoruesit, duke marrë parasysh funksionalitetin dhe pikat e forta të tyre të ndryshme.