هاست لینوکس پرسرعت سی پنل

مقدمه ای راجع به فایروال لینوکس firewalld

همانطور که باید بدانید در نسخۀ ۷ سیستم عامل CentOS لینوکس، دیگر خبری از iptables نیست و به جای آن firewalld معرفی شده است. در کنار مزایایی که استفاده از این دیوار آتش دارد، ساده سازی دستوراتی که می توانید با آن فایروال خود را پیکربندی کنید، از بهترین دلایلی است که ما باید از firewalld استفاده کنیم. در آموزش های گذشته به طور کامل iptables و دستورات آن آموزش داده شد. اما در این قسمت که قسمت ۹۰ از مجموعه آموزش های مدیریت و کانفیگ سرور لینوکس محسوب می گردد، مبانی firewalld را خدمت شما توضیح خواهیم داد.

مهم ترین ویژگی های firewalld

daemon یا شبح firewalld فایروال هستۀ لینوکس را به صورت پویا مدیریت می کند. که مهم‌ترین شاخصۀ آن پشتیبانی کردن از نواحی یا zones است که در iptables موجود نبود. ناحیه به ما امکان جابجا شدن در بین گروهی از تنظیمات از پیش ذخیره شده را می‌دهد. Firewalld از تنظیمات دیوار آتش برای ipv4 و ipv6 همچنین ازEthernet bridges و IP set هم پشتیبانی می کند. از مهم ترین ویژگی های دیگر آن ایجاد تمایز بین تنظیمات بلادرنگ و تنظیمات دائمی است که قرار است برای همیشه اجرا گردند. همچنین دارای رابطی است که به صورت ساده و مستقیم امکان افزودن قاعده برای برنامه های کاربردی و سرویس ها را فراهم کرده است. ارتباط کامل با firewalld با D-Bus انجام می پذیرد. اینهایی که گفته شد، خلاصه ای از مشخصات فنی firewalld بود که در ادامه با زبانی ساده تر هر کدام از آنها توضیح داده می شوند.

مقدمه ای راجع به فایروال لینوکس firewalld

مقایسه جایگاه FirewallD در برابر با Iptables و دیگر ابزارهای مدیریتی آن

در تصویر بالا کاملاً مکان firewalld در بین سرویس ها و دستورات دیگر مشخص است.

رابط های کار با firewalld

بسته به اینکه از محیط خط فرمان استفاده می کنیم یا محیط گرافیکی لینوکس، ما برای اینکه با firewalld کار کنیم، یا باید از رابط firewall-config استفاده کنیم یا firewall-cmd که بیشتر مانور ما روی firewall-cmd است. چون ما تماماً با خط فرمان لینوکس سر و کار داریم. پس مهم ترین دستوری که هنگام کار کردن با دیوار آتش firewalld مد نظر ماست، دستور firewall-cmd می باشد.

موقتی یا دائمی بودن نتیجۀ دستورات

دستوراتی که ما با firewall-cmd می زنیم، به دو حالت موقت یا دائمی می توانند عمل کنند.

  • موقت یا Realtime
  • دائمی یا Permanent که حتماً باید مشخصۀ –permanent به دستور افزوده گردد.

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

از دیگر ابزارهای مدیریت firewalld دستور firewall-offline-cmd است که کاربرد آن دقیقاً به مانند دستور firewall-cmd است. با این تفاوت که وقتی firewalld خاموش است و شما قصد پیکربندی آن را دارید، قادرید از دستور firewall-offline-cmd استفاده کنید تا بعد از روشن شدن فایروال تنظیمات روی سرور شما اعمال گردد. این کار به جهت سهولت پیکربندی و عدم قطعی سرور بسیار مفید است. دقت داشته باشید که هر دوی این دستورات توسط مدیر ریشه یا کاربرانی که درگروه wheel قرار گرفته اند قابل استفاده هستند.

محل ذخیره سازی اسناد پیکربندی

