وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش راه اندازی فایروال با FirewallD در CentOS 7

0 1
زمان لازم برای مطالعه: 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

  1. فایروال به طور پیش فرض روی CentOS 7 نصب شده است، اما اگر روی سیستم شما نصب نیست، می توانید بسته را با تایپ کردن زیر نصب کنید:

    sudo yum install firewalld
  2. سرویس فایروال به طور پیش فرض غیرفعال است. می توانید وضعیت فایروال را با موارد زیر بررسی کنید:

    sudo firewall-cmd --state

    اگر به تازگی نصب کرده اید یا قبلاً آن را فعال نکرده اید، دستور چاپ می شود not running. در غیر این صورت خواهید دید running.

  3. برای راه اندازی سرویس FirewallD و فعال کردن آن در بوت نوع:

    sudo systemctl start firewalldsudo 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 به منطقه عمومی اختصاص داده شده اند.

پیشنهاد می‌کنیم بخوانید:  نحوه ایجاد و مدیریت ماشین های مجازی با ابزار Vagrant Command Line

می‌توانید تنظیمات پیکربندی منطقه را با موارد زیر چاپ کنید:

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 به صورت زیر تعریف شده است:

/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
اگر منطقه پیش‌فرض را تغییر می‌دهید، می‌توانید آن را کنار بگذارید --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 گزینه.

پیشنهاد می‌کنیم بخوانید:  روش نصب سرور Xrdp (دسکتاپ از راه دور) روی CentOS 8

سینتکس حذف پورت مانند هنگام افزودن پورت است. فقط استفاده کن --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.

/etc/firewalld/services/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 خدمات در مناطق شما مانند هر سرویس دیگری..

پورت حمل و نقل با فایروال

برای هدایت ترافیک از یک پورت به پورت یا آدرس دیگر، ابتدا با استفاده از گزینه، تغییر ظاهر را برای منطقه مورد نظر فعال کنید --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 مجاز کنید.

  1. منطقه پیش فرض را به dmz تغییر دهید

    ما از منطقه dmz (غیر نظامی شده) استفاده خواهیم کرد زیرا به طور پیش فرض فقط به ترافیک SSH اجازه می دهد. برای تغییر منطقه پیش فرض به dmz و اختصاص آن به eth0 رابط، دستورات زیر را اجرا کنید:

    sudo firewall-cmd --set-default-zone=dmzsudo firewall-cmd --zone=dmz --add-interface=eth0
  2. پورت های HTTP و HTTPS را باز کنید:

    برای باز کردن پورت های HTTP و HTTPS قوانین سرویس دائمی را به منطقه dmz اضافه کنید:

    sudo firewall-cmd --permanent --zone=dmz --add-service=httpsudo firewall-cmd --permanent --zone=dmz --add-service=https

    با بارگذاری مجدد فایروال، تغییرات را بلافاصله اعمال کنید:

    sudo firewall-cmd --reload
  3. تغییرات را تأیید کنید

    برای بررسی تنظیمات پیکربندی منطقه 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 خود پیکربندی و مدیریت کنید.

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

اگر سوالی دارید، در زیر نظر دهید.

فایروالد فایروال امنیت iptables centos
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-27 12:41:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید