firewalld یک نرم افزار مدیریت فایروال است که برای بسیاری از توزیع های لینوکس موجود است ، که به عنوان یک پیش زمینه برای سیستم های فیلترینگ بسته های داخل هسته ای nftables یا iptables لینوکس عمل می کند.
در این راهنما به شما نشان خواهیم داد که چگونه می توانید فایروال firewalld را برای سرور مجازی CentOS 8 خود تنظیم کنید و اصول مدیریت فایروال را با ابزار اجرایی firewall-cmd پوشش دهید.
پیش نیازها
برای تکمیل این آموزش ، به سرور مجازی ی که دارای CentOS 8 باشد ، نیاز خواهید داشت. ما فرض خواهیم کرد که شما به عنوان یک کاربر غیر ریشه و فعال در این سرور مجازی وارد شده اید. برای انجام این کار، به راهنمای اولیه راه اندازی سرور مجازی ما برای CentOS 8 مراجعه کنید.
مفاهیم اساسی در firewalld
قبل از شروع صحبت در مورد چگونگی استفاده از ابزار Firewall-cmd برای مدیریت پیکربندی فایروال، باید با چند مفهومی که این ابزار معرفی می کند ، آشنا شویم.
Zones یا نواحی
firewalld  گروههایی از قوانین را با استفاده از ماهیتی به نام zones مدیریت می کند. Zone ها یا نواحی مجموعه قوانینی هستند که بسته به میزان اعتماد شما به شبکه ، ترافیک مجاز را اعلام می کنند. رابط های شبکه به ناحیه ای اختصاص داده میشوند تا رفتارهایی را که فایروال باید اجازه دهد ، را دیکته کنند.
برای رایانه هایی که ممکن است به طور مکرر بین شبکه ها در حرکت باشند (مانند لپ تاپ) ، این نوع انعطاف پذیری روش خوبی برای تغییر قوانین شما بسته به محیط فراهم می کند. ممکن است برای ممنوعیت بیشتر ترافیک هنگام کار بر روی یک شبکه WiFi عمومی قوانین سختگیرانه ای را داشته باشید ، در حالی که هنگام اتصال به شبکه خانگی خود محدودیت های خفیف تری را اعمال میکنید. برای سرور مجازی ، این نواحی اغلب به این اندازه مهم نیستند زیرا محیط شبکه به ندرت ، در هر صورت ، تغییر می کند.
صرف نظر از اینکه محیط شبکه شما چقدر ممکن است پویا باشد ، همچنان مفید است با ایده کلی پشت هر یک از نواحی از پیش تعریف شده برای firewalld آشنا شوید. نواحی از پیش تعریف شده در firewalld  ، به ترتیب حداقل اعتماد به بیشترین اعتماد عبارتند از:
•drop: پایین ترین سطح اعتماد است. تمام اتصالات ورودی بدون پاسخ افت کرده و فقط اتصالات خروجی امکان پذیر است.
•block: مشابه مورد فوق میباشد، اما به جای اینکه ارتباطات به راحتی قطع شوند ، درخواستهای دریافتی با پیغام icmp-host-prohibited  یا  icmp6-adm-prohibited رد می شوند.
•public: شبکه های عمومی و غیر قابل اعتماد را نشان می دهد. شما به رایانه های دیگر اعتماد ندارید اما ممکن است اتصالات ورودی انتخاب شده را به صورت موردی اجازه دهید.
•external: شبکه های خارجی هستند در صورتی که از فایروال به عنوان دروازه خود استفاده می کنید. این مورد برای نقاب گذاری NAT تنظیم شده است تا شبکه داخلی شما خصوصی بماند اما قابل دسترسی باشد.
•internal: طرف دیگر ناحیه خارجی است، که برای قسمت داخلی یک دروازه استفاده می شود. رایانه ها نسبتا قابل اعتماد هستند و برخی خدمات اضافی نیز در دسترس میباشند.
•dmz: برای رایانه های واقع در DMZ (رایانه های جدا شده ای که به بقیه شبکه شما دسترسی ندارند) استفاده می شود. فقط اتصالات ورودی خاص مجاز است.
•work: برای ماشینهای کاری استفاده می شود. به اکثر رایانه های موجود در شبکه اعتماد میکند. چند سرویس دیگر ممکن است مجاز باشند.
•home: یک محیط هوم میباشد. به طور کلی نشان می دهد که شما به اکثر رایانه های دیگر اعتماد دارید و چند سرویس دیگر نیز پذیرفته می شوند.
•trusted: به تمام دستگاههای موجود در شبکه اعتماد میکند. بازترین گزینه موجود است و باید با احتیاط استفاده شود.
برای استفاده از فایروال می توانیم قوانینی ایجاد کرده و خصوصیات نواحی خود را تغییر داده و سپس رابط های شبکه خود را به هر کدام از نواحی مناسب تر اختصاص دهیم.
پایداری قانون (Rule Permanence)
در Firewalld می توان قوانینی را برای مجموعه قوانین زمان اجرای فعلی اعمال کرد یا دائمی استفاده نمود. وقتی یک قانون اضافه میشود یا تغییر می یابد ، به طور پیش فرض ، فقط فایروال در حال اجرا اصلاح می شود. پس از ریبوت بعدی – یا بارگذاری مجدد سرویس Firewalld – فقط قوانین دائمی باقی می مانند.
اکثر عملیات firewall-cmd می توانند پرچم –permanent را داشته باشند که نشان می دهد تغییرات باید در پیکربندی کامل اعمال شوند. علاوه بر این ، فایروال در حال اجرا می تواند با دستور firewall-cmd –runtime-to-permanent در پیکربندی دائمی ذخیره شود.
این تفکیک زمان اجرا در مقابل پیکربندی دائم بدان معنی است که می توانید با اطمینان قوانین موجود در فایروال فعال خود را تست کنید ، سپس در صورت بروز مشکل لود مجدد کنید.
نصب و فعال سازی firewalld
firewalld بطور پیش فرض در برخی توزیع های لینوکس نصب شده است ، از جمله بسیاری از تصاویر CentOS 8. با این وجود ، ممکن است لازم باشد Firewalld را خودتان نصب کنید:
$ sudo dnf install firewalld

