Linuxda xavfsizlik devori kompyuter tizimini himoya qilishda muhim rol o'ynaydi. U tizimni ruxsatsiz kirish, hujumlar va boshqa tahdidlardan himoya qilish uchun tarmoq trafigini nazorat qiluvchi va filtrlovchi to'siq vazifasini bajaradi. To'g'ri sozlangan xavfsizlik devori bo'lmasa, server har xil turdagi kiberhujumlarga qarshi himoyasiz bo'lishi mumkin, bu esa ma'lumotlar xavfsizligi va maxfiyligi uchun jiddiy oqibatlarga olib kelishi mumkin.
Ushbu maqolada biz Linux xavfsizlik devorini sozlash uchun ikkita asosiy vositani ko'rib chiqamiz: xavfsizlik devori va iptables. Biz ularning xususiyatlari, funksionalligi va afzalliklarining qiyosiy tahlilini o'tkazamiz. Bundan tashqari, biz ushbu vositalarning har birini sozlash va ulardan foydalanish bo'yicha batafsil ko'rsatmalar beramiz, shuningdek, tizimingizni Linux platformasida xavfsizlik devori bilan himoya qilish bo'yicha eng yaxshi amaliyotlarni muhokama qilamiz. Barcha harakatlar a da ko'rsatiladi Virtual server ildizga kirish bilan.
Linuxda xavfsizlik devorini sozlash
Xavfsizlik devori (Firewall Daemon) - Linux operatsion tizimlarida xavfsizlik devorini boshqarish dasturi. U xavfsizlik devori qoidalarini sozlash, tarmoq ilovalari ulanishlariga ruxsat berish yoki blokirovka qilish uchun foydalanuvchi interfeysini taqdim etadi. Ko'pgina server tarqatishlarida sukut bo'yicha oldindan o'rnatilgan. Agar Firewalld oldindan o'rnatilmagan bo'lsa, uni tarqatishning rasmiy omborlaridan mustaqil ravishda o'rnatish mumkin.
Red Hat tizimlari uchun (masalan, RHEL, CentOS, Fedora) o'rnatish quyidagi buyruq bilan amalga oshiriladi:
yum install firewalld
Debian/Ubuntu uchun:
apt-get install firewalld
O'rnatishdan so'ng uni darhol buyruq bilan ishga tushirish va faollashtirish mumkin:
systemctl start firewalld
Keyin, ishga tushirish uchun xizmatni qo'shishingiz kerak:
systemctl enable firewalld
Ayni paytda biz ufw-ni o'chirib qo'yishni tavsiya qilamiz, chunki bu vositadan xavfsizlik devori yoki iptables bilan bir vaqtda foydalanish tavsiya etilmaydi. Holatni tekshiring:
systemctl status ufw
Uni to'xtatish uchun buyruqni kiriting:
systemctl stop ufw
To'liq o'chirish uchun:
ufw disable
Ushbu harakatlardan so'ng siz xavfsizlik devorini sozlashni davom ettirishingiz mumkin.
Birinchidan, ishonch zonalarini aniqlash kerak. Tarmoq interfeyslari uchun ishonch darajasini aniqlash uchun Firewalld zonalar tushunchasidan foydalanadi. Har bir interfeysga bitta zona tayinlangan va xavfsizlik devori qoidalari zonaga qarab qo'llaniladi. Barcha mavjud zonalar ro'yxati buyruq bilan ochiladi:
firewall-cmd --get-zones
Odatda 4 ta asosiy zona qo'llaniladi:
- ijtimoiy: Bu zona siz xavfli deb hisoblagan tarmoqlar uchun;
- shaxsiy: Uy tarmoqlari yoki boshqa ishonchli tarmoq ulanishlari uchun amal qiladi;
- Ichki: Tashkilot yoki korporativ tarmoq ichidagilar kabi ichki tarmoqlar uchun ishlatiladi;
- DMZ: Bu zona odatda internetdan kirish mumkin bo'lgan serverlar joylashtiriladi.
Biroq, bu faqat bitta misol. Buyruq yordamida o'z zonangizni qo'shishingiz mumkin:
firewall-cmd --permanent --new-zone=nameyourzone
Qo'shgandan so'ng, qayta yuklash talab qilinadi:
firewall-cmd --reload
Hududni o'chirish uchun shunga o'xshash usul qo'llaniladi
firewall-cmd --permanent --delete-zone=nameyourzone
Hududlarni aniqlagandan so'ng, kerakli xizmatlar va portlar uchun trafikka ruxsat berish kerak. Muayyan xizmatga ruxsat berish uchun quyidagi buyruqdan foydalaning:
firewall-cmd --zone=public --add-service=name
qayerda ism xizmatning nomi. Masalan, Apache uchun trafikka ruxsat berish uchun:
firewall-cmd --zone=public --add-service=http
Ruxsat etilgan portlarni aniqlash uchun quyidagi buyruqdan foydalaning:
firewall-cmd --zone=public --add-port=number/protocol
Masalan, SSH uchun standart 22 port quyidagicha ko'rinadi:
firewall-cmd --zone=public --add-port=22/tcp
Ushbu bosqichda asosiy qoidalar allaqachon yaratilgan. Keyin manba, maqsad, port va boshqa mezonlarga qarab trafik qanday qayta ishlanishini aniqlang. Qoida qo'shish uchun ( ijtimoiy misol sifatida zona):
firewall-cmd --zone=public rule
Masalan, istalgan manbadan 80-portga (HTTP) kiruvchi trafikga ruxsat berish uchun:
firewall-cmd --zone=public --add-port=80/tcp --permanent
Qoidani olib tashlash uchun:
firewall-cmd --permanent --remove-rule=rule_specification
qayerda qoidalar qoida turi (masalan, port, xizmat, boy-qoida va boshqalar), va qoida_spetsifikatsiyasi qoidaning o'zi spetsifikatsiyasidir.
Xavfsizlik devori konfiguratsiyasiga o'zgartirishlar kiritilgandan so'ng, ularni saqlash va qo'llash kerak. O'zgarishlarni saqlash uchun quyidagi buyruqdan foydalaning:
firewall-cmd --runtime-to-permanent
O'zgarishlarni qo'llash uchun:
firewall-cmd --reload
O'rnatishni tugatgandan so'ng, barcha qoidalar ro'yxatini ochib, tanlangan parametrlarni tekshirishingiz mumkin:
firewall-cmd --list-all
Agar biron bir muammo yuzaga kelsa, Firewalld jurnallarini buyruq bilan tekshiring:
journalctl -u firewalld
Eslatma: Biz faqat ulanishni o'rnatishning umumiy algoritmini ko'rib chiqdik. Asbob keng funksionallikka ega. Barcha mavjud variantlar haqida to'liq ma'lumot olish uchun siz foydalanishingiz mumkin rasmiy hujjatlar yoki ochiq yordam:
firewall-cmd --help
Linuxda iptablesni sozlash
Firewalld-dan farqli o'laroq, iptables xavfsizlik devorini boshqarish uchun Linuxda eski, ammo hali ham keng qo'llaniladigan vositadir. Bu Linux yadrosi darajasida paketlarni filtrlash qoidalariga to'g'ridan-to'g'ri va moslashuvchan yondashuvni ta'minlaydi. Biroq, iptables Firewalld bilan solishtirganda ko'proq ilg'or bilim va tajribani talab qiladi, bu esa yangi boshlanuvchilar uchun kamroq foydalanish imkonini beradi. Asbobning oldindan o'rnatilgan versiyasini buyruq bilan tekshiring:
iptables -V
Agar asbob o'rnatilmagan bo'lsa, uni o'rnatish kerak bo'ladi. Ubuntu, Debian-ga o'rnatish buyrug'i:
apt install iptables
Red Hat tizimlari uchun (masalan, CentOS, Fedora):
yum install iptables
O'rnatishdan keyin faollashtirish uchun buyruq:
systemctl start iptables
Ishga tushirishga qo'shish uchun quyidagilarni bajaring:
systemctl enable iptables
Iptables konfiguratsiyasini boshlashdan oldin uning qanday ishlashini tushunish muhimdir. Bunga dasturning sintaksisi yordam beradi. Bu quyidagicha ko'rinadi:
iptables -t table action chain additional_parameters
Keling, har bir elementni batafsil ko'rib chiqaylik.
Iptables to'rtta asosiy jadvalga ega: filtr, nat, mangle va xom. Ularning har biri ma'lum turdagi paketlarni qayta ishlash uchun mo'ljallangan va o'z qoidalari zanjiriga ega:
- filtri: Bu paketlarni filtrlash qoidalarini o'z ichiga olgan eng tez-tez ishlatiladigan jadval. U paketlarga ruxsat berish yoki rad etish haqida qaror qabul qilish uchun ishlatiladi.
- nat: Ushbu jadval paketlardagi tarmoq manzillari va portlarini o'zgartirish uchun ishlatiladi. Ko'pincha maskaradni (NAT) o'rnatish uchun ishlatiladi.
- manglay: Ushbu jadvalda siz paket sarlavhalarini o'zgartirishingiz mumkin. U markalash kabi maxsus paket operatsiyalari uchun ishlatiladi.
- xom: Ushbu jadval ulanishni kuzatish tizimidan o'tishdan oldin amal qiladigan qoidalarni sozlash uchun ishlatiladi. U odatda kuzatuv tizimi tomonidan o'zgartirilmasligi kerak bo'lgan qoidalarni o'rnatish uchun ishlatiladi, masalan, ma'lum manzillardan paketlarni tashlab yuborish.
Har bir jadvalda zanjirlar to'plami mavjud. Zanjirlar ketma-ket tekshiriladigan qoidalar ketma-ketligidir. Oldindan belgilangan uchta zanjir mavjud:
- INPUT (kirish). Ushbu zanjirdagi qoidalar kiruvchi paketlar bilan nima qilish kerakligini belgilaydi.
- OUTPUT (chiqish). Ushbu zanjir sizning kompyuteringiz tarmoqdagi boshqa qurilmalar yoki kompyuterlarga yuboradigan barcha paketlarga taalluqlidir.
- OLGAN (yo'naltirish). Ushbu zanjirdagi qoidalar yuborilgan paketlar bilan nima qilish kerakligini aniqlaydi.
Nihoyat, har bir zanjir qandaydir harakatga (maqsadga) ega. Amalda 5 ta asosiy harakat qo'llaniladi:
- QABUL QILING: Paketning xavfsizlik devori orqali o'tishiga ruxsat bering.
- YO'Q: Paketni rad eting va hech qanday javob bermasdan tashlab yuboring.
- REJI: Paketni rad eting va jo'natuvchiga ICMP xato xabarini yuboring.
- LOG: Paketni tizim jurnaliga kiriting va boshqa amalni bajaring (masalan, ACCEPT yoki DROP).
- RETURN: Joriy zanjirdagi qoidalarni tekshirishni to'xtating va qo'ng'iroqlar zanjiriga qayting (agar mavjud bo'lsa).
O'rnatishni boshlash uchun buyruq bilan mavjud qoidalar ro'yxatini oching:
iptables -L
Iptables-ni sozlash bo'yicha qo'llanma sifatida keling, eng ko'p ishlatiladigan buyruqlarning amaliy misollarini ko'rib chiqaylik. Qulaylik uchun biz misollarni aniq zanjirga qarab 3 guruhga ajratamiz.
zanjir INPUT:
- 80-portda TCP protokoli orqali kiruvchi trafikga ruxsat bering:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
2. 22-portda UDP protokoli orqali kiruvchi trafikga ruxsat bering:
iptables -A INPUT -p udp --dport 22 -j ACCEPT
3. Muayyan IP-manzildan kiruvchi trafikni bloklash:
iptables -A INPUT -s 192.168.1.100 -j DROP
zanjir OUTPUT:
- 443-portda TCP protokoli orqali chiquvchi trafikga ruxsat bering:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
2. 80-portda UDP protokoli orqali chiquvchi trafikga ruxsat bering:
iptables -A OUTPUT -p udp --dport 80 -j ACCEPT
3. Muayyan portga chiquvchi trafikni bloklash (masalan, 21):
iptables -A OUTPUT -p tcp --dport 21 -j DROP
zanjir Oldinga:
- Muayyan IP manzillaridan yo'naltirilgan trafikni bloklash:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP
2. Muayyan tarmoq interfeysidan paketlarni yo'naltirishni bloklash:
iptables -A FORWARD -i eth1 -j DROP
3. Muayyan port uchun bir vaqtda ulanishlar sonini cheklang (bu misolda 10-portda daqiqada 80 ta ulanish):
iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT
Ko'rib turganingizdek, har bir alohida holatda qo'shimcha argument (buyruq) ishlatiladi. Mumkin bo'lgan argumentlarning to'liq ro'yxatini va asbobning funksionalligini umumiy qo'llab-quvvatlash uchun quyidagilarni kiriting:
iptables -h
Sozlamalar to'g'ri ekanligiga ishonch hosil qilish uchun qoidalar ro'yxatini ko'rish uchun buyruqni qayta kiriting:
iptables -L
Muayyan qoidani o'chirish uchun quyidagi buyruqdan foydalaning:
iptables -D chain rule_number
Misol uchun, agar siz INPUT zanjiridan 1-qoidani o'chirmoqchi bo'lsangiz, buyruq quyidagicha ko'rinadi:
iptables -D INPUT 1
Barcha qoidalarni bitta buyruq bilan o'chirish uchun:
iptables -F
Muhim eslatma: iptables qoidalari tizim yoki xizmatni qayta ishga tushirgandan so'ng avtomatik ravishda saqlanmaydi. Qoidalarni saqlash uchun ular konfiguratsiya fayliga qo'shilishi va qayta ishga tushirilgandan keyin tiklanishi kerak. The iptables - saqlang va iptables-tiklash kommunal xizmatlar bunga yordam berishi mumkin. Qoidalarni saqlash uchun buyruqni kiriting:
iptables-save > /etc/iptables/rules.v4
Bu joriy iptables qoidalarini rules.v4 faylida saqlaydi. Qayta ishga tushirilgandan keyin tiklash uchun quyidagilarni kiriting:
iptables-restore < /etc/iptables/rules.v4
Bu buyruq qoidalarni rules.v4 faylidan tiklaydi.
Xulosa
Firewalld yoki iptables yordamida Linuxda xavfsizlik devorini sozlash server xavfsizligini ta'minlashning muhim jihati hisoblanadi. Ikkala vosita ham tarmoq trafigini boshqarish va tizimni ruxsatsiz kirish va kiberhujumlardan himoya qilishning ishonchli vositalarini taklif etadi. Xavfsizlik devori va iptables o'rtasidagi tanlov foydalanuvchining o'ziga xos ehtiyojlari va afzalliklariga bog'liq bo'lib, ularning turli funktsionalligi va kuchli tomonlarini hisobga oladi.