به مانند دیگر سرویس های لینوکس که روی این سیستم عامل نصب و اجرا می شوند، تنظیمات درون اسناد پیکربندی ذخیره می گردند. به طور کلی اسناد پیکربندی firewalld به دو گروه کلی تقسیم می شوند.

  1. اسناد پیکربندی که حکم تنظیمات پیش‌فرض را دارند و در مسیر /usr/lib/firewalld/ ذخیره می شوند.
  2. اسناد پیکربندی که حکم تنظیمات سفارشیِ شده توسط مدیر سرور را دارند و در مسیر /etc/firewalld/ ذخیره می شوند.

دست بردن به صورت دستی درون اسناد پیکربندی گروه اول به هیچ عنوان توصیه نمی شود. اما برای کانفیگ firewalld نیاز است که پوشۀ مربوط به این سرویس را مسیر etc حتماً بررسی کنید.

از جمله مهم ترین مواردی که در بین تنظیمات موجود در مسیر usr/lib/firewalld واقع شدند، تنظیمات مربوط به دسترسی های مجاز سرویس های از پیش تعیین شده است. به عنوان مثال برای اینکه شما پورت مربوط به http را باز کنید، می توانید سرویس http را روی firewalld با استفاده از دستور firewall-cmd فعال کنید. بقیۀ کارها را خود firewalld انجام می‌دهد. این هم یکی دیگر از ویژگی های خوبِ دیوار آتش در نسخۀ جدید CentOS 7 است.

دقت داشته باشید که اسناد پیکربندی در iptables سند /etc/sysconfig/iptables بود و در CentOS 7 چنین اسنادی وجود ندارند. همچنین در سرویس های iptables اگر می خواستیم قسمتی از قواعد دیوار آتش را ویرایش کنیم، نیاز داشت برای Rule (قواعد) ها حذف شوند و مجدد قواعد جدید از /etc/sysconfig/iptables خوانده شوند. اما با firewalld نیازی به انجام چنین کاری نیست. به همین دلیل مواردی که اختلاف دارند اعمال می‌گردند و هیچ گونۀ اتصالی هم قطع نخواهد شد.

نواحی شبکه یا Network Zones

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

پس زمانی هم که شما قصد پیکربندیِ دیوار آتش خود را دارید و درحال استفاده از دستور firewall-cmd یا رابط firewall-config هستید، باید تعیین کنید که آن تنظیم را می خواهید روی کدام ناحیه اعمال کنید. که اگر این کار را نکنید، فرض می شود که ناحیۀ پیش فرض مد نظر شماست. این ناحیه پیش فرض معمولاً public نام دارد که این را هم خود شما می توانید تغییر دهید.

نواحی پیش فرض که از قبل روی firewalld موجود هستند، شامل موارد زیر می گردند:

  • drop
  • block
  • public
  • external
  • dmz
  • work
  • home
  • internal
  • trusted

هر کدام از این ناحیه ها (Zones) شامل یک سری قواعد برای دیوار آتش هستند که مثلاً سرویس هایی را برای دسترسی روی رایانۀ شما فعال یا غیر فعال می کنند. مثلاً ناحیه drop را در نظر بگیرید که همانطور که از اسمش پیداشت، کلیۀ بسته های ورودی به لینوکس را مسدود می کند و هیچ پاسخی هم به رایانۀ ارسال کنندۀ بسته نمی دهد. تنها امکان خروج بسته از روی سرور مهیا است. هر کدام از دیگر ناحیه ها هم طبق مفهومی که از نامشان پیداست، می توانند کار خاصی را روی بسته های اطلاعاتی ورود و خروجی به سرور ما انجام دهند.

البته ذکر این نکته هم حائز اهمیت است که کاربر ناحیه ها بیشتر روی رایانه هایی که که مدام در حال اتصال به شبکه های مختلفی هستند. البته یک سرور هم میتواند با استفاده از کارت های شبکۀ مختلف به اینترنت متصل گردد که باز هم می توان از همین خاصیت zone ها استفاده کرد.