بعد از نصب Firewalld ، می توانید سرویس را فعال کرده و سرور مجازی خود را دوباره راه اندازی کنید. به خاطر داشته باشید که فعال کردن فایروال باعث ایجاد بوت مجدد سرویس می شود. بهترین کار این است که قوانین فایروال خود را ایجاد کنید و از این فرصت استفاده کنید که قبل از پیکربندی این رفتار ، آنها را آزمایش کنید تا از مشکلات احتمالی خودداری کنید.
$ sudo systemctl enable firewalld

$ sudo systemctl start firewalld

هنگام شروع مجدد سرور مجازی ، باید فایروال شما فراهم شود ، رابط های شبکه شما باید در مناطقی که پیکربندی کرده اید قرار گیرند (یا به منطقه پیش فرض پیکربندی شده برگردند) ، و کلیه قوانین مرتبط با منطقه (ها) به رابط های مربوط اعمال می شود.
با تایپ کردن دستور زیر می توانیم تأیید کنیم که سرویس در حال اجرا و قابل دستیابی است:
$ sudo firewall-cmd –state

Output
running

این نشان میدهد که فایروال ما با تنظیمات پیش فرض به روز و در حال اجراست.
آشنایی با قوانین فعلی فایروال
قبل از شروع به ایجاد تغییرات ، باید با محیط پیش فرض و قوانین ارائه شده توسط firewalld آشنا شویم.
جستجوی پیش فرض ها
با تایپ این دستور می توانیم ببینیم کدام منطقه در حال حاضر به عنوان پیش فرض انتخاب شده است:
$ firewall-cmd –get-default-zone

Output
public

از آنجا که ما هیچ فرمانی را برای انحراف از منطقه پیش فرض صادر نکرده ایم و هیچ یک از رابط های ما پیکربندی نشده اند که به منطقه دیگری متصل شوند ، آن منطقه نیز تنها منطقه فعال است (منطقه ای که کنترل ترافیک رابط های ما را تنظیم می کند) . می توانیم با تایپ کردن این دستور آن را تأیید کنیم:
$ firewall-cmd –get-active-zones

Output
public
interfaces: eth0 eth1

در اینجا ، می بینیم که سرور مجازی مثال ما دارای دو رابط شبکه است که توسط فایروال کنترل می شوند ( eth0 و eth1). در حال حاضر هر دو مطابق قوانینی که برای منطقه عمومی تعیین شده است ، اداره می شوند.
چگونه می دانیم که چه قوانینی به منطقه عمومی مرتبط است؟ می توانیم پیکربندی منطقه پیش فرض را با تایپ کردن دستور زیر چاپ کنیم:
$ sudo firewall-cmd –list-all

Output
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

از خروجی می توانیم بگوییم که این منطقه هم پیش فرض و هم فعال است و رابط های eth0 و eth1 با این منطقه در ارتباط هستند (ما همه اینها را از جستارهای قبلی خود می دانستیم). با این حال ، همچنین می بینیم که این منطقه امکان ترافیک را برای مشتری DHCP (برای تعیین آدرس IP) ، SSH (برای مدیریت از راه دور) و Cockpit (یک کنسول مبتنی بر وب) فراهم می کند.
جستجو در مناطق جایگزین
اکنون ما در مورد پیکربندی منطقه پیش فرض و فعال اطلاعات خوبی داریم. می توانیم در مورد مناطق دیگر نیز اطلاعات کسب کنیم.
برای دریافت لیستی از مناطق موجود ، تایپ کنید:
$ firewall-cmd –get-zones

Output
block dmz drop external home internal public trusted work

با درج پارامتر –zone = در فرمان –list-all می توانیم پیکربندی خاص مرتبط با یک منطقه را مشاهده کنیم:
$ sudo firewall-cmd –zone=home –list-all

Output
home
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

شما می توانید با استفاده از گزینه –list-all-zones ، تعاریف منطقه را به دست آورید. برای مشاهده راحت تر احتمالاً می خواهید خروجی را به یک پیجر متصل کنید:
$ sudo firewall-cmd –list-all-zones | less

در مرحله بعدی در مورد اختصاص مناطق به واسط های شبکه، اطلاعاتی کسب خواهیم کرد.
انتخاب مناطق برای رابط های خود
با شروع فایروال ، هر رابط در منطقه پیش فرض قرار می گیرد، مگر اینکه رابط های شبکه خود را پیکربندی کرده باشید.
تغییر منطقه یک رابط
می توانید در طول یک بخش با استفاده از پارامتر –zone = در ترکیب با پارامتر –change-interface= بین منطقه ها حرکت کنید. مانند سایر دستوراتی که فایروال را اصلاح می کند ، باید از sudo استفاده کنید.
به عنوان مثال ، می توانیم با تایپ کردن این دستور، رابط eth0 خود را به منطقه هوم منتقل کنیم:
$ sudo firewall-cmd –zone=home –change-interface=eth0

Output
success

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

با درخواست دوباره مناطق فعال ، می توانیم تأیید کنیم که این امر موفقیت آمیز بوده است:
$ firewall-cmd –get-active-zones

Output
home
interfaces: eth0
public
interfaces: eth1

تنظیم منطقه پیش فرض
اگر همه رابط های شما توسط یک منطقه واحد به خوبی اداره شوند ، احتمالاً ساده ترین کار انتخاب بهترین منطقه به عنوان پیش فرض و سپس استفاده از آن برای پیکربندی شما میباشد.
می توانید ناحیه پیش فرض را با پارامتر –set-default-zone = تغییر دهید. با این کار بلافاصله هر رابط با استفاده از منطقه پیش فرض تغییر می یابد:
$ sudo firewall-cmd –set-default-zone=home

Output
success

تنظیم قوانین مربوط به برنامه های خود
بیایید از راهی بنیادی برای تعریف استثنائات فایروال برای خدماتی که مایل به ارائه هستید استفاده کنید.
افزودن سرویس به مناطق
سرراست ترین روش اضافه کردن خدمات یا پورت های مورد نیاز خود به مناطقی است که استفاده می کنید. می توانید لیستی از تعاریف خدمات موجود را با گزینه –get-service دریافت کنید:
$ firewall-cmd –get-services

Output
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-c

توجه: می توانید با دیدن فایل .xml همراه آنها در دیرکتوری /usr/lib/firewalld/services جزئیات مربوط به هر یک از این سرویس ها اطلاعات بیشتری کسب کنید. به عنوان مثال ، سرویس SSH به شرح زیر تعریف می شود:
/usr/lib/firewalld/services/ssh.xml
<?xml version=”1.0″ encoding=”utf-8″?>
<service>
<short>SSH</short>
<description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
<port protocol=”tcp” port=”22″/>
</service>

با استفاده از پارامتر –add-service = می توانید یک سرویس را برای یک منطقه فعال کنید. این عملکرد منطقه پیش فرض یا هر منطقه را که با پارامتر –zone = مشخص می کند هدف قرار می دهد. به طور پیش فرض ، فقط بخش فعلی فایروال را تنظیم می کند. می توانید تنظیمات فایروال دائمی را با افزودن پرچم –permanent تنظیم کنید.
به عنوان مثال ، اگر ما یک سرور مجازی وب ارائه دهنده ترافیک معمولی HTTP داریم ، می توانیم با تایپ کردن دستور زیر به طور موقت این ترافیک را برای رابط های موجود در منطقه عمومی خود فراهم کنیم:
$ sudo firewall-cmd –zone=public –add-service=http

اگر می خواهید منطقه پیش فرض را تغییر دهید ، می توانید پرچم –zone = را رها کنید. با استفاده از عملکردهای –list-all یا –list-services می توانیم تأیید کنیم که این عملیات با موفقیت انجام شد:
$ sudo firewall-cmd –zone=public –list-services

