پیکربندی فایروال در CentOS 7

فایروال نصب شده در سیستم عامل برای جلوگیری از عبور ترافیک غیرمجاز از طریق شبکه های کامپیوتری استفاده می شود. به صورت دستی یا به طور خودکار قوانین ویژه ای برای فایروال ایجاد می کند که مسئول کنترل دسترسی می باشند. در OS توسعه یافته در هسته لینوکس، CentOS 7 دارای یک فایروال داخلی است و با استفاده از یک فایروال مدیریت می شود. FirewallD به طور پیش فرض فعال است، و ما می خواهیم امروز در مورد تنظیمات آن صحبت کنیم.

پیکربندی فایروال در CentOS 7

همانطور که در بالا ذکر شد، فایروال استاندارد در CentOS 7 به ابزار FirewallD اختصاص داده شده است. به همین دلیل است که تنظیم فایروال بر روی مثال این ابزار در نظر گرفته می شود. شما می توانید قوانین فیلترینگ را با استفاده از همان iptables تنظیم کنید، اما این کار کمی متفاوت است. توصیه می کنیم خودتان را با پیکربندی ابزار مورد نظر آشنا کنید با کلیک کردن روی لینک زیر و شروع به تجزیه FirewallD می کنیم.

همچنین ببینید: پیکربندی iptables در CentOS 7

مفاهیم فایروال

چندین منطقه وجود دارد - مجموعه ای از قوانین برای مدیریت ترافیک بر پایه اعتماد در شبکه ها. همه آنها به سیاست های خودشان داده می شوند، که تمامیت آن پیکربندی فایروال است. هر منطقه دارای یک یا چند رابط شبکه است که همچنین به شما اجازه می دهد فیلتر کردن را تنظیم کنید. قوانین قابل اجرا به طور مستقیم به رابط کاربری مورد استفاده بستگی دارد. برای مثال، هنگامی که به یک Wi-Fi عمومی دسترسی داشته باشید، فایروال سطح کنترل را افزایش می دهد و در شبکه خانگی دسترسی های اضافی برای شرکت کنندگان زنجیره ای را باز می کند. در این فایروال چنین مناطق وجود دارد:

  • trusted - حداکثر سطح اطمینان در تمام دستگاه ها در شبکه؛
  • home یک گروه شبکه محلی است. اعتماد به محیط زیست وجود دارد، اما در انجام این کار، اتصالات ورودی تنها برای دستگاه های خاص قابل دسترسی هستند؛
  • work - منطقه کار اعتماد بیشتر در اکثر دستگاه ها، و همچنین سرویس های اضافی فعال هستند.
  • dmz - منطقه برای رایانه های جداگانه چنین دستگاه هایی از بقیه شبکه قطع شده و تنها ترافیک ورودی خاص را اجازه می دهد؛
  • internal - منطقه شبکه های داخلی. اعتماد به تمام ماشین ها اعمال می شود، خدمات اضافی باز می شود؛
  • external - معکوس به منطقه قبلی. در شبکه های خارجی، ماسک NAT فعال است، بسته شدن شبکه داخلی، اما مسدود کردن توانایی دسترسی به آن نیست؛
  • public - منطقه ای از شبکه های عمومی با عدم اعتماد به همه دستگاه ها و دریافت فردی از ترافیک ورودی؛
  • block - تمام درخواست های ورودی با خطای icmp- host-prohibited یا icmp6-adm-prohibited بازنشانی می شوند.
  • drop - حداقل سطح اعتماد. اتصالات ورودی بدون اطلاع رسانی کاهش می یابد.

سیاستمداران خود موقت و دائمی هستند. هنگامی که پارامترها ظاهر می شوند یا ویرایش می شوند، اقدام فایروال بلافاصله بدون نیاز به راه اندازی مجدد تغییر می کند. اگر قوانین موقت اعمال شوند، پس از راه اندازی مجدد FirewallD، آنها تنظیم مجدد خواهند شد. قانون دائمی نامیده می شود - در هنگام اعمال استدلال، —permanent خواهد —permanent .

