از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش راه اندازی فایروال با FirewallD در CentOS 7
سرفصلهای مطلب
یک فایروال با پیکربندی مناسب یکی از مهمترین جنبه های امنیت کلی سیستم است.
فایروالD
یک راه حل کامل فایروال است که قوانین iptables سیستم را مدیریت می کند و یک رابط D-Bus برای کار بر روی آنها فراهم می کند. با شروع CentOS 7، FirewallD جایگزین iptables به عنوان ابزار مدیریت فایروال پیش فرض می شود.
در این آموزش، ما به شما نشان می دهیم که چگونه یک فایروال با FirewallD را در سیستم CentOS 7 خود راه اندازی کنید و مفاهیم اولیه FirewallD را برای شما توضیح دهیم.
پیش نیازها
قبل از شروع با این آموزش، مطمئن شوید که با یک حساب کاربری با امتیازات sudo یا با کاربر root وارد سرور خود شده اید. بهترین روش اجرای دستورات مدیریتی به عنوان کاربر sudo به جای root است. اگر کاربر sudo در سیستم CentOS خود ندارید، میتوانید با دنبال کردن این دستورالعملها یک کاربر sudo ایجاد کنید.
مفاهیم پایه فایروال
FirewallD به جای زنجیره و قوانین iptables از مفاهیم مناطق و خدمات استفاده می کند. بر اساس مناطق و سرویسهایی که پیکربندی میکنید، میتوانید کنترل کنید که چه ترافیکی به و از سیستم مجاز یا غیرمجاز است.
FirewallD را می توان با استفاده از آن پیکربندی و مدیریت کرد firewall-cmd
command-line سودمندی
مناطق فایروال
مناطق مجموعهای از قوانین از پیش تعریفشده هستند که مشخص میکنند بر اساس سطح اعتماد شبکههایی که رایانه شما به آنها متصل است، چه ترافیکی باید مجاز باشد. می توانید رابط ها و منابع شبکه را به یک منطقه اختصاص دهید.
در زیر مناطق ارائه شده توسط FirewallD با توجه به سطح اعتماد منطقه از نامعتبر به قابل اعتماد سفارش داده شده است:
- رها کردن: تمام اتصالات ورودی بدون هیچ اطلاع رسانی قطع می شوند. فقط اتصالات خروجی مجاز است.
- مسدود کردن: تمام اتصالات ورودی با یک رد می شوند
icmp-host-prohibited
پیام برایIPv4
وicmp6-adm-prohibited
برای IPv6n فقط اتصالات خروجی مجاز است. - عمومی: برای استفاده در مکان های عمومی غیر قابل اعتماد. شما به رایانه های دیگر موجود در شبکه اعتماد ندارید، اما می توانید اتصالات ورودی انتخاب شده را مجاز کنید.
- خارجی: برای استفاده در شبکه های خارجی با پوشش NAT فعال زمانی که سیستم شما به عنوان دروازه یا روتر عمل می کند. فقط اتصالات ورودی انتخاب شده مجاز است.
- درونی؛ داخلی: برای استفاده در شبکه های داخلی زمانی که سیستم شما به عنوان دروازه یا روتر عمل می کند. سایر سیستم های موجود در شبکه به طور کلی قابل اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
- dmz: برای رایانه های واقع در منطقه غیرنظامی شما که دسترسی محدودی به بقیه شبکه شما دارند استفاده می شود. فقط اتصالات ورودی انتخاب شده مجاز است.
- کار کردن: برای ماشین های کار استفاده می شود. سایر رایانه های موجود در شبکه عموماً قابل اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
- خانه: برای ماشین های خانگی استفاده می شود. سایر رایانه های موجود در شبکه عموماً قابل اعتماد هستند. فقط اتصالات ورودی انتخاب شده مجاز است.
- قابل اعتماد: تمامی اتصالات شبکه پذیرفته می شود. به تمام رایانه های موجود در شبکه اعتماد کنید.
خدمات فایروال
سرویس های فایروال قوانین از پیش تعریف شده ای هستند که در یک منطقه اعمال می شوند و تنظیمات لازم را برای اجازه دادن به ترافیک ورودی برای یک سرویس خاص تعریف می کنند.
فایروالد زمان اجرا و تنظیمات دائمی
فایروال از دو مجموعه پیکربندی مجزا، زمان اجرا و پیکربندی دائمی استفاده می کند.
پیکربندی زمان اجرا، پیکربندی واقعی در حال اجرا است، و در راه اندازی مجدد پایدار نیست. هنگامی که سرویس فایروالد شروع می شود، پیکربندی دائمی را بارگیری می کند که به پیکربندی زمان اجرا تبدیل می شود.
به طور پیش فرض، هنگام ایجاد تغییرات در پیکربندی فایروالد با استفاده از firewall-cmd
ابزار، تغییرات در پیکربندی زمان اجرا اعمال می شود. برای دائمی کردن تغییرات باید از آن استفاده کنید --permanent
گزینه.
نصب و فعال کردن FirewallD
-
فایروال به طور پیش فرض روی CentOS 7 نصب شده است، اما اگر روی سیستم شما نصب نیست، می توانید بسته را با تایپ کردن زیر نصب کنید:
sudo yum install firewalld
-
سرویس فایروال به طور پیش فرض غیرفعال است. می توانید وضعیت فایروال را با موارد زیر بررسی کنید:
sudo firewall-cmd --state
اگر به تازگی نصب کرده اید یا قبلاً آن را فعال نکرده اید، دستور چاپ می شود
not running
. در غیر این صورت خواهید دیدrunning
. -
برای راه اندازی سرویس FirewallD و فعال کردن آن در بوت نوع:
sudo systemctl start firewalld
sudo systemctl enable firewalld
کار با Firewalld Zones
پس از فعال کردن سرویس FirewallD برای اولین بار، 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
public
interfaces: eth0 eth1
خروجی بالا به ما می گوید که هر دو رابط 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:
از خروجی بالا، می بینیم که منطقه عمومی فعال است و به عنوان پیش فرض تنظیم شده است که توسط هر دو استفاده می شود eth0
و eth1
رابط ها همچنین اتصالات مربوط به کلاینت DHCP و SSH مجاز است.
اگر میخواهید تنظیمات تمام مناطق موجود را بررسی کنید، تایپ کنید:
sudo firewall-cmd --list-all-zones
دستور یک لیست بزرگ با تنظیمات تمام مناطق موجود چاپ می کند.
تغییر منطقه یک رابط
شما به راحتی می توانید با استفاده از استفاده، منطقه رابط را تغییر دهید --zone
گزینه در ترکیب با --change-interface
گزینه. دستور زیر را اختصاص می دهد eth1
رابط به منطقه کار:
sudo firewall-cmd --zone=work --change-interface=eth1
تغییرات را با تایپ کردن تأیید کنید:
sudo firewall-cmd --get-active-zones
work
interfaces: eth1
public
interfaces: eth0
تغییر منطقه پیش فرض
برای تغییر منطقه پیش فرض، از --set-default-zone
گزینه ای که به دنبال آن نام منطقه ای که می خواهید پیش فرض کنید.
به عنوان مثال، برای تغییر منطقه پیش فرض به خانه، باید دستور زیر را اجرا کنید:
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 به صورت زیر تعریف شده است:
<?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
--zone
گزینه.برای تأیید اینکه سرویس با موفقیت اضافه شده است از --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
همراه با --permanent
گزینه ای برای تأیید تغییرات شما:
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 را از پیکربندی دائمی منطقه عمومی حذف می کند.
اگر برنامهای مانند Plex Media Server را اجرا میکنید که سرویس مناسبی برای آن وجود ندارد، چه؟
در چنین شرایطی، شما دو گزینه دارید. می توانید پورت های مناسب را باز کنید یا یک سرویس FirewallD جدید تعریف کنید.
به عنوان مثال، سرور Plex به پورت 32400 گوش می دهد و از TCP استفاده می کند، برای باز کردن پورت در منطقه عمومی برای جلسه فعلی از --add-port=
گزینه:
sudo firewall-cmd --zone=public --add-port=32400/tcp
tcp
یا udp
.برای تأیید اینکه پورت با موفقیت اضافه شده است از --list-ports
گزینه:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
برای حفظ بندر 32400
پس از راه اندازی مجدد، قانون را با اجرای همان دستور با استفاده از دستور به تنظیمات دائمی اضافه کنید --permanent
گزینه.
سینتکس حذف پورت مانند هنگام افزودن پورت است. فقط استفاده کن --remove-port
به جای --add-port
گزینه.
sudo firewall-cmd --zone=public --remove-port=32400/tcp
ایجاد یک سرویس FirewallD جدید
همانطور که قبلاً ذکر کردیم، سرویس های پیش فرض در قسمت ذخیره می شوند /usr/lib/firewalld/services
فهرست راهنما. ساده ترین راه برای ایجاد یک سرویس جدید کپی کردن یک فایل سرویس موجود در آن است /etc/firewalld/services
دایرکتوری، که محل سرویس های ایجاد شده توسط کاربر و تغییر تنظیمات فایل است.
به عنوان مثال، برای ایجاد یک تعریف سرویس برای Plex Media Server، می توانیم از فایل سرویس SSH استفاده کنیم:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
جدید ایجاد شده را باز کنید plexmediaserver.xml
را فایل کنید و نام کوتاه و توضیحات سرویس را در داخل تغییر دهید <short>
و <description>
برچسب ها مهمترین برچسبی که باید تغییر دهید این است port
تگ، که شماره پورت و پروتکلی را که می خواهید باز کنید را مشخص می کند.
در مثال زیر در حال باز کردن پورت ها هستیم 1900
UDP و 32400
TCP.
<?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
خدمات در مناطق شما مانند هر سرویس دیگری..
پورت حمل و نقل با فایروال
برای هدایت ترافیک از یک پورت به پورت یا آدرس دیگر، ابتدا با استفاده از گزینه، تغییر ظاهر را برای منطقه مورد نظر فعال کنید --add-masquerade
تعویض. به عنوان مثال برای فعال کردن maskarading برای external
نوع منطقه:
sudo firewall-cmd --zone=external --add-masquerade
- انتقال ترافیک از یک پورت به پورت دیگر در همان سرور
در مثال زیر ما ترافیک را از پورت فوروارد می کنیم 80
به بندر 8080
در همان سرور:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
- ترافیک را به سرور دیگری هدایت کنید
در مثال زیر ما ترافیک را از پورت فوروارد می کنیم 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
اگر میخواهید فوروارد را دائمی کنید، فقط آن را اضافه کنید --permanent
گزینه.
ایجاد یک مجموعه قوانین با فایروالD
در مثال زیر، روش پیکربندی فایروال خود را در صورتی که سرور وب را اجرا میکردید، نشان خواهیم داد. ما فرض می کنیم سرور شما فقط یک رابط دارد eth0
، و می خواهید ترافیک ورودی را فقط در پورت های SSH، HTTP و HTTPS مجاز کنید.
-
منطقه پیش فرض را به dmz تغییر دهید
ما از منطقه dmz (غیر نظامی شده) استفاده خواهیم کرد زیرا به طور پیش فرض فقط به ترافیک SSH اجازه می دهد. برای تغییر منطقه پیش فرض به dmz و اختصاص آن به
eth0
رابط، دستورات زیر را اجرا کنید:sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
-
پورت های HTTP و HTTPS را باز کنید:
برای باز کردن پورت های HTTP و HTTPS قوانین سرویس دائمی را به منطقه dmz اضافه کنید:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
با بارگذاری مجدد فایروال، تغییرات را بلافاصله اعمال کنید:
sudo firewall-cmd --reload
-
تغییرات را تأیید کنید
برای بررسی تنظیمات پیکربندی منطقه dmz نوع:
sudo firewall-cmd --zone=dmz --list-all
dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
خروجی بالا به ما می گوید که dmz منطقه پیش فرض است که به آن اعمال می شود
eth0
رابط و پورت های ssh (22) http (80) و https (443) باز هستند.
نتیجه
شما یاد گرفته اید که چگونه سرویس FirewallD را در سیستم CentOS خود پیکربندی و مدیریت کنید.
اطمینان حاصل کنید که تمام اتصالات ورودی را که برای عملکرد صحیح سیستم شما ضروری هستند، مجاز کنید، در حالی که تمام اتصالات غیر ضروری را محدود کنید.
اگر سوالی دارید، در زیر نظر دهید.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-27 12:41:03