همانطور که میدانید فایروال FirewallD جایگزین iptables در CentOS 7 و بسیاری از لینوکسهای نسل جدید شده است. در مقاله قبلی به معرفی فایروال FirewallD پرداختیم و در این مطلب از سری آموزشهای FirewallD با کانفیگ FirewallD در CentOS در خدمت شما خواهیم بود.
این فایروال که نسخه داینامیک iptables بشمار میرود از تنظیمات بسیار خوب و سادهای برخوردار است و برای تنظیم آن شما میتوانید از دستور firewall-cmd و یا محیط گرافیکی آن استفاده کنید.
در ابتدا شایان ذکر است که این فایروال دارای zone ها و تنظیمات زیادی است و در این مطلب به نحوه تنظیم zone ، پورت فورواردینگ ، کار کردن با سرویس ها و حذف و اضافه کردن پورت ها در خدمت شما خواهیم بود.
کانفیگ FirewallD در CentOS
ست کردن کانفیگ FirewallD در CentOS
برای وارد کردن و اعمال دستورات FirewallD به 2 شکل میتوان اقدام کرد.
Permanent : هنگامی که از permanent در دستورات خود استفاده میکنید ، دستورات در فایل XML فایروال وارد شده ولی تا زمانی که فایروال را reload نکنید یا سیستم ریبوت نشود ، اعمال نمی گردد.
RunTime : هنگامی که دستوری را بدون هیچ سوییچی جهت ست کردن وارد کنید، دستور بلادرنگ اجرا شده ولی پس از Reload و یا ریبوت CentOS حذف میگردد.
به عنوان مثال برای اضافه کردن سرویس http در FirewallD به صورت Permanent به شکل زیر دستور وارد میشود.
sudo firewall-cmd --zone=public --add-service=http --permanent
و همین دستور برای اجرای RunTime به شکل زیر می باشد.
sudo firewall-cmd --zone=public --add-service=http
حال پس از وارد کردن دستور اول به صورت Permanent ، برای اجرای آن باید دستور زیر را وارد کنید.
sudo firewall-cmd --reload
با وارد کردن دستور بالا ، فایروال یک بار دیگر راه اندازی شده و دستورات وارد شده را اعمال مینماید.
نکته مهم: هنگام Reload کردن فایروال برای چند لحظه تمام تنظیمات وارد شده برای فایروال متوقف شده و دوباره شروع بکار میکنند. ترجیحاً در صورت ترافیک زیاد بر روی سرور دستور را به صورت RunTime و Permanent وارد کنید تا تنظیم شما اعمال شده و پس از ریبوت CentOS همچنان پا برجا باقی بماند.
Zone های FirewallD
zone ها به عنوان یک ساختار از پیش تنظیم شده میباشند و شما می توانید آنها را نسبت به شرایط امنیتی و قرار گیری سرور در اینترنت یا شبکه داخلی و یا … انتخاب نمایید.
هر یک از Zone ها برای یک شبکه خاص تنظیم شدهاند و ترافیک را نسبت به آن تنظیمات کنترل میکنند.
Zone پیش فرض در ابتدای فعال سازی فایروال Public می باشد.
Zone ها همچنین میتوانند بر روی کارت شبکههای مختلف تنظیم شوند و هر کارت شبکه و ترافیک آن توسط قوانین یک Zone کنترل شود.
برای دیدن Zone فعال در FirewallD دستور زیر را وارد کنید.
sudo firewall-cmd --get-default-zone
برای تغییر Zone پیشفرض میتوانید از دستور زیر استفاده نمایید.
sudo firewall-cmd --set-default-zone=internal
برای دیدن کارت شبکه و Zone فعال بر روی آن از دستور زیر استفاده میشود.
sudo firewall-cmd --get-active-zones
همچنین برای دیدن تمام تنظیمات Zone مورد نظر از دستور زیر میتوان بهره برد.
sudo firewall-cmd --zone=public --list-all
خروجی دستور بالا مشابه تصویر زیر خواهد بود.
با توجه به خروجی در تصویر بالا ، نشان میدهد IPv4 و IPv6 در این zone فعال است و پورتهای 80 ، 2222 و 2323 باز می باشند.
همچنین این Zone بر روی اینترفیس eno16777728 فعال می باشد.
برای دریافت تنظیمات تمام zone ها دستور زیر کاربردی است.
sudo firewall-cmd --list-all-zones
کار با سرویسهای FirewallD
FirewallD برای سادگی کار مدیران لینوکسی ، تنظیمات سرویسهایی را از پیش کانفیگ کرده و شما تنها نیاز است که از نام آنها استفاده کنید تا تنظیمات بر zone مورد نظر اعمال شود.
همچنین شما میتوانید به دلخواه خود سرویس را معرفی کنید.
فایل تنظیمات تمام سرویسها از پیش تعیین شده در دایرکتوری usr/lib/firewalld/services/ و سرویسهایی که کاربران تعریف میکنند در دایرکتوری etc/firewalld/services/ قرار دارند.
برای دریافت لیست سرویسهای از پیش تنظیم شده دستور زیر را وارد کنید.
sudo firewall-cmd --get-services
برای فعال و یا غیرفعال کردن یک سرویس میتوانید از دستورات زیر بهره ببرید.
sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --zone=public --remove-service=http --permanent
Allow و Deny کردن پورت و پروتکل دلخواه در FirewallD
برای دسترسی دادن به یک پورت به مانند پورت 12345 به شکل زیر اقدام کنید.
sudo firewall-cmd --zone=public --add-port=12345/tcp --permanent
همچنین برای حذف پورت 12345 که در دستور قبل دسترسی داده شد ، از دستور زیر استفاده میگردد.
sudo firewall-cmd --zone=public --remove-port=12345/tcp --permanent
تفاوت دو دستور قبل تنها در کلمات add و remove است که به ترتیب یک پورت را اضافه و یا حذف میکنند.
port forwarding در فایروال FirewallD
برای فوروارد کردن یک پورت به پورتی دیگر همانند دستور زیر میتوان اقدام کرد.
sudo firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345
در مثال بالا پورت 80 به پورت 12345 فوروارد شده است.
حال برای فوروارد کردن یک پورت به سرور دیگر از روش زیر استفاده می گردد.
ابتدا قابلیت masquerade را با دستور زیر در zone مورد نظر فعال کنید.
sudo firewall-cmd --zone=public --add-masquerade
سپس به شکل زیر میتوانید پورت را بر روی یک سرور دیگر فوروارد کنید.
sudo firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.1
در مثال بالا پورت 80 به پورت 8080 در سرور 192.168.1.1 فوروارد شده است.
در نهایت برای حذف دستور پورت فوروارد بالا از دستور زیر استفاده کنید.
sudo firewall-cmd --zone=public --remove-masquerade
در این آموزش نحوه باز و بستن پورت ها ، اضافه کردن و حذف سرویس ها و همچنین port Forwarding را در FirewallD فرا گرفتید.
در مقالات بعدی به تنظیمات پیشرفته کانفیگ FirewallD در CentOS و آموزش دستورات Rich Rules میپردازیم.
امیدواریم آموزش کانفیگ FirewallD در CentOS برای شما مفید واقع شده باشد.