فایروال فایروال را فعال کنید

ابتدا لازم است فایروال را شروع کنید یا مطمئن شوید که آن در حالت فعال است. فقط یک daemon فعال (یک برنامه در حال اجرا در پس زمینه) قوانین مربوط به فایروال را اعمال می کند. فعال سازی تنها با چند کلیک انجام می شود:

  1. از طریق هر روش راحت، «ترمینال» کلاسی را راه اندازی کنید، به عنوان مثال، از طریق منوی «برنامه ها» .
  2. راه اندازی یک ترمینال برای پیکربندی دیوار آتش در CentOS 7

  3. type sudo systemctl start firewalld.service را وارد کنید و کلید Enter را فشار دهید.
  4. شروع سرویس های فایروال در سیستم عامل CentOS 7

  5. مدیریت سودمندی از جانب کاربر فوق انجام می شود، بنابراین شما باید با تعیین یک رمز عبور احراز هویت کنید.
  6. وارد کردن رمز عبور برای شروع خدمات فایروال در ترمینال CentOS 7

  7. برای اطمینان از عملکردهای سرویس، firewall-cmd --state مشخص firewall-cmd --state .
  8. وضعیت فعلی فایروال را از طریق ترمینال در CentOS 7 مشاهده کنید

  9. تأیید صحت در پنجره گرافیکی باز شده.
  10. در هنگام مشاهده وضعیت فایروال CentOS 7 وارد گذرواژه برای احراز هویت شوید

  11. یک خط جدید نمایش داده می شود. مقدار "در حال اجرا" به این معنی است که فایروال کار می کند.
  12. وضعیت فعلی فایروال را در سیستم عامل CentOS 7 نمایش می دهد

اگر یک بار به طور موقت یا دائمی دیوار آتش را غیرفعال کنید، توصیه می کنیم از دستورالعمل های ارائه شده در مقاله دیگر ما در لینک زیر استفاده کنید.

جزئیات بیشتر: فایروال را در CentOS 7 غیرفعال کنید

مشاهده قوانین پیش فرض و مناطق موجود

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

  1. firewall-cmd --get-default-zone به firewall-cmd --get-default-zone کمک خواهد کرد.
  2. به طور پیش فرض فایروال Zone در CentOS 7 را مشاهده کنید

  3. پس از فعال سازی آن، یک خط جدید را مشاهده خواهید کرد که پارامتر مورد نظر نمایش داده خواهد شد. برای مثال، در تصویر زیر، منطقه "عمومی" فعال است.
  4. نمایش منطقه پیش فرض فایروال در CentOS 7

  5. با این حال، چندین منطقه می توانند در یک بار فعال شوند، علاوه بر این، آنها به یک رابط جداگانه گره خورده اند. این اطلاعات را از طریق firewall-cmd --get-active-zones .
  6. تمام کانون های فایروال فعال را در CentOS 7 مشاهده کنید

  7. firewall-cmd --list-all قوانینی را که برای منطقه پیش فرض تعیین شده است نمایش می دهد. تصویر زیر را ببینید شما می توانید ببینید که قانون "پیش فرض" به منطقه فعال "عمومی" اختصاص داده شده است - عملیات پیش فرض ، رابط "enp0s3" و دو سرویس اضافه شده است.
  8. قوانین هسته فایروال را از طریق ترمینال CentOS 7 مشاهده کنید

  9. اگر شما نیاز به دانستن تمامی فایروال های موجود دارید، وارد شوید firewall-cmd --get-zones .
  10. گرفتن لیستی از تمامی فایروال های موجود در داخل ترمینال CentOS 7

  11. پارامترهای یک منطقه خاص از طریق firewall-cmd --zone=name --list-all ، که نام آن نام منطقه است.
  12. نمایش قوانین منطقه فایروال مشخص شده از طریق ترمینال CentOS 7

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

