کانفیگ و مدیریت فایروال 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- برای IPv6nicmp6-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 خود و مدیریت کنید.
اطمینان حاصل کنید که تمام اتصالات ورودی که برای عملکرد صحیح سیستم شما ضروری هستند را مجاز می دانید ، ضمن محدود کردن تمام اتصالات غیر ضروری.
اولین نفر باشید که نظر ارسال میکنید