مراحل کانفیگ و راه اندازی Firewalld
مقالات تخصصی IT و هاستینگ

چگونگی کانفیگ و راه اندازی Firewalld در لینوکس

در لینوکس، فایروال یک برنامه یا سرویسی است که ترافیک شبکه را فیلتر یا کنترل می کند. یک فایروال معمولا به نحوی پیکربندی می گردد تا به ترافیک های معینی اجازه عبور داده و سایر ترافیک ها را مسدود کند.

Firewalld یک راهکار مدیریت فایروال برای بسیاری از توزیعات لینوکسی از جمله Ubuntu، Debian، CentOS، RHEL و Fedora است. firewalld همانند یک رابط برای سیستم فیلترینگ iptables عمل می کند. از ویژگی های کلیدی آن می توان به عدم وابستگی به پروتکل ارتباطی خاصی اشاره کرد. firewalld از IPv4، IPv6، ethernet bridge و مجموعه های آی پی (IP sets) پشتیبانی می کند.

firewalld از مفهوم نواحی (zones) جهت مدیریت ترافیک شبکه استفاده می کند. zone ها مجموعه ای از قوانین (rules) هستند که به رابط های شبکه (interfaces) اختصاص داده می شوند.

کانفیگ و راه اندازی Firewalld در سرور لینوکسی

تصویر(1)

در این مقاله، توضیحات در خصوص کانفیگ و راه اندازی Firewalld روی سیستم عامل Red Hat Enterprise 9 یا RHEL 9 ارائه خواهد شد.

نحوه کانفیگ و راه اندازی Firewalld

به صورت پیش فرض، firewalld روی توزیعات مبتنی بر RHEL همچون RHEL، AlmaLinux، CentOS، Rocky Linux و Fedora نصب می باشد. با این حال، چنانچه به هر دلیلی firewalld نصب نبود، شما می توانید با دستور زیر اقدام به نصب آن نمایید.

sudo dnf install firewalld -y

در اوبونتو و توزیعات مبتنی بر Debian، دستورات زیر را اجرا کنید:

sudo apt update
sudo apt install firewalld -y

پس از نصب با دستور زیر آن را فعال نموده تا در هنگام boot اجرا شود:

sudo systemctl enable firewalld

سپس با دستور زیر سرویس firewalld را اجرا نمایید:

sudo systemctl start firewalld

هم اکنون باید فایروال با zone و rule های پیشفرض اجرا شده باشد. جهت بررسی اجرای سرویس می توانید از دستور زیر استفاده نمایید:

sudo systemctl status firewalld

 

چگونگی کانفیگ و راه اندازی Firewalld

تصویر(2)

همچنین می‌توانید از دستور زیر استفاده نمایید:

sudo firewall-cmd --state

 

بررسی کانفیگ و راه اندازی Firewalld

تصویر(3)

خروجی های فوق، وضعیت فعال سرویس را تایید می کنند.

Zone های Firewalld

جهت یادگیری نحوه کانفیگ و راه اندازی Firewalld، نیاز است ابتدا با چند مفهوم مربوط به این ابزار آشنا شوید. 

سرویس firewalld از zone ها جهت مدیریت ترافیک استفاده می کند. به زبان ساده، zone مجموعه قوانین از پیش تعریف شده است که مشخص می‌کند چه ترافیکی با توجه به سطح اعتماد در شبکه، اجازه عبور دارد. 9 عدد zone از پیش تعریف شده وجود دارد که در ادامه بر اساس سطح اعتماد به بررسی آنها پرداخته می شود.

Drop: این zone پایین ترین سطح اعتماد را دارد و تمامی ترافیک های ورودی را بدون ارسال هیچگونه تاییدیه به فرستنده، رد می کند.

Block: این zone بسیار شبیه به drop zone می باشد. ترافیک ورودی در این zone رد شده اما پیامی به فرستنده ارسال می‌شود.

Public: به ترافیک از شبکه عمومی مشخصی اجازه دسترسی می دهد.

External: این zone زمانی استفاده می شود که سیستم شما به عنوان یک gateway یا روتر در حال کار است.

Internal: مجموعه قوانینی که روی کامپیوترهای شبکه داخلی اعمال می شود.