Output
cockpit dhcpv6-client http ssh

هنگامی که آزمایش کردید که همه چیز همانطور که باید کار می کند ، میتوانید قوانین فایروال دائمی را تغییر دهید تا سرویس شما پس از راه اندازی مجدد دوباره در دسترس باشد. ما می توانیم با تایپ مجدد و اضافه کردن پرچم –permanent ، تغییر قبلی خود را دائمی کنیم:
$ sudo firewall-cmd –zone=public –add-service=http –permanent

Output
success

همچنین می توانید از پرچم –runtime-to-permanent برای ذخیره پیکربندی فایروال در حال اجرا در پیکربندی دائمی استفاده کنید:
$ sudo firewall-cmd –runtime-to-permanent

در انجام این کار مراقب باشید ، زیرا تمام تغییرات ایجاد شده در فایروال در حال اجرا دائمی اعمال می شوند.
هر روشی که انتخاب کردید ، می توانید با افزودن پرچم –permanent به عملیات –list-services ، این موفقیت را تأیید کنید. برای هر عملیات –permanent باید از sudo استفاده کنید:
$ sudo firewall-cmd –zone=public –list-services –permanent

Output
cockpit dhcpv6-client http ssh

در حال حاضر منطقه عمومی شما ترافیک وب HTTP را در پورت 80 امکان پذیر خواهد کرد. اگر سرور مجازی وب شما پیکربندی شده است تا از SSL / TLS استفاده کند ، بهتر است سرویس https را نیز اضافه کنید. می توانیم با تایپ کردن دستور زیر ، آن را به بخش فعلی و مجموعه قوانین دائمی اضافه کنیم:
$ sudo firewall-cmd –zone=public –add-service=https

$ sudo firewall-cmd –zone=public –add-service=https –permanent

اگر هیچ خدمات مناسبی در دسترس نباشد چه می کنیم؟
خدماتی که با نصب فایروال شامل میشوند ، نمایانگر بسیاری از رایج ترین برنامه هایی هستند که ممکن است بخواهید به آنها دسترسی داشته باشید. با این وجود ، شرایطی وجود خواهد داشت که این سرویس ها مطابق با نیاز شما نباشند.
در این شرایط ، شما دو گزینه دارید.
باز کردن پورتی برای نواحی خود
آسانترین راه برای افزودن پشتیبانی برای برنامه خاص شما ، باز کردن پورت هایی است که از آن در منطقه (های) مناسب استفاده می کند. این کار با مشخص کردن پورت یا محدوده پورت و پروتکل همراه (TCP یا UDP) برای درگاهها انجام می شود.
به عنوان مثال ، اگر برنامه ما روی پورت 5000 اجرا شود و از TCP استفاده کند ، می توانیم به طور موقت با استفاده از پارامتر –add-port = آن را به منطقه عمومی اضافه کنیم. پروتکل ها می توانند به عنوان tcp یا udp تعیین شوند:
$ sudo firewall-cmd –zone=public –add-port=5000/tcp

 

با موفقیت مناطق خود را تنظیم کرده اید! اگر می خواهید یکی از این مناطق را به صورت پیش فرض برای واسط های دیگر بسازید ، بیاد داشته باشید که آن رفتار را با پارامتر –set-default-zone = پیکربندی کنید:
نتیجه
حال باید درک نسبتاً کاملی از نحوه اجرای سرویس firewalld در سیستم CentOS برای استفاده روزانه داشته باشید.
سرویس firewalld به شما امکان می دهد قوانین و مجموعه های قابل نگهداری را تنظیم کنید که محیط شبکه شما را مورد توجه قرار می دهد. این امکان را به شما می دهد تا از طریق استفاده از مناطق به صورت یکپارچه بین رویکردهای مختلف فایروال تغییر مسیر دهید و به مدیران این امکان را می دهد تا مدیریت پورت را برای تعاریف خدمات منعطف تر انتزاع کنند. به دست آوردن دانش کار در این سیستم به شما امکان می دهد از انعطاف پذیری و قدرتی که این ابزار در اختیار شما قرار می دهد استفاده کنید.
برای اطلاعات بیشتر در مورد firewalld ، لطفاً به مطالب رسمی Firewalld مراجعه کنید

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه React – نصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8 – نصب Jitsi Meet در Ubuntu 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکا – خرید سرور مجازی ارزان هلند – vps – خرید vps هلند – خرید سرور مجازی آمریکا – خرید vps فرانسه – تست vps – سرور مجازی تست – سرور مجازی ویندوز – ارزانترین vps – خرید وی پی اس – vps ارزان –