آموزش کانفیگ و مدیریت فایروال CentOS 8 - وان سرور آکـادمی
آموزش کانفیگ و مدیریت فایروال CentOS 8
آموزش کانفیگ و مدیریت فایروال CentOS 8

آموزش کانفیگ و مدیریت فایروال CentOS 8

زمان تقریبی مطالعه: 8 دقیقه

کانفیگ و مدیریت فایروال CentOS 8

فایروال روشی برای نظارت و فیلتر کردن ترافیک شبکه ورودی و خروجی است. این کار با تعیین مجموعه ای از قوانین امنیتی که تعیین می کنند اجازه یا مسدود کردن ترافیک خاص را دارند ، کار می کند. فایروال به درستی تنظیم شده یکی از مهمترین جنبه های امنیت کلی سیستم است. در این آموزش ، نحوه کانفیگ و مدیریت فایروال در CentOS 8 خواهیم گفت. ما همچنین مفاهیم اساسی FirewallD را توضیح خواهیم داد.

CentOS 8 با یک Daemon Firewall به نام firewalld ارسال می شود . این یک راه حل کامل با رابط D-Bus است که به شما امکان می دهد فایروال سیستم را بطور دینامیکی مدیریت کنید.

پیش نیازها

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

مفاهیم اساسی Firewalld

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

Firewalld را می توان با استفاده از ابزار خط فرمان firewall-cmd تنظیم و مدیریت کرد.

در CentOS 8 ، همچنین iptables به عنوان پس زمینه فایروال پیش فرض برای شبه فایروال، جایگزین nftables می شود.

مناطق فایروال

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

در زیر مناطقی ارائه شده توسط FirewallD با توجه به سطح اطمینان منطقه از غیر قابل اعتماد تا مورد اعتماد سفارش داده شده است:

  • drop : تمام اتصالات ورودی بدون هیچگونه اخطاریه ای حذف می شوند. فقط اتصالات خروجی مجاز است.
  • block : کلیه اتصالات ورودی با یک پیام icmp-host-prohibited برای IPv4 و icmp6-adm-prohibited adm- برای IPv6n icmp6-adm-prohibited مسدود می شوند. فقط اتصالات خروجی مجاز است.
  • public : برای استفاده در اتصالات عمومی غیرقابل اعتماد. شما به رایانه های دیگر موجود در شبکه اعتماد ندارید ، اما می توانید اتصالات ورودی انتخاب شده را مجاز کنید .
  • external : برای استفاده در شبکه های خارجی با mask maskading در هنگام کار سیستم شما به عنوان یک گت وی یا روتر فعال است. فقط اتصالات ورودی انتخاب شده مجاز است.
  • internal : برای استفاده در شبکه های داخلی وقتی سیستم شما به عنوان یک گت وی یا روتر عمل می کند. سیستم های دیگر در شبکه معمولاً مورد اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
  • dmz : مورد استفاده برای رایانه های واقع در منطقه تضعیف شده خود که دسترسی محدودی به بقیه شبکه شما دارند. فقط اتصالات ورودی انتخاب شده مجاز است.
  • work : برای ماشینهای کار استفاده می شود. رایانه های دیگر در شبکه به طور کلی قابل اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
  • home : برای ماشینهای home استفاده می شود. رایانه های دیگر در شبکه به طور کلی قابل اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
  • trusted : کلیه اتصالات شبکه پذیرفته می شوند. به همه رایانه های موجود در شبکه اعتماد کنید.

سرویس های فایروال

سرویس های Firewalld قوانینی از پیش تعریف شده ای هستند که در یک منطقه اعمال می شوند و تنظیمات لازم را برای اجازه دادن به ترافیک ورودی برای یک سرویس خاص تعریف می کنند. خدمات به شما امکان می دهد تا در یک مرحله به راحتی چندین کار را انجام دهید.

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

تنظیمات زمان اجرا و دائمی Firewalld

Firewalld از دو مجموعه پیکربندی مجزا ، زمان اجرا و پیکربندی دائمی استفاده می کند.

پیکربندی زمان اجرا پیکربندی واقعی در حال اجرا است و در راه اندازی مجدد ادامه ندارد. با شروع firewalld daemon ، پیکربندی دائمی را بار می کند ، که به پیکربندی زمان اجرا تبدیل می شود.

به طور پیش فرض ، هنگام ایجاد تغییرات در تنظیمات Firewalld با استفاده از ابزار firewall-cmd ، تغییرات در پیکربندی زمان اجرا اعمال می شوند. برای ایجاد تغییرات دائمی ، گزینه --permanent را به فرمان اضافه کنید.

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

  • پیکربندی زمان اجرا را تغییر داده و آن را دائمی کنید:

sudo firewall-cmd <options>

sudo firewall-cmd --runtime-to-permanent

  • پیکربندی دائم را تغییر داده و firewald daemon را مجددا بارگیری کنید:

sudo firewall-cmd --permanent <options>

sudo firewall-cmd --reload

فعال کردن FirewallD

در CentOS 8 ،همچنین firewalld به طور پیش فرض نصب و فعال می شود. اگر به دلایلی بر روی سیستم شما نصب نشده است ، می توانید با تایپ کردن دستور زیر Daemon را نصب و راه اندازی کنید:

sudo dnf install firewalld
sudo systemctl enable firewalld --now

می توانید وضعیت سرویس فایروال را با این دستور بررسی کنید:

sudo firewall-cmd --state 

اگر فایروال فعال باشد ، دستور باید running باشد. در غیر اینصورت خواهید دید not running .

برای حرفه ای شدن باید همیشه به روز باشید.

برای خرید سرور مجازی با انواع سیستم عامل ها کلیک کنید.

Firewalld Zones

اگر آن را تغییر نداده اید ، منطقه پیش فرض در قسمت public تنظیم شده است و تمام رابط های شبکه به این منطقه اختصاص داده می شوند.

منطقه پیش فرض منطقه ای است که برای همه مواردی که صریحاً به یک منطقه دیگر اختصاص نمی یابد استفاده می شود.

با تایپ کردن منطقه پیش فرض می توانید مشاهده کنید:

 sudo firewall-cmd --get-default-zone 
خروجی:
 public 

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

sudo firewall-cmd --get-zones
خروجی:
 block dmz drop external home internal public trusted work 

برای دیدن مناطق فعال و رابط های شبکه اختصاص داده شده به آنها:

sudo firewall-cmd --get-active-zones

نتیجه زیر نشان می دهد که رابط های eth0 و eth1 به منطقه public اختصاص داده شده اند:

 public interfaces: eth0 eth1 

می توانید تنظیمات تنظیمات منطقه را با دستور زیر ببینید:

sudo firewall-cmd --zone=public --list-all
خروجی:
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

از خروجی بالا می توانیم مشاهده کنیم که ناحیه عمومی فعال است و از هدف پیش فرض استفاده می کند ، که REJECT است. خروجی همچنین نشان می دهد که منطقه توسط رابط های eth0 و eth1 استفاده می شود و اجازه می دهد مشتری DHCP و SSH ترافیک داشته باشد.

اگر می خواهید تنظیمات انواع مناطق موجود را بررسی کنید:

sudo firewall-cmd --list-all-zones

فرمان بالا تنظیمات تمام زون های موجود را با یک لیست عظیم را چاپ می کند.

تغییر هدف Zone

هدف مشخص میکند که رفتار پیش فرض منطقه برای ترافیک ورودی که مشخص نشده است چگونه باشد. می توان آن را بر روی یکی از گزینه های زیر تنظیم کرد: default ، ACCEPT ، REJECT و DROP .

برای تعیین هدف منطقه ، منطقه را با گزینه --zone و هدف را با گزینه --set-target مشخص کنید.

به عنوان مثال ، برای تغییر هدف منطقه public به DROP ،دستور زیر را اجرا کنید:

sudo firewall-cmd --zone=public --set-target=DROP

اختصاص یک رابط به منطقه متفاوت

شما می توانید مجموعه خاصی از قوانین را برای مناطق مختلف ایجاد کرده و رابط های مختلفی را به آنها اختصاص دهید. این خصوصاً زمانی مفید است که چندین دستگاه رابط کاربری خود را انجام دهید.

برای اختصاص یک رابط به یک منطقه متفاوت ، منطقه را با گزینه --zone و رابط با گزینه --zone --change-interface کنید.

به عنوان مثال ، دستور زیر رابط eth1 را به منطقه work اختصاص می دهد:

sudo firewall-cmd --zone=work --change-interface=eth1

تغییرات را با تایپ کردن تأیید کنید:

sudo firewall-cmd --get-active-zones

خروجی:
work
  interfaces: eth1
public
  interfaces: eth0

تغییر Zone پیش فرض

برای تغییر منطقه پیش فرض ، از گزینه --set-default-zone و به دنبال آن نام منطقه ای که می خواهید بصورت پیش فرض استفاده کنید ، استفاده کنید.

به عنوان مثال ، برای تغییر منطقه پیش فرض به home ، دستور زیر را اجرا می کنید:

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

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

 sudo firewall-cmd --get-default-zone
خروجی:
 home

خدمات Firewalld

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

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

sudo firewall-cmd --get-services

می توانید با باز کردن پرونده .xml مرتبط با آن در فهرست دایرکتوری /usr/lib/firewalld/services اطلاعات بیشتری در مورد هر سرویس پیدا کنید. به عنوان مثال ، سرویس HTTP به شرح زیر تعریف می شود:

/usr/lib/firewalld/services/http.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>WWW (HTTP)</short>
  <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
  <port protocol="tcp" port="80"/>
</service>

اجازه ورود ترافیک HTTP ورودی (پورت 80) برای رابط های موجود در ناحیه عمومی ، فقط برای جلسه فعلی (نوع تنظیم زمان اجرا) دستور زیر را تایپ کنید:

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

برای تأیید اینکه سرویس با موفقیت اضافه شده است ، از --list-services استفاده کنید:

sudo firewall-cmd --zone=public --list-services
خروجی:
ssh dhcpv6-client http 

اگر می خواهید پورت 80 را بعد از راه اندازی مجدد باز نگه دارید ، باید یک بار دیگر همان فرمان را تایپ کنید اما این بار با --permanent :

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

برای تأیید تغییرات خود --list-services همراه با پرچم ثابت استفاده کنید:

 sudo firewall-cmd --permanent --zone=public --list-services 
 ssh dhcpv6-client http 

نحو حذف خدمات همانند اضافه کردن سرویس است. به جای --remove-service فقط --add-service استفاده کنید:

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

دستور فوق سرویس http را از پیکربندی دائمی منطقه عمومی حذف می کند.

ایجاد یک سرویس FirewallD جدید

همانطور که قبلاً نیز اشاره کردیم ، خدمات پیش فرض در فهرست /usr/lib/firewalld/services ذخیره می شوند. ساده ترین راه برای ایجاد یک سرویس جدید ، کپی کردن یک فایل سرویس موجود در فهرست /etc/firewalld/services service است ، که مکان سرویس های ایجاد شده توسط کاربر و اصلاح تنظیمات فایل است.

به عنوان مثال ، برای ایجاد یک تعریف سرویس برای Plex Media Server ، می توانید از فایل سرویس SSH استفاده کنید:

 sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

پرونده plexmediaserver.xml تازه ایجاد شده را باز کنید و در برچسب های <short> و <description> نام کوتاه و توضیحی را برای این سرویس تغییر دهید. مهمترین برچسب مورد نیاز برای تغییر ، برچسب پورت است که شماره پورت و پروتکل مورد نظر برای باز کردن را تعریف می کند.

در مثال زیر ، ما درگاه های 1900 UDP و 32400 TCP را باز می کنیم.

/etc/firewalld/service/plexmediaserver.xml 

<?xml version="1.0" encoding="utf-8"?>
<service version="1.0">
<short>plexmediaserver</short>
<description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description>
<port protocol="udp" port="1900"/>
<port protocol="tcp" port="32400"/>
</service>

ذخیره فایل و بارگیری مجدد سرویس FirewallD:

sudo firewall-cmd --reload

اکنون می توانید از خدمات plexmediaserver در مناطق خود مانند هر سرویس دیگری استفاده کنید.

باز کردن پورت ها و IP های منبع

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

باز کردن منبع IP

برای اینکه اجازه دهید تمام ترافیک ورودی از یک آدرس IP خاص (یا دامنه) مشخص شود ، منطقه را با گزینه --zone و منبع IP با گزینه --zone --add-source کنید.

به عنوان مثال ، برای اجازه دادن به همه ترافیک های ورودی از 192.168.1.10 در منطقه public ، اجرا کنید:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

قانون جدید را ماندگار کنید:

sudo firewall-cmd --runtime-to-permanent

با استفاده از دستور زیر تغییرات را تأیید کنید:

 sudo firewall-cmd --zone=public --list-sources 
خروجی:
 192.168.1.10 

نحوه حذف یک منبع IP همان است که در هنگام اضافه کردن یکی از آنها استفاده می شود. به جای گزینه --add-source فقط از --remove-source --add-source کنید:

 sudo firewall-cmd --zone=public --remove-source=192.168.1.10

باز کردن پورت منبع

برای اجازه دادن به کلیه ترافیک ورودی در یک درگاه مشخص ، منطقه را با گزینه --zone و پورت و پروتکل را با گزینه --zone --add-port کنید.

به عنوان مثال ، برای باز کردن پورت 8080 در منطقه عمومی برای جلسه فعلی که اجرا می شود:

 sudo firewall-cmd --zone=public --add-port=8080/tcp

پروتکل می تواند tcp ، udp ، sctp یا dccp باشد.

تغییرات را تأیید کنید:

sudo firewall-cmd --zone=public --list-ports
خروجی:
 8080 

برای باز نگه داشتن پورت پس از راه اندازی مجدد ، با اجرای همان فرمان با استفاده از --permanent یا با اجرای این قانون ، به تنظیمات دائمی اضافه کنید:

 sudo firewall-cmd --runtime-to-permanent

نحو حذف پورت مانند زمان اضافه کردن پورت است. فقط از --remove-port به جای گزینه --remove-port استفاده کنید.

 sudo firewall-cmd --zone=public --remove-port=8080/tcp 

Forwarding Ports

برای پیشبرد ترافیک از یک پورت به پورت دیگر ، ابتدا با استفاده از گزینه --add-masquerade نقاب را برای منطقه مورد نظر فعال کنید. به عنوان مثال ، برای فعال کردن پوشش در منطقه external ، نوع:

 sudo firewall-cmd --zone=external --add-masquerade 

ترافیک از یک پورت به دیگری در آدرس IP منتقل شود

در مثال زیر ما ترافیک را از پورت 80 به پورت 8080 در همان سرور هدایت می کنیم:

 sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080 

انتقال به آدرس IP دیگر

در مثال زیر ما ترافیک را از پورت 80 به پورت 80 روی یک سرور با IP 10.10.10.2 منتقل میکنیم:

 sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2 

ترافیک به سمت سرور دیگر در پورت متفاوت رو به جلو قرار دهید

در مثال زیر ما ترافیک را از پورت 80 به پورت 8080 در سرور با IP 10.10.10.2 :

 sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2 

برای تثبیت قانون پیش رو ، از موارد زیر استفاده کنید:

sudo firewall-cmd --runtime-to-permanent

نتیجه

شما آموخته اید که چگونه سرویس firewalld را در سیستم CentOS 8 خود و مدیریت کنید.

اطمینان حاصل کنید که تمام اتصالات ورودی که برای عملکرد صحیح سیستم شما ضروری هستند را مجاز می دانید ، ضمن محدود کردن تمام اتصالات غیر ضروری.

5/5 - (4 امتیاز)