DMZ: این zone برای کامپیوترها یا سرورهای واقع در demilitarized zone (منطقه غیر نظامی) استفاده می شود. منظور از این ناحیه، یک شبکه کوچک و ایزوله است که بین اینترنت و شبکه خصوصی قرار دارد. 

Work: این zone برای محل کار که در آن شما به اکثر کامپیوتر ها اعتماد دارید، استفاده می شود. سطح اعتماد در این zone بالا است.

Home: اکثر کامپیوتر ها در این zone به یکدیگر اعتماد دارند. سطح اعتماد در این zone بالاتر از work است.

Trusted: این zone بالاترین سطح اعتماد را دارد. تمامی کامپیوتر ها در این شبکه مورد اعتماد هستند.

شما می توانید از دستور زیر جهت مشاهده لیست تمامی zone ها استفاده نمایید:

sudo firewall-cmd --get-zones

 

بررسی Zone ها در کانفیگ و راه اندازی Firewalld

تصویر(4)

همچنین هر zone فایل xml مربوط به خود را دارد که در دایرکتوری زیر ذخیره شده است:

/usr/lib/firewalld/zones/

می توانید لیست فایل های مسیر مربوطه را با دستور زیر مشاهده نمایید:

ls -l /usr/lib/firewalld/zones/

 

مشاهده فایل ها در هنگام کانفیگ و راه اندازی Firewalld

تصویر(5)

برای مشاهده zone پیش فرضی که هم اکنون به رابط شبکه شما اختصاص یافته است از دستور زیر استفاده نمایید:

firewall-cmd --get-default-zone

 

مشخص نمودن zone پیش فرض در کانفیگ و راه اندازی Firewalld

تصویر(6)

در صورتی که تغییری روی فایروال اعمال نکنید، zone پیش فرض public است و تمامی رابط های شبکه به این zone متصل هستند. جهت روشن شدن موضوع، در مثال زیر دو رابط شبکه فعال به سیستم RHEL متصل است. نام رابط های مربوطه ens160 و ens224 می باشد. شما می توانید نام رابط های شبکه را با یکی از دستورهای زیر مشاهده نمایید:

ip link

یا

ip link show

بررسی رابط شبکه در کانفیگ و راه اندازی Firewalld

تصویر(7)

جهت بررسی zone فعال، از دستور زیر استفاده نمایید:

firewall-cmd --get-active-zones

 

بررسی ویژگی ها در هنگام کانفیگ و راه اندازی Firewalld

تصویر(8)

همانطور که در تصویر فوق مشاهده می کنید هر دو رابط توسط public zone مدیریت می شوند.

به منظور چاپ پیکربندی zone پیشفرض، از دستور زیر استفاده نمایید:

sudo firewall-cmd --list-all

 

مدیریت zone در کانفیگ و راه اندازی Firewalld

تصویر(9)

از خروجی دستور فوق نیز می توانید zone مربوط به رابط های شبکه را مشاهده نمایید.

تغییر zone رابط های شبکه

هنگامی که فایروال اجرا گردید، همه رابط های شبکه به zone پیشفرض متصل هستند. در صورت تمایل می توانید در طی سشن خود، یک رابط شبکه را با استفاده از ترکیب فلگ های =zone-- و =change-interface-- به zone دیگری متصل نمایید.

برای مثال، جهت انتقال رابط ens160 به زون internal، دستور زیر را اجرا کنید:

sudo firewall-cmd --change-interface=ens160 --zone=internal

جهت بررسی موفقیت آمیز بودن عملیات فوق، با استفاده از دستور زیر می توانید این مورد را بررسی نمایید:

sudo firewall-cmd --get-active-zones

 

تغییر zone های رابط شبکه در کانفیگ و راه اندازی Firewalld

تصویر(10)

در خروجی فوق، همانطور که مشاهده می کنید دو zone فعال (internal و public) وجود دارد. رابط ens160 هم اکنون به زون internal منتقل شده است.

شما می توانید پیکربندی مربوط به یک zone دیگر را با فلگ های =zone-- و list-all-- به صورت کامل بررسی نمایید. به عنوان مثال جهت بررسی پیکربندی زون internal دستور را به شکل زیر وارد کنید:

sudo firewall-cmd --list-all --zone=internal

 

فواید تغییر zone در هنگام کانفیگ و راه اندازی Firewalld

تصویر(11)

با استفاده از پارامتر list-all-zones-- می توانید پیکربندی تمام zone ها را چاپ کنید:

sudo firewall-cmd --list-all-zones

خروجی دستور فوق طولانی است. جهت مشاهده بهتر خروجی، می توانید آن را همانند زیر به دستور less پایپ نمایید تا امکان اسکرول کردن وجود داشته باشد.

sudo firewall-cmd --list-all-zones | less

نکته مهم: زمانی که یک رابط یا interface را به zone جدیدی منتقل می کنید، نیاز است احتیاط لازم را به عمل آورید. زیرا برخی سرویس های مربوط به یک zone ممکن است در zone دیگر وجود نداشته باشند. برای مثال انتقال یک interface به زون trusted منجر به از کار افتادن کانکشن SSH می شود. زیرا در zone مذکور، SSH به صورت پیشفرض فعال نمی باشد و در نتیجه ارتباط شما با سرور قطع می گردد.

تنظیم کردن zone پیشفرض

پارامتر =set-default-zone-- به شما اجازه می دهد که zone پیش فرض را تغییر دهید. به عنوان مثال، با دستور زیر zone پیش فرض روی work قرار داده می شود.

sudo firewall-cmd --set-default-zone=work

جهت بررسی zone پیشفرض می توانید از دستور زیر استفاده نمایید:

sudo firewall-cmd --list-all 

 

تنظیم zone پیش فرض در کانفیگ و راه اندازی Firewalld

تصویر(12)

مدیریت سرویس firewalld

هر سرویس به یک پورت مرتبط است. به عنوان مثال سرویس SSH روی پورت 22 و سرویس http روی پورت 80 اجرا می شود. جهت لیست کردن تمامی سرویس های مربوط به zone فعال، از دستور زیر استفاده نمایید:

sudo firewall-cmd --list-all

 

لیست کردن سرویس ها در زمان کانفیگ و راه اندازی Firewalld

تصویر(13)

به منظور محدودسازی و لیست کردن سرویس های مربوط به یک zone خاص، می توانید از فلگ =zone-- استفاده نمایید. دستور زیر، سرویس های مربوط به زون home را لیست می کند.

sudo firewall-cmd --list-all --zone=home

 

محدود کردن zone ها در هنگام کانفیگ و راه اندازی Firewalld

تصویر(14)

اگر توجه کرده باشید برخی از سرویس ها به صورت پیشفرض در برخی از zone ها فعال هستند. از جمله این سرویس ها می‌توان به cockpit، SSH و dhcpv6-client اشاره کرد.

نحوه لیست کردن سرویس های پشتیبانی شده توسط firewalld

جهت نمایش تمامی سرویس هایی که توسط firewalld پشتیبانی می شوند، دستور زیر را اجرا نمایید.

sudo firewall-cmd --get-services

 

لیست کردن سرویس ها در زمان کانفیگ و راه اندازی Firewalld به منظور بررسی دقیق تر 

تصویر(15)

همچنین می‌توانید جستجوی خود را به یک سرویس خاص محدود نمایید. دستور زیر سرویس MongoDB را از لیست سرویس ها، مشخص کرده و نمایش می دهد.

sudo firewall-cmd --get-services | grep -i mongodb

نحوه حذف و اضافه سرویس در firewalld

زمانی که سرویس یا پورتی به فایروال اضافه می‌شود، مستقیما به zone فعال پیشفرض متصل خواهد شد مگر اینکه صریحا روی zone دیگری پیکربندی گردد. برای فعال کردن سرویس برای یک zone، از پارامتر --add-service= استفاده نمایید. zone با استفاده از پارامتر =zone-- مشخص می شود.

فرض کنید وب سروری وجود دارد که در حال اجرای سرویس HTTP است. جهت فعالسازی دسترسی در zone پیشفرض public، از دستور زیر استفاده نمایید:

sudo firewall-cmd --add-service=http --zone=public --permanent

آپشن permanent-- موجب دائمی شدن تغییرات می شود. 

برای اینکه تغییرات پس از ریبوت نیز اعمال شوند، با دستور زیر کانفیگ فایروال را مجدد بارگذاری کنید:

sudo firewall-cmd --reload

 

تغییرات دائمی در زمان کانفیگ و راه اندازی Firewalld

تصویر(16)

شما باید پیام success را به عنوان خروجی هر دستور دریافت نمایید که به معنی اجرای موفقیت آمیز دستور است. زون public باید هم اکنون به سرویس HTTP در فایروال اجازه دسترسی دهد. شما می توانید این مورد را با دستور زیر بررسی نمایید:

sudo firewall-cmd --list-services --zone=public

 

دسترسی سرویس http در کانفیگ و راه اندازی Firewalld

تصویر(17)

برای حذف سرویس از zone، از فلگ remove-service-- استفاده نموده و مجددا فایروال را بارگذاری نمایید.

sudo firewall-cmd --remove-service=http --zone=public --permanent
sudo firewall-cmd --reload

 

حذف سرویس مشخص در زمان کانفیگ و راه اندازی Firewalld

تصویر(18)

چنانچه مجددا سرویس های مجاز فایروال را بررسی نمایید، سرویس HTTP از لیست مربوطه حذف شده است.

نحوه باز و بسته کردن پورت در firewalld

firewalld خدماتی برای برنامه های متداول که ممکن است تمایل داشته باشید به آنها اجازه دسترسی داده شود، فراهم می کند. در اکثر موارد، خدمات ارائه شده توسط firewalld، با پورت هایی که برنامه های مختلف استفاده می کنند، یکسان است. برای مثال، پورت سرویس های HTTP و MySQL به ترتیب 80 و 3306 می‌باشد و این پورت‌ها به صورت پیشفرض در فایروال باز هستند.

اما در برخی موارد ممکن است خدمات مربوطه، پاسخگوی پورتی که اپلیکیشن با آن کار می کند، نباشد. به عنوان مثال، اگر برنامه با پورت 5000 کار می کند، نیاز است شما این پورت را با استفاده از فلگ =add-port-- باز نمایید. پورت ها می توانند TCP یا UDP باشد.

sudo firewall-cmd --add-port=5000/tcp --zone=public --permanent

جهت دائمی کردن تغییرات نیاز است پیکربندی فایروال را مجددا بارگذاری نمایید:

sudo firewall-cmd --reload

 

تغییرات پورت در کانفیگ و راه اندازی Firewalld

تصویر(19)

جهت بررسی باز شدن پورت در zone، از دستور زیر استفاده نمایید:

sudo firewall-cmd --zone=public --list-ports

 

بررسی پورت ها در کانفیگ و راه اندازی Firewalld

تصویر(20)

همچنین شما می توانید یک رنج از پورت ها را نیز مشخص نمایید. برای مثال، جهت باز کردن پورت های بین 5000 تا 6000 در زون public از دستورات زیر استفاده می شود:

sudo firewall-cmd --add-port=5000-6000/tcp --zone=public --permanent
sudo firewall-cmd --reload

مجددا می توانید با دستور زیر تغییرات را بررسی نمایید:

sudo firewall-cmd --zone=public --list-ports

 

باز کردن رنج پورت در کانفیگ و راه اندازی Firewalld

تصویر(21)

جهت مسدود سازی یک پورت، می توانید از پارامتر =remove-port-- استفاده نمایید. به عنوان مثال، جهت مسدود کردن پورت 5000 در زون public، باید دستور زیر اجرا شود:

sudo firewall-cmd --remove-port=5000/tcp --zone=public --permanent

سپس با دستور زیر پیکربندی فایروال را مجددا بارگذاری کرده تا تغییرات دائمی گردد:

sudo firewall-cmd --reload

نتیجه گیری

چنانچه توضیحات را به صورت کامل مطالعه کرده باشید، هم اکنون درک درستی از نحوه کانفیگ و راه اندازی Firewalld روی سرورهای لینوکسی به منظور مدیریت ترافیک کسب کرده‌اید. سرویس فایروال می‌تواند مجموعه‌ای از قوانین روی interface ها و zone ها  اعمال نماید که به مدیران انعطاف‌پذیری و استقلال در مدیریت ترافیک شبکه را ارائه می‌دهد.

اشتراک گذاری:

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *