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 məqalədə Linux Firewall-ı konfiqurasiya etmək üçün iki əsas vasitəyə baxacağıq: firewalld və iptables. Onların xüsusiyyətləri, funksionallığı və üstünlüklərinin müqayisəli təhlilini aparacağıq. Bundan əlavə, bu vasitələrin hər birini qurmaq və istifadə etmək üçün ətraflı təlimatlar təqdim edəcəyik, eləcə də Linux platformasında Firewall ilə sisteminizi qorumaq üçün ən yaxşı təcrübələri müzakirə edəcəyik. Bütün hərəkətlər root girişi olan virtual serverdə nümayiş etdiriləcək.
Linux-da firewalld konfiqurasiyası
Firewalld (Firewall Daemon) Linux əməliyyat sistemlərində firewall-ı idarə etmək üçün bir proqramdır. O, firewall qaydalarını konfiqurasiya etmək, şəbəkə tətbiqlərinin bağlantılarına icazə vermək və ya bloklamaq üçün istifadəçi interfeysi təmin edir. Əksər server paylanmaları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, paylanmanı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
Burada 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ılıb. Daha sonra, mənbə, təyinat yeri, port və digər meyarlardan asılı olaraq trafikin necə emal olunacağını müəyyənləşdirin. Qayda əlavə etmək üçün ( nümunə olaraq ictimai zonadan istifadə edərək):
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
Burada rule qaydanın növüdür (məsələn, port, service, rich-rule və s.), rule_specification isə 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 bağlantının qurulması üçün ümumi alqoritmi əhatə etdik. Alət geniş funksionallığa malikdir. Mövcud olan bütün seçimlər haqqında tam məlumat üçün rəsmi sənədlərdən və ya açıq yardımdan istifadə edə bilərsiniz:
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-in dörd əsas cədvəli var: filter, nat, mangle və raw . Hər biri müəyyən növ paketləri emal etmək üçün nəzərdə tutulub və özünəməxsus 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 GİRİŞİ :
- 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 ÇIXIŞI :
- 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
İrəli Zəncir :
- 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 : iptables qaydaları sistemi və ya xidməti yenidən başlatdıqdan sonra avtomatik olaraq yadda saxlanılmır. Qaydaları yadda saxlamaq üçün onlar konfiqurasiya faylına əlavə edilməli və yenidən başlatdıqdan sonra bərpa edilməlidir. iptables-save və iptables-restore yardımçı proqramları bu işdə sizə kömək edə bilər. Qaydaları yadda 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.