کارهای زیادی را می توان روی zone ها با استفاده از دستور firewall-cmd انجام داد. به عنوان مثال با دستور زیر شما قادرید ناحیه پیش فرض که در مواقعی که ناحیه ای در نظر گرفت نشده است، آن ناحیه مد نظر قرار می گیرد، را می توانید تغییر دهید.

firewall-cmd --set-default-zone=dmz

راجع این موضوع در آموزش های بعدی بیشتر صحبت خواهیم کرد.

سرویس های کنترل شده توسط firewalld

همانطور که در ابتدای این آموزش هم گفته شد، firewalld از قبل تنظیماتی را روی تمامی سرویس های پرکاربرد می تواند اعمال کند. مثلاً سرویس ftp را در نظر بگیرید که اگر خواستار باز کردن پورت (درگاه) های آن باشید، می توانید با یک دستور ساده مثل دستور زیر این کار را انجام دهید:

firewall-cmd --permanent --add-service=ftp

دیگر حتی بدون اینکه نیاز باشد شما بدانید شمارۀ درگاه ftp چیست، با یک دستور ساده مثل دستور بالا، پورت ftp روی پروتکل tcp به سادگی برای شما باز می شود. هر سرویسی درون یک پرونده در مسیر زیر تنظیماتش ذخیره شده است. که اگر از دستور ls استفاده کنیم، تمامی این پرونده ها برای ما فهرست می شوند.

ls /usr/lib/firewalld/services/

شما حق ویرایش پرونده های موجود در این مسیر را به صورت مستقیم ندارید. پرونده های پیکربندیِ سرویس های سفارشی، باید در مسیر ساخته و ذخیره شوند.

/etc/firewalld/services/

این کار را می توانید هم به صورت دستی انجام دهید. هم با استفاده از دستور زیر به صورت خودکار یک سرویس جدید با پروتکل و درگاه مورد نظر به firewalld بدهید تا از این به بعد به مانند دیگر سرویس ها، آن را هم بتوانید با چند دستور ساده کنترل کنید.

firewall-cmd --permanent --new-service=service-name

دستور زیر هم کل سرویس هایی که firewalld آنها را تشخیص می دهد را نشان می دهد و شما می توانید از بین آنها، آنهایی که مد نظرتان است را پیدا کنید.

firewall-cmd --get-services

بدین صورت است که شما قادرید، تکلیف سرویس های مختلف را برای firewalld روشن کنید و از این به بعد با یک دستور ساده با مشخصۀ add-service کار فعال یا غیرفعال کردن اجازۀ دسترسی آن را توسط دیوار آتش صادر کنید. این هم از دیگر ویژگی های بسیار مهم firewalld بود که سعی خواهد شد در آموزش های بعدی راجع به آن هم بیشتر توضیح دهم.

پس در این مرحله از آموزش کانفیگ سرور لینوکس CentOS شما تا حد زیادی با دیوار آتش نسخۀ ۷ از این سیستم عامل آشنا شدید که نامش firewalld بود.

  1. سلام
    از سال گذشته تا حالا هنوز این مقالات تموم نشده 🙁 ؟ لطفا یک کم بیشتر وقت بزارید ، سوالی هم دارم درباره کنترل پنل هاست CWP که ظاهرا برای لینوکس Cent OS تهیه شده ، آیا این کنترل پنل قابل اطمینان هست؟

    • سلام؛ بله کنترل پنل CWP قابل اعتماده و می تونید با اونم سرورتون رو مدیریت کنید.
      مدیریت سرور هم چیزی نیست که بشه بگیم دیگه آموزش هاش تموم شده و نیازی به آموزش نیست! مدام میشه براش مقالۀ آموزشی نوشت و یاد گرفت.
      ولی تا یکی دو هفتۀ آینده آموزش های پیکربندیِ سرویس های لینوکس هم تموم میشه.

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

دیدگاه تان را ارسال کنید.

لطفاً از درج نظرات خارج از موضوع این صفحه خودداری کنید!