Linux-da Firewall kompüter sisteminin təhlükəsizliyində mühüm rol oynayır. O, sistemi icazəsiz girişdən, hücumlardan və digər təhdidlərdən qorumaq üçün şəbəkə trafikinə nəzarət edən və filtrləyən maneə rolunu oynayır. Düzgün konfiqurasiya edilmiş Firewall olmadan server müxtəlif növ kiberhücumlara qarşı həssas ola bilər ki, bu da məlumatların təhlükəsizliyi və məxfilik üçün ciddi nəticələrə gətirib çıxarır.
Bu yazıda Linux Firewall-u konfiqurasiya etmək üçün iki əsas alətə baxacağıq: firewalld və iptables. Biz onların xüsusiyyətləri, funksionallığı və üstünlüklərinin müqayisəli təhlilini aparacağıq. Bundan əlavə, biz bu alətlərin hər birinin qurulması və istifadəsi üçün ətraflı təlimatlar təqdim edəcəyik, həmçinin Linux platformasında Firewall ilə sisteminizin təhlükəsizliyini təmin etmək üçün ən yaxşı təcrübələri müzakirə edəcəyik. Bütün hərəkətlər a-da nümayiş etdiriləcək virtual server kök girişi ilə.
Linux-da firewalld konfiqurasiyası
Firewalld (Firewall Daemon) Linux əməliyyat sistemlərində təhlükəsizlik divarını idarə etmək üçün proqramdır. O, şəbəkə proqramlarının bağlantılarına icazə vermək və ya bloklamaq üçün firewall qaydalarını konfiqurasiya etmək üçün istifadəçi interfeysi təmin edir. Əksər server paylamalarında standart olaraq əvvəlcədən quraşdırılmışdır. Əgər Firewalld əvvəlcədən quraşdırılmayıbsa, o, paylamanın rəsmi depolarından müstəqil olaraq quraşdırıla bilər.
Red Hat sistemləri üçün (məsələn, RHEL, CentOS, Fedora) quraşdırma aşağıdakı əmrlə həyata keçirilir:
yum install firewalld
Debian/Ubuntu üçün:
apt-get install firewalld
Quraşdırıldıqdan sonra dərhal əmrlə işə salına və aktivləşdirilə bilər:
systemctl start firewalld
Sonra, başlanğıc üçün xidməti əlavə etməlisiniz:
systemctl enable firewalld
Bu zaman biz ufw-ni söndürməyi tövsiyə edirik, çünki bu alətin firewalld və ya iptables ilə eyni vaxtda istifadəsi tövsiyə edilmir. Vəziyyəti yoxlayın:
systemctl status ufw
Onu dayandırmaq üçün əmri daxil edin:
systemctl stop ufw
Tam deaktivasiya üçün:
ufw disable
Bu hərəkətlərdən sonra firewalld-u konfiqurasiya etməyə davam edə bilərsiniz.
Birincisi, etibar zonalarını müəyyən etmək lazımdır. Firewalld şəbəkə interfeysləri üçün etibar səviyyəsini müəyyən etmək üçün zonalar anlayışından istifadə edir. Hər bir interfeysə bir zona təyin edilir və zonaya əsasən firewall qaydaları tətbiq edilir. Bütün mövcud zonaların siyahısı əmrlə açılır:
firewall-cmd --get-zones
Tipik olaraq, 4 əsas zona istifadə olunur:
- Ictimai: Bu zona təhlükəli hesab etdiyiniz şəbəkələr üçündür;
- Xüsusi: Ev şəbəkələrinə və ya digər etibarlı şəbəkə bağlantılarına aiddir;
- Daxili: Təşkilat və ya korporativ şəbəkə daxilində olanlar kimi daxili şəbəkələr üçün istifadə olunur;
- DMZ: Bu zona adətən internetdən əldə edilə bilən serverlərin yerləşdirildiyi yerdir.
Ancaq bu, yalnız bir nümunədir. Komandanı istifadə edərək öz zonanızı əlavə edə bilərsiniz:
firewall-cmd --permanent --new-zone=nameyourzone
Əlavə etdikdən sonra yenidən yükləmə tələb olunur:
firewall-cmd --reload
Bir zonanı silmək üçün oxşar üsul istifadə olunur
firewall-cmd --permanent --delete-zone=nameyourzone
Zonaları müəyyən etdikdən sonra lazım olan xidmətlər və limanlar üçün trafikə icazə vermək lazımdır. Müəyyən bir xidmətə icazə vermək üçün əmrdən istifadə edin:
firewall-cmd --zone=public --add-service=name
Hara ad xidmətin adıdır. Məsələn, Apache üçün trafikə icazə vermək üçün:
firewall-cmd --zone=public --add-service=http
İcazə verilən portları müəyyən etmək üçün əmrdən istifadə edin:
firewall-cmd --zone=public --add-port=number/protocol
Məsələn, SSH üçün standart 22 portu belə görünür:
firewall-cmd --zone=public --add-port=22/tcp
Bu mərhələdə əsas qaydalar artıq yaradılmışdır. Sonra mənbə, təyinat, liman və digər meyarlardan asılı olaraq trafikin necə işlənəcəyini müəyyənləşdirin. Qayda əlavə etmək üçün (istifadə edərək ictimai nümunə olaraq zona):
firewall-cmd --zone=public rule
Məsələn, istənilən mənbədən 80-ci porta (HTTP) daxil olan trafikə icazə vermək üçün:
firewall-cmd --zone=public --add-port=80/tcp --permanent
Bir qaydanı silmək üçün:
firewall-cmd --permanent --remove-rule=rule_specification
Hara idarə qayda növüdür (məsələn, liman, xidmət, zəngin qayda və s.), və qayda_spesifikasiyası qaydanın özünün spesifikasiyasıdır.
Firewalld konfiqurasiyasında dəyişikliklər etdikdən sonra onları saxlamaq və tətbiq etmək lazımdır. Dəyişiklikləri saxlamaq üçün əmrdən istifadə edin:
firewall-cmd --runtime-to-permanent
Dəyişiklikləri tətbiq etmək üçün:
firewall-cmd --reload
Quraşdırmanı tamamladıqdan sonra bütün qaydaların siyahısını açaraq seçilmiş parametrləri yoxlaya bilərsiniz:
firewall-cmd --list-all
Hər hansı bir problem yaranarsa, Firewalld qeydlərini əmrlə yoxlayın:
journalctl -u firewalld
Qeyd: Biz yalnız əlaqənin qurulması üçün ümumi alqoritmi əhatə etdik. Alət geniş funksionallığa malikdir. Bütün mövcud variantlar haqqında tam məlumat üçün istifadə edə bilərsiniz rəsmi sənədlər və ya yardımı açın:
firewall-cmd --help
Linux-da iptables konfiqurasiyası
Firewalld-dan fərqli olaraq, iptables köhnə, lakin hələ də Linux-da təhlükəsizlik divarını idarə etmək üçün geniş istifadə olunan bir vasitədir. O, Linux nüvəsi səviyyəsində paket filtrləmə qaydalarına daha birbaşa və çevik yanaşma təmin edir. Bununla belə, iptables Firewalld ilə müqayisədə daha qabaqcıl bilik və təcrübə tələb edir ki, bu da onu yeni başlayanlar üçün daha az əlçatan edir. Alətin əvvəlcədən quraşdırılmış versiyasını əmrlə yoxlayın:
iptables -V
Alət quraşdırılmayıbsa, onu quraşdırmaq lazımdır. Ubuntu, Debian-da quraşdırma əmri:
apt install iptables
Red Hat sistemləri üçün (məsələn, CentOS, Fedora):
yum install iptables
Quraşdırıldıqdan sonra aktivləşdirmə əmri:
systemctl start iptables
Başlanğıca əlavə etmək üçün yerinə yetirin:
systemctl enable iptables
İptables konfiqurasiyasına başlamazdan əvvəl onun necə işlədiyini başa düşmək vacibdir. Buna proqramın sintaksisi kömək edir. Aşağıdakı kimi görünür:
iptables -t table action chain additional_parameters
Gəlin hər bir maddəni daha dərindən araşdıraq.
IPtables-də dörd əsas cədvəl var: filter, nat, mangle və raw. Hər biri müəyyən növ paketlərin işlənməsi üçün nəzərdə tutulmuşdur və öz qayda zəncirlərinə malikdir:
- Süzgəc: Bu paket filtrləmə qaydalarını ehtiva edən ən çox istifadə olunan cədvəldir. Paketlərə icazə vermək və ya rədd etmək barədə qərar qəbul etmək üçün istifadə olunur.
- nat: Bu cədvəl paketlərdə şəbəkə ünvanlarını və portları dəyişdirmək üçün istifadə olunur. Tez-tez maskaradlaşdırma (NAT) qurmaq üçün istifadə olunur.
- qarqara: Bu cədvəldə siz paket başlıqlarını dəyişdirə bilərsiniz. O, markalanma kimi xüsusi paket əməliyyatları üçün istifadə olunur.
- xam: Bu cədvəl əlaqə izləmə sistemindən keçməzdən əvvəl tətbiq olunan qaydaları konfiqurasiya etmək üçün istifadə olunur. O, adətən müəyyən ünvanlardan paketlərin atılması kimi izləmə sistemi tərəfindən dəyişdirilməməli olan qaydaların qurulması üçün istifadə olunur.
Hər masada bir sıra zəncirlər var. Zəncirlər ardıcıl olaraq yoxlanılan qaydalar ardıcıllığıdır. Əvvəlcədən təyin edilmiş üç zəncir var:
- INPUT (daxil olan). Bu zəncirdəki qaydalar gələn paketlərlə nə edəcəyini müəyyən edir.
- ÇIXIŞ (gediş). Bu zəncir kompüterinizin şəbəkədəki digər cihazlara və ya kompüterlərə göndərdiyi bütün paketlərə aiddir.
- İLERİ (yönləndirmə). Bu zəncirdəki qaydalar yönləndirilmiş paketlərlə nə ediləcəyini müəyyənləşdirir.
Nəhayət, hər bir zəncir müəyyən hərəkətə (hədəf) malikdir. Praktikada 5 əsas hərəkətdən istifadə olunur:
- QƏBUL: Paketin firewalldan keçməsinə icazə verin.
- Burax: Paketi rədd edin və heç bir cavab vermədən atın.
- RAZILA: Paketi rədd edin və göndərənə ICMP xətası mesajı göndərin.
- Qeyd: Paketi sistem jurnalına daxil edin və başqa hərəkəti yerinə yetirin (məsələn, QƏBUL EDİN və ya DÖKÜL).
- RETURN: Cari zəncirdəki qaydaları yoxlamağı dayandırın və zəng zəncirinə qayıdın (əgər varsa).
Quraşdırmaya başlamaq üçün əmrlə mövcud qaydaların siyahısını açın:
iptables -L
Iptables-ı konfiqurasiya etmək üçün bələdçi olaraq, ən çox istifadə olunan əmrlərin praktik nümunələrinə baxaq. Rahatlıq üçün nümunələri konkret zəncirdən asılı olaraq 3 qrupa ayıracağıq.
zəncir INPUT:
- 80 portunda TCP protokolu vasitəsilə daxil olan trafikə icazə verin:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. 22 nömrəli portda UDP protokolu vasitəsilə daxil olan trafikə icazə verin:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Müəyyən bir IP ünvanından gələn trafiki bloklayın:
iptables -A INPUT -s 192.168.1.100 -j DROP
zəncir ÇIXDI:
- 443 portunda TCP protokolu vasitəsilə gedən trafikə icazə verin:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. 80 nömrəli portda UDP protokolu vasitəsilə gedən trafikə icazə verin:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Müəyyən bir porta gedən trafiki bloklayın (məsələn, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
zəncir ÖLKƏ:
- Müəyyən bir IP ünvanından ötürülən trafiki bloklayın:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Xüsusi şəbəkə interfeysindən paketlərin yönləndirilməsini bloklayın:
iptables -A FORWARD -i eth1 -j DROP
3. Müəyyən bir port üçün eyni vaxtda qoşulmaların sayını məhdudlaşdırın (bu misalda 10 nömrəli portda dəqiqədə 80 əlaqə):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Gördüyünüz kimi, hər bir ayrı halda əlavə arqument (əmr) istifadə olunur. Mümkün arqumentlərin tam siyahısını və alətin funksionallığı üçün ümumi dəstəyi əldə etmək üçün daxil edin:
iptables -h
Parametrlərin düzgün olduğundan əmin olmaq üçün qaydaların siyahısına baxmaq üçün əmri yenidən daxil edin:
iptables -L
Müəyyən bir qaydanı silmək üçün əmrdən istifadə edin:
iptables -D chain rule_number
Məsələn, INPUT zəncirindən 1 nömrəli qaydanı silmək istəyirsinizsə, əmr belə görünəcək:
iptables -D INPUT 1
Bütün qaydaları bir əmrlə silmək üçün:
iptables -F
Vacib qeyd: sistem və ya xidmət yenidən başladıqdan sonra iptables qaydaları avtomatik olaraq saxlanmır. Qaydaları saxlamaq üçün onları konfiqurasiya faylına əlavə etmək və yenidən başladıqdan sonra bərpa etmək lazımdır. The iptables-saxla və iptables-bərpa edin kommunal xidmətlər bu işdə kömək edə bilər. Qaydaları saxlamaq üçün əmri daxil edin:
iptables-save > /etc/iptables/rules.v4
Bu, cari iptables qaydalarını rule.v4 faylında saxlayır. Yenidən başladıqdan sonra bərpa etmək üçün daxil edin:
iptables-restore < /etc/iptables/rules.v4
Bu əmr qaydaları rules.v4 faylından bərpa edir.
Nəticə
Firewalld və ya iptables istifadə edərək Linux-da Firewall-u konfiqurasiya etmək server təhlükəsizliyini təmin etməyin vacib aspektidir. Hər iki alət şəbəkə trafikini idarə etmək və sistemi icazəsiz giriş və kiberhücumlardan qorumaq üçün etibarlı vasitələr təklif edir. Firewalld və iptables arasında seçim, fərqli funksionallıq və güclü tərəfləri nəzərə alaraq, istifadəçinin xüsusi ehtiyaclarından və üstünlüklərindən asılıdır.