پیکربندی مناطق رابط

همانطور که از اطلاعات بالا می دانید، هر رابط دارای منطقه پیش فرض خود است. آن را در آن باقی بماند تا زمانی که تنظیمات توسط کاربر یا برنامه نویسی تغییر یابد. ممکن است به صورت دستی انتقال واسط به منطقه را برای یک جلسه انجام دهید و با فعال کردن دستور sudo firewall-cmd --zone=home --change-interface=eth0 . نتیجه "موفقیت" نشان می دهد که انتقال موفقیت آمیز بود. به یاد بیاورید که چنین تنظیمات بلافاصله بعد از راه اندازی مجدد فایروال تنظیم مجدد می شوند.

اختصاص یک رابط خاص به منطقه فایروال در CentOS 7

با چنین تغییر پارامترها باید در نظر داشت که کار خدمات را می توان تنظیم مجدد کرد. بعضی از آنها در برخی مناطق، مانند SSH، عملیات را پشتیبانی نمی کنند، اگر چه در "خانه" در دسترس هستند، اما این سرویس به کار در خدمات کاربر یا خدمات خاص نمی پردازد. شما می توانید با تایپ کردن firewall-cmd --get-active-zones شما firewall-cmd --get-active-zones که رابط با موفقیت به یک شاخه جدید مرتبط شده firewall-cmd --get-active-zones .

مشاهده هسته فایروال و رابط کاربری آن در CentOS 7

اگر می خواهید تنظیمات قبلی خود را بازنشانی کنید، فقط دیواره آتش را راه اندازی مجدد کنید: sudo systemctl restart firewalld.service .

راه اندازی مجدد دیوار آتش پس از تغییر در CentOS 7

گاهی اوقات راحت نیست که فقط یک جلسه را به رابط کاربری تغییر دهید. در این مورد، شما باید فایل پیکربندی را ویرایش کنید تا تمام تنظیمات به صورت دائمی وارد شوند. برای انجام این کار، توصیه می کنیم از ویرایشگر متن نانو استفاده کنید که از مخزن ذخیره سازی sudo yum install nano . باقی مانده است تا اقدامات زیر انجام شود:

  1. فایل پیکربندی را از طریق ویرایشگر با وارد کردن sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 ، که eth0 نام نام کاربری مورد نیاز است، باز کنید.
  2. باز کردن فایل پیکربندی فایروال در CentOS 7

  3. حساب کاربری خود را برای اقدام بیشتر تأیید کنید.
  4. ورود به گذرواژه برای باز کردن فایل پیکربندی رابط در CentOS 7

  5. پارامتر "ZONE" را پیدا کرده و ارزش آن را به یک مورد دلخواه تغییر دهید، مثلا public یا home .
  6. تغییر منطقه رابط از طریق فایل پیکربندی در CentOS 7

  7. برای ذخیره تغییرات، Ctrl + O را نگه دارید.
  8. ثبت تغییرات در ویرایشگر متن CentOS 7

  9. نام فایل را تغییر ندهید، فقط Enter را فشار دهید.
  10. تخصیص پرونده برای ثبت تغییرات در ویرایشگر متن CentOS 7

  11. از Ctrl + X با ویرایشگر متن خارج شوید
  12. خروجی ویرایشگر متن پس از CentOS 7 تغییر می کند

در حال حاضر منطقه رابط همان چیزی است که شما آن را مشخص کرده اید، تا ویرایش بعدی فایل پیکربندی. برای ایجاد تنظیمات به روزرسانی، اجرای sudo systemctl restart network.service و sudo systemctl restart firewalld.service .

تنظیم منطقه پیش فرض

در بالا، ما قبلا یک فرمان را نشان دادیم که به ما امکان میداد منطقه پیش فرض را پیدا کند. همچنین می توانید با تنظیم گزینه انتخاب خود تغییر دهید. برای انجام این کار کافی است که sudo firewall-cmd --set-default-zone=name را ثبت نام sudo firewall-cmd --set-default-zone=name در کنسول، where name نام منطقه مورد نیاز است.

