ابزار FirewallD یک پوسته کنترلی برای iptables است که برای ایجاد قوانین ثابت ترافیک شبکه استفاده میشود. این ابزار که آن را میتوان هم از طریق خط فرمان و هم از طریق رابط کاربری گرافیکی به کار گرفت، در منابع بسیاری از توزیعهای لینوکس در دسترس قرار میگیرد. کار با ابزار FirewallD نسبت به استفاده...
1399/06/115495 بازدید
ابزار FirewallD یک پوسته کنترلی برای iptables است که برای ایجاد قوانین ثابت ترافیک شبکه استفاده میشود. این ابزار که آن را میتوان هم از طریق خط فرمان و هم از طریق رابط کاربری گرافیکی به کار گرفت، در منابع بسیاری از توزیعهای لینوکس در دسترس قرار میگیرد. کار با ابزار FirewallD نسبت به استفاده مستقیم از iptables، دارای دو تفاوت اساسی است.
ابزار FirewallD به جای زنجیره و قوانین، از نواحی (zones) و سرویسها استفاده میکند.
مدیریت مجموعه قوانین به صورت دینامیکی و پویاست. به این معنا که بدون خلل در وضعیت و اتصال کنونی، اجازه بروزرسانی را میدهد.
نکته: FirewallD یک پوسته برای iptables است که موجب سادهتر شدن مدیریت قوانین آن میشود. بنابراین، جایگزینی برای iptables محسوب نمیشود. البته هنوز هم میتوان از فرمانهای iptables در ابزار FirewallD استفاده کرد؛ امّا توصیه میشود که تنها از فرمان خود FirewallD در FirewallD استفاده کنید.
در این مطلب قصد داریم که شما را با ابزار FirewallD، مفهوم نواحی و سرویسهای آن و برخی تنظیمات پایه آشنا کنیم. با ما همراه باشید.
نصب و مدیریت ابزار FirewallD
ابزار FirewallD به صورت پیشفرض در سیستمعامل لینوکس CentOS 7 وجود دارد، امّا به صورت غیرفعال است. کنترل آن همانند سایر بخشهای systemd خواهد بود.
برای شروع سرویس و فعالکردن FirewallD در هنگام شروع به کار سیستم داریم:
برای بارگذاری دوباره تنظیمات ابزار FirewallD، فرمان زیر را تایپ کنید.
php
1sudo firewall-cmd --reload
تتظیمات FirewallD
ابزار FirewallD بهوسیله فایلهای XML تنظیم میشود. البته تا زمانی که به تنظیم فوقالعادهای نیاز نداشته باشید، احتیاجی به تغییر آنها ندارید و به جای آنها باید از firewall-cmd استفاده کنید.
فایلهای تنظیمات در دو دایرکتوری قرار میگیرند.
/usr/lib/FirewallD دربرگیرنده تنظیماتی مانند نواحی پیشفرض و سرویسهای معمول است. حتماً از بروزرسانی آنها خودداری کنید؛ چرا که این فایلها در هر بار بروزرسانی بسته firewalld تغییر خواهند کرد.
/etc/firewalld دربرگیرنده فایلهای تنظیمات سیستم است. این فایلها به صورت تنظیمات پیشفرض نوشته میشوند.
مجموعه تنظیمات
ابزار Firewalld از دو مجموعه یا سری تنظیمات استفاده میکند؛ تنظیمات لحظهای (Runtime) و همیشگی (Permanent). تنظیمات لحظهای بعد از شروع به کار دوباره FirewallD حفظ نمیشوند. این در حالی است که تغییرات همیشگی برای یک سیستم در حال اجرا نخواهند بود.
به صورت پیشفرض، فرمانهای firewall-cmd به تنظیمات لحظهای اِعمال میشوند. امّا در صورتی که از گزینه –permanent در فرمان استفاده کنید، تنظیمات به صورت ثابت انجام میگردند. برای اضافه و فعال کردن یک قاعده همیشگی، میتوانید از یکی از این دو روش استفاده کنید.
۱) اضافهکردن قاعده به هر دو سری تنظیمات لحظهای و همیشگی
نکته
فرمان reload تمام تنظیمات جاری و لحظهای را حذف و تنظیمات همیشگی را اِعمال میکند. البته به دلیل دینامیکبودن مدیریت firewalld، وضعیتها و ارتباطات کنونی با خلل روبرو نمیشوند.
نواحی فایروال
ناحیهها یا زونها یک سروی قواعد از پیش تعیین شده برای سطوح مختلف اطمینان هستند و برای برخی نقاط یا سناریوهای خاص استفاده میشوند نواحی مختلف به سرویسها و انواع مختلف ترافیکها اجازه ورود میدهند و در مقابل، هر چیز ورودی دیگر را میگیرند. بعد از فعالسازی ابزار FirewallD برای اولین بار، ناحیه پیشفرض “Public” خواهد بود.
همچنین زونها را میتوان به رابطهای کاربری مختلف شبکه اِعمال کرد. به عنوان مثال، در صورتی که دو رابط کاربری جداگانه برای شبکه داخلی و اینترنت وجود داشته باشد، میتوانید به پروتکل DHCP در شبکه داخلی اجازه ورود بدهید، ولی در ناحیه خارجی تنها HTTP و SSH مجوّز داشته باشند. هر رابط کاربری که برایش یک ناحیه خاص تعیین نشده باشد، به ناحیه پیشفرض خواهد پیوست.
برای مشاهده ناحیه پیشفرض داریم:
php
1sudo firewall-cmd --get-default-zone
برای تغییر ناحیه پیشفرض، از فرمان زیر استفاده میشود.
php
1sudo firewall-cmd --set-default-zone=internal
برای دیدن نواحی مورد استفاده رابط یا رابطهای کاربری شبکه:
php
1sudo firewall-cmd --get-active-zones
نمونه خروجی
php
1public2interfaces: eth0
برای دریافت تمام تنظیمات موجود برای یک زون خاص، فرمان زیر را تایپ کنید.
ابزار FirewallD میتواند بر اساس قواعد از پیش تعریف شده برای سرویسهای شبکه خاص، اجازه ورود ترافیک را بدهد. شما میتوانید خودتان قواعد سفارشی سرویسها را بسازنید و آنها به هر کدام از نواحی اِعمال کنید. فایلهای تنظمیات برای سرویسهای پیشفرض در /usr/lib/firewalld/services و فایل تنظیمات سرویسهای که توسط کاربر تعریف شدهاند، در آدرس /etc/firewalld/services قرار گرفتهاند.
برای مشاهده سرویسهای در دسترس پیشفرض از فرمان زیر استفاده کنید.
به عنوان یک مثال، در اینجا از ابزار FirewallD برای اضافهکردن قواعد پایه به سرور استفاده میکنیم.
ناحیه dmz را به عنوان ناحیه پیشفرض به eth0 اضافه کنید. این ناحیه به عنوان بهترین گزینه برای شروع کار با اپلیکیشن FirewallD محسوب میشود؛ چرا که تنها به پروتکلهای SSH و ICMP اجازه ورود میدهد.
این خروجی به ما میگوید که ناحیه dmz، ناحیه پیشفرض است و برای رابط کاربری eth0، تمام منابع شبکه و پورتها استفاده میشود. ترافیک ورودی HTTP (پورت 80(، HTTPS (پورت 443) و SSH (پورت 22) اجازه ورود خواهند داشت و از آنجایی که هیچ محدودیتی در نسخههای IP وجود ندارد، این موضوع برای هر دو پروتکل IPv4 و IPv6 انجام میشود. امکان پوششگذاری و ارجاع پورت وجود نخواهد داشت. هیچ بلوک ICMP نداریم. بنابراین ترافیک ICMP بهطور کامل مجوّز دارد. همچنین به تمام ترافیکهای خروجی اجازه داده میشود.
تنظیمات پیشرفته
سرویسها و پورتها برای انجام تنظیمات پایه مناسب هستند. ولی در عین حال، میتوانند کار را برای سناریوهای پیشرفته محدود کنند. ابزار موسوم به Rich Rules و Direct Interface به شما اجازه میدهند که قواعدی کاملاً سفارشی به فایروال برای هر ناحیه و با هر پورت و پروتکلی اضافه کنید.
Rich Rules
قالب Rich rules بسیار گسترده است که در صفحه راهنمای firewalld.richlanguage به صورت کامل توضیح داده شده است. در عین حال، میتوانید با استفاده از گزینههای --add-rich-rule، --list-rich-rules و --remove-rich-rule در فرمان firewall-cmd آن را مدیریت کنید.
در اینجا، برخی از رایجترین نمونهها را مشاهده میکنید.
برای کاربران حرفهای iptables، ابزار FirewallD یک رابط کاربری مستقیم ارائه کرده که اجرای فرمانهای خام iptables را فراهم میکند. این قواعد به صورت همیشگی نخواهند بود؛ مگر اینکه با گزینه --permanent همراه شوند.
برای مشاهده تمام زنجیرهها یا قواعد اضافهشده به FirewallD از فرمانهای زیر استفاده کنید.