اختصاص دادن منطقه پیش فرض فایروال در CentOS 7

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

تخصیص موفقیت آمیز یک منطقه پیش فرض در CentOS 7

ایجاد قوانین برای برنامه ها و خدمات

در ابتدای مقاله ما درباره عملیات هر منطقه صحبت کردیم. تعریف خدمات، برنامه های کاربردی و برنامه ها در این شاخه ها به هر یک از آنها اجازه می دهد تا پارامترهای فردی را برای هر کاربر درخواست کنند. برای شروع، توصیه می کنیم خود را با لیست کامل سرویس های در حال حاضر در دسترس آشنا کنید: firewall-cmd --get-services .

فرمان برای مشاهده سرویس CentOS 7 در سیستم موجود است.

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

لیست خدمات موجود در CentOS 7

دستور بالا فقط نام خدمات را نشان می دهد. اطلاعات دقیق در مورد هر یک از آنها از طریق یک فایل جداگانه در مسیر مسیر /usr/lib/firewalld/services . چنین اسنادی در فرمت XML قرار دارد، برای مثال، مسیر SSH به صورت زیر است: /usr/lib/firewalld/services/ssh.xml ، و سند دارای مطالب زیر است:

SSH
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.

پشتیبانی دستی برای سرویس در یک منطقه خاص فعال شده است. در "ترمینال" باید دستور sudo firewall-cmd --zone=public --add-service=http که در آن zonezone = activation فعال است، تنظیم کنید و adad-service = http نام سرویس است. توجه داشته باشید که این تغییر تنها در یک جلسه تاثیر می گذارد.

اضافه کردن یک سرویس به منطقه خاص فایروال CentOS 7

علاوه بر این، از طریق sudo firewall-cmd --zone=public --permanent --add-service=http و نتیجه «موفقیت» نشان دهنده اتمام موفقیت آمیز عملیات است.

علاوه بر ارائه خدمات دائمی به منطقه فایروال CentOS 7

شما می توانید لیست کامل قوانین دائمی برای یک منطقه خاص را با نمایش لیست در یک خط جداگانه کنسول ببینید: sudo firewall-cmd --zone=public --permanent --list-services .

لیستی از سرویس های فایروال دائمی CentOS 7 را مشاهده کنید

راه حل مشکل عدم دسترسی به سرویس

به طور استاندارد، خدمات محبوب ترین و امن در قوانین فایروال مجاز است، اما برخی از برنامه های استاندارد یا شخص ثالث را مسدود می کند. در این حالت، کاربر باید تنظیمات دستی را برای حل مشکل دسترسی تغییر دهد. این را می توان به دو روش مختلف انجام داد.

حمل و نقل بندر

همانطور که می دانید، تمام خدمات شبکه از یک پورت خاص استفاده می کنند. این به راحتی توسط فایروال شناسایی می شود و می تواند قفل ها را مسدود کند. برای اجتناب از چنین عملیاتی توسط فایروال، باید پورت مورد نظر را با sudo firewall-cmd --zone=public --add-port=0000/tcp ، جایی که --zone = عمومی ، منطقه برای پورت است، adad-port = 0000 / tcp - شماره پورت و پروتکل. گزینه firewall-cmd --list-ports لیستی از پورت های باز firewall-cmd --list-ports نمایش firewall-cmd --list-ports دهد.

باز کردن یک پورت در یک منطقه خاص از فایروال CentOS 7

اگر شما نیاز به باز کردن پورت هایی که در محدوده هستند، از خط sudo firewall-cmd --zone=public --add-port=0000-9999/udp ، whereadd-port = 0000-9999 / udp دامنه پورت ها و پروتکل آنها

باز کردن یک سری از پورت ها در یک منطقه خاص از فایروال CentOS 7

دستورات فوق فقط اجازه استفاده از چنین پارامترهایی را آزمایش می کنند. اگر موفق شد، شما باید پورت های مشابه را به تنظیمات دائمی اضافه کنید و این کار با وارد کردن sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp یا sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp . لیست پورت های پایدار باز به صورت زیر نمایش داده می شود: sudo firewall-cmd --zone=public --permanent --list-ports .

تعریف سرویس

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

  1. فایل پیکربندی را با نوشتن sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml کپی کنید، جایی که service.xml نام پرونده سرویس است و example.xml نام کپی آن است.
  2. کپی کردن تنظیمات سرویس فایروال به CentOS 7

  3. یک کپی برای ویرایش از طریق هر ویرایشگر متن باز کنید، مثلا sudo nano /etc/firewalld/services/example.xml .
  4. یک پرونده سرویس CentOS 7 کپی شده را اجرا کنید

  5. برای مثال، ما یک کپی از سرویس HTTP ایجاد کردیم. در سند، شما اساسا متادیتای مختلف را مشاهده می کنید، مانند نام کوتاه و توضیحات. بر روی سرور فقط شماره پورت و پروتکل را تغییر می دهد. بالای خط " باید اضافه شود برای باز کردن بندر TCP پروتکل است که استفاده می شود و 0000 شماره پورت است.
  6. تغییرات در فایل سرویس برای باز کردن پورت ها در CentOS 7

  7. تمام تغییرات را ذخیره کنید ( Ctrl + O )، فایل را ( Ctrl + X ) را ببندید و سپس فایروال را راه اندازی مجدد کنید تا تنظیمات را از طریق sudo firewall-cmd --reload . پس از آن، سرویس در لیستی از موارد موجود ظاهر می شود که می تواند از طریق firewall-cmd --get-services .
  8. راه اندازی مجدد سرویس فایروال در CentOS 7

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

ایجاد مناطق سفارشی

شما قبلا می دانید که در ابتدا تعداد زیادی از مناطق مختلف با قوانین خاص در FirewallD ایجاد شده است. با این حال، موقعی که مدیر سیستم نیاز به ایجاد یک منطقه کاربری، مانند "publicweb" برای سرور وب نصب شده یا "privateDNS" برای یک سرور DNS وجود دارد. در این دو نمونه، ما علاوه بر شاخه ها را تحلیل می کنیم:

  1. ایجاد دو منطقه دائمی جدید با sudo firewall-cmd --permanent --new-zone=publicweb و sudo firewall-cmd --permanent --new-zone=privateDNS .
  2. اضافه کردن مناطق کاربر جدید فایروال CentOS 7

  3. بعد از بارگیری مجدد sudo firewall-cmd --reload آنها در دسترس خواهند بود. برای نمایش مناطق دائمی، enter sudo firewall-cmd --permanent --get-zones .
  4. مشاهده کانون های فایروال موجود در CentOS 7 را ببینید

  5. آنها را به خدمات مورد نیاز، به عنوان مثال، «SSH» ، «HTTP» و «HTTPS» اختصاص دهید . این کار با دستورات sudo firewall-cmd --zone=publicweb --add-service=ssh انجام می شود sudo firewall-cmd --zone=publicweb --add-service=ssh ، sudo firewall-cmd --zone=publicweb --add-service=http و sudo firewall-cmd --zone=publicweb --add-service=https ، where --zone = publicweb نام ناحیه برای اضافه کردن است. شما می توانید فعالیت های خدمات را با firewall-cmd --zone=publicweb --list-all .
  6. اضافه کردن خدمات به منطقه کاربری CentOS 7

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

همانطور که می بینید، فایروال FirewallD یک ابزار نسبتا بزرگ است که به شما اجازه می دهد تنظیمات انعطاف پذیر ترین دیوار آتش را تنظیم کنید. تنها به منظور اطمینان از اینکه این ابزار با سیستم راه اندازی شده و قوانین مشخص شده بلافاصله کار خود را آغاز می کنند، باقی می ماند. این کار را با دستور sudo systemctl enable firewalld .