نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • برنامه ها
  • پورت باز 80 فایروال Centos 7. اگر سرویس مورد نیاز در دسترس نباشد چه باید کرد

پورت باز 80 فایروال Centos 7. اگر سرویس مورد نیاز در دسترس نباشد چه باید کرد

اما دستورات iptables پیچیده هستند و بسیاری از کاربران برای به خاطر سپردن همه گزینه ها و زمان استفاده از آنها مشکل دارند. بنابراین، توسعه دهندگان توزیع افزونه های خود را روی iptable ها ایجاد می کنند که به ساده سازی مدیریت فایروال کمک می کند. CentOS یک افزونه برای مدیریت iptable ها به نام Firewalld دارد.

فایروال در مقایسه با iptable ها چندین تفاوت مهم دارد. در اینجا کنترل دسترسی به شبکه به جای زنجیره ها و قوانین در سطح مناطق و خدمات انجام می شود. و همچنین قوانین به صورت پویا و بدون وقفه در جلسات در حال اجرا به روز می شوند. این مقاله به عنوان مثال به راه اندازی فایروال CentOS 7 با استفاده از فایروالد می پردازد.

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

  • رها کردن- تمام بسته های ورودی را مسدود کنید، فقط به بسته های خروجی اجازه دهید
  • مسدود کردن- بر خلاف گزینه قبلی، برای فرستنده بسته پیامی ارسال می شود که بسته خود را مسدود کند.
  • عمومی- اتصالات ورودی فقط برای ssh و dhclient پشتیبانی می شوند.
  • خارجی- پشتیبانی از NAT برای پنهان کردن شبکه داخلی.
  • درونی؛ داخلی- خدمات ssh، samba، mdns و dhcp مجاز هستند.
  • dmz- برای سرورهای ایزوله که به شبکه دسترسی ندارند استفاده می شود. فقط اتصالات از طریق SSH مجاز هستند.
  • کار کردن- خدمات ssh و dhcp مجاز هستند.
  • خانه- مشابه داخلی؛
  • قابل اعتماد- همه چیز مجاز است.

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

فایروالد همچنین دارای دو نوع پیکربندی است:

  • زمان اجرا- فقط تا راه‌اندازی مجدد معتبر است، تمام تغییراتی که به صراحت بیان نشده‌اند در غیر این صورت در این پیکربندی اعمال می‌شوند.
  • دائمی- تنظیمات دائمی که حتی پس از راه اندازی مجدد کار می کنند.

اکنون همه چیزهایی را که نیاز دارید می دانید، بنابراین بیایید به ابزار firewalld-cmd برویم.

نحو و گزینه های فایروال-cmd

می توانید تنظیمات فایروالد را با استفاده از ابزار کنسول فایروال-cmd یا در رابط گرافیکی مدیریت کنید. CentOS اغلب در سرورها استفاده می شود، بنابراین باید در ترمینال کار کنید. بیایید به نحو این ابزار نگاه کنیم:

گزینه های فایروال-cmd

دستور زیر برای مدیریت مناطق استفاده می شود:

firewall-cmd --configuration --zone=option zone

به عنوان پیکربندی، باید گزینه --permanent را مشخص کنید تا تغییرات پس از راه اندازی مجدد ذخیره شود یا چیزی مشخص نشود، سپس تغییرات فقط تا زمان راه اندازی مجدد معتبر خواهند بود. برای منطقه، از نام منطقه مورد نظر استفاده کنید. بیایید به گزینه های کاربردی نگاه کنیم:

  • --حالت- نمایش وضعیت فایروال
  • -- بارگذاری مجدد- بارگذاری مجدد قوانین از پیکربندی دائمی؛
  • --کامل-بارگذاری مجدد- راه اندازی مجدد سخت قوانین با قطع تمام اتصالات.
  • -- زمان اجرا تا دائمی- تنظیمات پیکربندی زمان اجرا را به پیکربندی دائمی منتقل کنید.
  • -- دائمی- از یک پیکربندی دائمی استفاده کنید.
  • --get-default-zone- نمایش منطقه پیش فرض؛
  • --set-default-zone- تنظیم منطقه پیش فرض؛
  • - مناطق فعال را دریافت کنید- نمایش مناطق فعال؛
  • - مناطق دریافت- نمایش تمام مناطق موجود؛
  • -- دریافت خدمات- نمایش خدمات از پیش تعریف شده؛
  • --list-all-zones- نمایش پیکربندی تمام مناطق؛
  • -- منطقه جدید- ایجاد یک منطقه جدید؛
  • --حذف-منطقه- حذف یک منطقه؛
  • --list-all- نمایش همه چیزهایی که از منطقه انتخاب شده اضافه شده است.
  • -- لیست خدمات- نمایش تمام خدمات اضافه شده به منطقه؛
  • --افزودن-سرویس- اضافه کردن یک سرویس به منطقه؛
  • --حذف-سرویس- سرویس را از منطقه حذف کنید.
  • --list-ports- پورت های نمایش اضافه شده به منطقه؛
  • --add-port- یک پورت به منطقه اضافه کنید.
  • --remove-port- پورت را از منطقه خارج کنید.
  • -- query-port- نشان دهد که آیا بندر به منطقه اضافه شده است یا خیر.
  • --list-protocols- پروتکل های نمایش اضافه شده به منطقه؛
  • --add-protocol- یک پروتکل به منطقه اضافه کنید.
  • --حذف-پروتکل- پروتکل را از منطقه حذف کنید.
  • --list-source-ports- نمایش پورت های منبع اضافه شده به منطقه؛
  • --add-source-port- یک پورت منبع را به منطقه اضافه کنید.
  • --remove-source-port- پورت منبع را از منطقه حذف کنید.
  • --list-icmp-blocks- نمایش لیستی از مسدود کردن icmp.
  • --add-icmp-block- اضافه کردن مسدود کردن icmp.
  • --add-icmp-block- مسدود کردن icmp را حذف کنید.
  • --add-forward-port- یک پورت برای تغییر مسیر به NAT اضافه کنید.
  • --remove-forward-port- پورت را برای تغییر مسیر به NAT حذف کنید.
  • --افزودن-بالماسکه- فعال کردن NAT؛
  • -- حذف - بالماسکه- حذف NAT

اینها همه گزینه های ابزار نیستند، اما برای این مقاله برای ما کافی خواهند بود.

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

1. وضعیت فایروال

اولین قدم این است که به وضعیت فایروال نگاه کنید. برای انجام این کار، اجرا کنید:

فایروال وضعیت sudo systemctl

اگر سرویس فایروالد غیرفعال است، باید آن را فعال کنید:

فایروال راه اندازی sudo systemctl
sudo systemctl فایروال را فعال می کند

اکنون باید ببینید آیا فایروال با استفاده از دستور firewall-cmd اجرا می شود یا خیر:

sudo firewall-cmd --state

اگر برنامه در حال اجرا باشد و همه چیز خوب باشد، پیام "در حال اجرا" را دریافت خواهید کرد.

2. مدیریت منطقه

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

sudo firewall-cmd --get-default-zone

در مورد من، این منطقه عمومی است. می توانید منطقه فعلی را با استفاده از گزینه --set-default-zone تغییر دهید:

sudo firewall-cmd --set-default-zone=public

برای مشاهده اینکه کدام مناطق برای همه رابط های شبکه استفاده می شوند، اجرا کنید:

sudo firewall-cmd --get-active-zones

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

3. راه اندازی خدمات

با دستور زیر می توانید تمام سرویس های از پیش تعریف شده را مشاهده کنید:

sudo firewall-cmd --get-services

این دستور همه سرویس های موجود را فهرست می کند، می توانید هر یک از آنها را به منطقه اضافه کنید تا اجازه دهید. به عنوان مثال، اجازه دهید یک اتصال به http:

sudo firewall-cmd --zone=public --add-service=http --permanent

و برای حذف این سرویس، اجرا کنید:

sudo firewall-cmd --zone=public --remove-service=http --permanent

در هر دو مورد، ما از گزینه --permanent استفاده کردیم تا اطمینان حاصل کنیم که پیکربندی در طول راه اندازی مجدد ادامه دارد. پس از تغییرات باید قوانین را به روز کنید:

sudo firewall-cmd --reload

سپس، اگر به پیکربندی منطقه نگاه کنید، سرویس اضافه شده در آنجا ظاهر می شود:

sudo firewall-cmd --zone=public --list-all

4. نحوه باز کردن پورت در فایروالد

اگر هیچ سرویسی برای برنامه مورد نیاز شما وجود ندارد، می توانید پورت آن را به صورت دستی باز کنید. برای این کار کافی است پورت مورد نظر را به زون اضافه کنید. به عنوان مثال پورت 8083:

sudo firewall-cmd --zone=public --add-port=8083/tcp --permanent

برای حذف این پورت از ناحیه، اجرا کنید:

sudo firewall-cmd --zone=public --remove-port=8083/tcp --permanent

مشابه خدمات، برای باز کردن پورت در فایروال centos 7، باید فایروال را مجددا راه اندازی کنید.

sudo firewall-cmd --reload

5. انتقال پورت فایروال

پیکربندی پورت پروب در فایروالد بسیار ساده تر از iptables است. اگر به عنوان مثال نیاز به تغییر مسیر ترافیک از پورت 2223 به پورت 22 دارید، فقط یک تغییر مسیر به منطقه اضافه کنید:

sudo firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22

در اینجا تغییر مسیر فقط در ماشین فعلی انجام می شود. اگر می‌خواهید یک شبکه NAT راه‌اندازی کنید و یک پورت را به دستگاه دیگری ارسال کنید، ابتدا باید پشتیبانی maskarede را فعال کنید:

sudo firewall-cmd --zone=public --add-masquerade

سپس می توانید پورت را اضافه کنید:

sudo firewall-cmd --zone=public --add-forward-port=port=2223:proto=tcp:toport=22:toaddr=192.168.56.4

6. قوانین پیشرفته

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

قانون خانواده = "خانواده" منبع ارزش مقصد ورود به سیستم اقدام حسابرسی

در اینجا معانی پارامترهای اصلی آمده است:

  • مانند خانواده های پروتکلیشما می توانید ipv4 یا ipv6 را مشخص کنید یا چیزی را مشخص نکنید، سپس این قانون برای هر دو پروتکل اعمال می شود.
  • منبعو مقصدفرستنده و گیرنده بسته است. این پارامترها می توانند آدرس IP، نام سرویس، پورت، پروتکل و غیره باشند.
  • ورود به سیستم- به شما اجازه می دهد تا عبور بسته ها را وارد کنید، به عنوان مثال در syslog. در این تنظیمات، شما می توانید پیشوند خط ورود به سیستم و سطح جزئیات ورود به سیستم را مشخص کنید.
  • حسابرسی- این یک روش ورود به سیستم جایگزین است که در آن پیام ها به سرویس ممیزی شده ارسال می شود.
  • عملعملی است که باید روی بسته منطبق انجام شود. موجود: قبول، رها کردن، رد کردن، علامت گذاری.

بیایید به چند نمونه نگاه کنیم. ما باید دسترسی به سرور را برای کاربر با IP 135.152.53.5 مسدود کنیم:

sudo firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" source address=135.152.53.5 reject"

یا باید از دسترسی همان کاربر به پورت 22 جلوگیری کنیم:

sudo firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" source address=135.152.53.5 port=22 protocol=tcp reject"

شما می توانید تمام قوانین توسعه یافته را با دستور مشاهده کنید:

sudo firewall-cmd --list-rich-rules

نتیجه گیری

در این مقاله، نحوه پیکربندی فایروال در CentOS 7 و کارهایی را که می توان با استفاده از آن انجام داد، بررسی کردیم. استفاده از این برنامه بسیار ساده تر از iptables است، اما به نظر من استفاده از افزونه فایروال اوبونتو حتی آسان تر است.

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

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

اصول اولیه فایروال

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

  • قابل اعتماد - حداکثر سطح اعتماد در همه دستگاه های شبکه؛
  • خانه - گروه شبکه محلی. اعتماد به محیط وجود دارد، اما اتصالات ورودی فقط برای ماشین‌های خاصی در دسترس است.
  • محل کار - محل کار. در اکثر دستگاه ها اعتماد وجود دارد و خدمات اضافی فعال می شوند.
  • dmz منطقه ای برای کامپیوترهای ایزوله است. چنین دستگاه هایی از بقیه شبکه جدا می شوند و فقط ترافیک ورودی خاصی را مجاز می دانند.
  • داخلی - منطقه شبکه های داخلی. اعتماد به همه ماشین ها اعمال می شود، خدمات اضافی باز می شود.
  • خارجی - معکوس منطقه قبلی. در شبکه های خارجی، پوشش NAT فعال است، شبکه داخلی را می بندد، اما امکان دسترسی را مسدود نمی کند.
  • عمومی - منطقه ای از شبکه های عمومی با بی اعتمادی به همه دستگاه ها و دریافت فردی از ترافیک ورودی.
  • مسدود کردن - تمام درخواست های دریافتی با یک خطا ارسال می شوند icmp-host-prohibitedیا icmp6-adm-prohibited;
  • افت - حداقل سطح اعتماد. اتصالات ورودی بدون هیچ اطلاعیه ای قطع می شوند.

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

فعال کردن FirewallD

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

  1. کلاسیک را راه اندازی کنید "پایانه"هر روش راحت، به عنوان مثال، از طریق منو "برنامه های کاربردی".
  2. دستور sudo systemctl start firewalld.service را وارد کرده و کلید را فشار دهید وارد.
  3. این ابزار از طرف سوپرکاربر مدیریت می شود، بنابراین باید با وارد کردن رمز عبور، صحت خود را تأیید کنید.
  4. برای اطمینان از عملکرد سرویس، فایروال-cmd --state را مشخص کنید.
  5. در پنجره گرافیکی باز شده، دوباره صحت خود را تایید کنید.
  6. یک خط جدید نمایش داده خواهد شد. معنی "دویدن"نشان می دهد که فایروال کار می کند.

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

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

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

  1. دستور firewall-cmd --get-default-zone به شما کمک می کند تا منطقه پیش فرض را تعیین کنید.
  2. پس از فعال سازی، خط جدیدی را مشاهده می کنید که در آن پارامتر مورد نیاز نمایش داده می شود. به عنوان مثال، در تصویر زیر، منطقه فعال در نظر گرفته شده است "عمومی".
  3. با این حال، چندین منطقه می توانند به طور همزمان فعال باشند، و آنها با یک رابط جداگانه مرتبط هستند. این اطلاعات را از طریق فایروال-cmd -get-active-zones بیابید.
  4. دستور firewall-cmd --list-all قوانین پیکربندی شده برای ناحیه پیش فرض را نمایش می دهد. به اسکرین شات زیر نگاهی بیندازید. می بینید که منطقه فعال است "عمومی"قانون تعیین شده "پیش فرض"- عملیات پیش فرض، رابط "enp0s3"و دو سرویس اضافه شد.
  5. اگر می خواهید تمام مناطق فایروال موجود را بیابید، فایروال-cmd --get-zones را وارد کنید.
  6. پارامترهای یک منطقه خاص از طریق فایروال-cmd --zone=name --list-all تعیین می شوند. نام- نام منطقه

پس از تعیین پارامترهای لازم می توانید نسبت به تغییر و افزودن آنها اقدام کنید. بیایید نگاهی دقیق تر به چند مورد از محبوب ترین پیکربندی ها بیندازیم.

راه اندازی مناطق رابط

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

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

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

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

  1. با تایپ sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0، فایل پیکربندی را از طریق یک ویرایشگر باز کنید. eth0- نام رابط مورد نیاز.
  2. برای ادامه، اعتبار حساب خود را تأیید کنید.
  3. پارامتر را پیدا کنید "ZONE"و مقدار آن را به مقدار دلخواه تغییر دهید، به عنوان مثال، عمومی یا خانگی.
  4. کلیدها را نگه دارید Ctrl+Oبرای ذخیره تغییرات
  5. نام فایل را تغییر ندهید، فقط روی آن کلیک کنید وارد.
  6. از ویرایشگر متن خارج شوید Ctrl+X.

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

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

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

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

ایجاد قوانین برای برنامه ها و برنامه های کاربردی

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

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

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

SSH
Secure Shell (SSH) پروتکلی برای ورود به سیستم و اجرای دستورات در ماشین های راه دور است. ارتباطات رمزگذاری شده ایمن را فراهم می کند. اگر قصد دارید از راه دور از طریق SSH از طریق یک رابط فایروال به دستگاه خود دسترسی داشته باشید، این گزینه را فعال کنید. برای مفید بودن این گزینه به بسته openssh-server نصب شده نیاز دارید.

پشتیبانی سرویس در یک منطقه خاص به صورت دستی فعال می شود. که در "پایانه"شما باید دستور sudo firewall-cmd --zone=public --add-service=http را صادر کنید که در آن --zone=عمومی- منطقه برای فعال سازی، و --add-service=http- نام سرویس لطفاً توجه داشته باشید که چنین تغییری فقط برای یک جلسه اعمال می شود.

اضافه کردن دائمی از طریق sudo firewall-cmd --zone=public --permanent --add-service=http و نتیجه انجام می شود "موفقیت"نشان دهنده اتمام موفقیت آمیز عملیات است.

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

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

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

پورت حمل و نقل

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

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

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

تعریف خدمات

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


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

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

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


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

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

FirewallD یک ابزار مدیریت فایروال است که به طور پیش‌فرض در سرورهای CentOS 7 موجود است. اساساً یک بسته‌بندی در اطراف IPTables است و با یک ابزار پیکربندی گرافیکی، Firewall-config و یک ابزار خط فرمان، firewall-cmd ارائه می‌شود. با سرویس IPtables، هر تغییری مستلزم حذف قوانین قدیمی و ایجاد قوانین جدید در فایل ` است /etc/sysconfig/iptables`، و با فایروال فقط تفاوت ها اعمال می شود.

مناطق فایروالD

FirewallD از سرویس ها و مناطق به جای قوانین و زنجیره ها در Iptables استفاده می کند. به طور پیش فرض، مناطق زیر در دسترس هستند:

  • رها کردن- تمام بسته های شبکه ورودی را بدون پاسخ رها کنید، فقط اتصالات شبکه خروجی در دسترس هستند.
  • مسدود کردن– تمام بسته های شبکه ورودی با پیام icmp-host-prohibited را رد کنید، فقط اتصالات شبکه خروجی مجاز است.
  • عمومی- فقط اتصالات ورودی انتخاب شده برای استفاده در مناطق عمومی پذیرفته می شود
  • خارجی– برای شبکه‌های خارجی با ماسکه، فقط اتصالات ورودی انتخابی پذیرفته می‌شود.
  • dmz- منطقه غیرنظامی DMZ، در دسترس عموم با دسترسی محدود به شبکه داخلی، فقط اتصالات ورودی انتخابی پذیرفته می شود.
  • کار کردن
  • خانه- برای رایانه های موجود در منطقه اصلی، فقط اتصالات ورودی انتخاب شده پذیرفته می شود.
  • درونی؛ داخلی- برای رایانه های موجود در شبکه داخلی شما، فقط اتصالات ورودی انتخاب شده پذیرفته می شود.
  • قابل اعتماد- تمامی اتصالات شبکه پذیرفته می شود.

برای دریافت لیستی از تمام مناطق موجود:

# فایروال-cmd --get-zones کار می کنند بلوک عمومی dmz خانه مورد اعتماد خارجی داخلی را حذف می کنند

برای مشاهده لیستی از مناطق پیش فرض:

# فایروال-cmd --get-default-zone public

برای تغییر منطقه پیش فرض:

خدمات فایروال

سرویس های FirewallD فایل های پیکربندی XML حاوی اطلاعات ورودی سرویس برای فایروال هستند. برای دریافت لیست تمام خدمات موجود:

# فایروال-cmd --get-services amanda-client amanda-k5-client bacula bacula-client ceph ceph-mon dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync freeipa-ldap freeipa-ldaps freeipa-replicationability بالا http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mosh mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmbadhspixy ptp pulseaudio puppetmaster radius rpc-bind rsyncd samba samba-client sane smtp smtps snmp snmptrap squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client

فایل های پیکربندی XML در دایرکتوری ها ذخیره می شوند /usr/lib/firewalld/services/و /etc/firewalld/services/.

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

به عنوان مثال، در اینجا نحوه پیکربندی فایروال با FirewallD در صورتی که از وب سرور، SSH در پورت 7022 و سرور ایمیل استفاده می کنید، توضیح داده شده است.

ابتدا منطقه پیش فرض را برای DMZ تنظیم می کنیم.

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

برای افزودن قوانین سرویس پایدار برای HTTP و HTTPS در DMZ، دستور زیر را اجرا کنید:

# firewall-cmd --zone=dmz --add-service=http --permanent # firewall-cmd --zone=dmz --add-service=https --permanent

پورت 25 (SMTP) و پورت 465 (SMTPS) را باز کنید:

فایروال-cmd --zone=dmz --add-service=smtp --فایروال دائمی-cmd --zone=dmz --add-service=smtps -- دائمی

درگاه های باز، IMAP، IMAPS، POP3 و POP3S:

فایروال-cmd --zone=dmz --add-service=imap --فایروال دائمی-cmd --zone=dmz --add-service=imaps --فایروال دائمی-cmd --zone=dmz --add-service= pop3 -- فایروال دائمی-cmd --zone=dmz --add-service=pop3s --دائمی

از آنجایی که پورت SSH به 7022 تغییر یافته است، سرویس SSH (پورت 22) را حذف می کنیم و پورت 7022 را باز می کنیم.

فایروال-cmd --remove-service=ssh -- فایروال دائمی-cmd --add-port=7022/tcp -- دائمی

برای اعمال تغییرات باید فایروال را مجددا راه اندازی کنیم:

فایروال-cmd -- بارگیری مجدد

در نهایت، می توانید قوانین را فهرست کنید.

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

این مقاله بخشی از یک سری مقالات در مورد سرور است.

معرفی

Iptables در حال حاضر استاندارد واقعی در میان توزیع‌های لینوکس مدرن است. من حتی نمی‌توانم دقیقاً به یاد بیاورم که چه چیز دیگری به عنوان فایروال استفاده می‌شود. بنابراین هر مدیر لینوکس باید با راه اندازی این فایروال در کار خود سر و کار داشته باشد.

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

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

من قبلاً در تاپیک در مورد غیرفعال کردن فایروالد صحبت کرده ام. اول از همه، اجازه دهید فایروال را که به طور پیش فرض در centos 7 بلافاصله پس از نصب وجود دارد، غیرفعال کنیم:

# systemctl فایروال توقف

حالا بیایید آن را از راه اندازی حذف کنیم تا پس از راه اندازی مجدد دوباره روشن نشود:

# systemctl فایروال را غیرفعال کنید

پس از این، تنظیمات فایروال روی سرور کاملاً باز می شود. می توانید قوانین iptables را با دستور زیر مشاهده کنید:

نصب iptables

در واقع، ما قبلاً یک فایروال روی سرور خود داریم و کار می کند، به سادگی هیچ قانونی وجود ندارد، همه چیز باز است. ما نیاز به نصب ابزارهای مدیریتی اضافی داریم که بدون آنها پیکربندی iptables غیرممکن است. به عنوان مثال، راه اندازی مجدد فایروال امکان پذیر نخواهد بود:

# systemctl راه اندازی مجدد iptables.service فراخوانی روش صادر نشد: واحد iptables.service بارگیری نشد: چنین فایل یا فهرستی وجود ندارد.

یا نمی توانید آن را به autorun اضافه کنید:

# systemctl enable iptables.service فراخوانی روش صادر نشد: چنین فایل یا دایرکتوری وجود ندارد

برای جلوگیری از چنین خطاهایی، بسته لازم را با برنامه های کاربردی نصب کنید:

# yum -y iptables-services را نصب کنید

اکنون می توانید iptables را به راه اندازی و اجرا اضافه کنید:

# systemctl فعال iptables.service # systemctl راه اندازی iptables.service

راه اندازی فایروال

من از یک اسکریپت برای مدیریت قوانین فایروال استفاده می کنم. بیایید آن را ایجاد کنیم:

# mcedit /etc/iptables.sh

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

ما وضعیتی را در نظر خواهیم گرفت که در آن سرور یک دروازه به اینترنت برای یک شبکه محلی است.

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

قبل از اعمال قوانین جدید، همه زنجیره ها را پاک می کنیم:

ما تمام ترافیکی را که با هیچ یک از قوانین مطابقت ندارد مسدود می کنیم:

اجازه دادن به همه لوکال هاست و ترافیک محلی:

ما پینگ را مجاز می کنیم:

اگر به این نیاز ندارید، قوانین مجاز را برای icmp اضافه نکنید.

ما دسترسی به اینترنت را به خود سرور باز می کنیم:

اگر می خواهید تمام اتصالات سرور ورودی را باز کنید، قانون زیر را اضافه کنید:

حالا بیایید حفاظت در برابر رایج ترین حملات شبکه را اضافه کنیم. ابتدا، بیایید تمام بسته هایی که وضعیت ندارند را دور بریزیم:

مسدود کردن بسته های پوچ:

محافظت از خود در برابر حملات syn-flood:

اگر محدودیت‌هایی برای دسترسی از شبکه محلی تعیین نکنید، ما به همه اجازه می‌دهیم به اینترنت دسترسی داشته باشند:

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

برای اینکه شبکه محلی ما از اینترنت استفاده کند، nat را فعال می کنیم:

برای اینکه دسترسی به سرور را از دست ندهید، پس از اعمال قوانین، اتصالات از طریق ssh را مجاز می کنیم:

و در پایان قوانین را یادداشت می کنیم تا پس از راه اندازی مجدد اعمال شوند:

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

اسکریپت را ذخیره کنید، آن را قابل اجرا کنید و اجرا کنید:

# chmod 0740 /etc/iptables.sh # /etc/iptables.sh

بیایید قوانین را مرور کنیم و بررسی کنیم که آیا همه قوانین وجود دارند یا خیر:

# iptables -L -v -n

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

باز کردن پورت ها

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

مجوز برای اتصالات ورودی در پورت های 80 و 443 اضافه شده است که وب سرور در کار خود از آنها استفاده می کند.

اگر یک سرور ایمیل نصب کرده اید، باید اتصالات ورودی به آن را در همه پورت های استفاده شده مجاز کنید:

برای اینکه سرور DNS به درستی کار کند، باید پورت UDP 53 را باز کنید

پورت حمل و نقل

بیایید وضعیتی را در نظر بگیریم که در آن لازم است پورت ها از یک رابط خارجی به رایانه ای در شبکه محلی منتقل شوند. فرض کنید باید از اینترنت به کامپیوتر 10.1.3.50 دسترسی rdp داشته باشید. پورت TCP 3389 را ارسال می کنیم:

اگر نمی خواهید یک پورت شناخته شده را از بیرون در معرض دید قرار دهید، می توانید از یک پورت غیر استاندارد به پورت rdp کامپیوتر مورد نظر هدایت شوید:

اگر پورتی را از خارج به شبکه محلی فوروارد می کنید، حتماً قوانینی را که دسترسی از شبکه خارجی به شبکه داخلی را مسدود می کند، نظر دهید. در مثال من این قانون این است: $IPT -A FORWARD -i $WAN -o $LAN1 -j REJECT

یا قبل از این قانون، یک قانون مجاز برای دسترسی خارجی به سرویس داخلی ایجاد کنید، به عنوان مثال:

$IPT -A FORWARD -i $WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT

فعال کردن گزارش‌ها

در طول راه‌اندازی، فعال کردن گزارش‌ها برای نظارت بر بسته‌های مسدود شده و یافتن دلیل عدم دسترسی به خدمات ضروری که به نظر می‌رسد قبلاً باز کرده‌ایم، مفید است. من تمام بسته های مسدود شده را به زنجیره های جداگانه (block_in، block_out، block_fw) مربوط به جهت ترافیک می فرستم و هر جهت را در گزارش ها علامت گذاری می کنم. این باعث می‌شود که انجام توضیحات راحت‌تر باشد. قبل از ذخیره تنظیمات، قوانین زیر را به انتهای اسکریپت اضافه کنید:

می توانید تمام بسته های مسدود شده را در فایل /var/log/messages ردیابی کنید.

پس از اتمام راه‌اندازی، این خطوط را نظر دهید و ورود به سیستم را غیرفعال کنید. مطمئناً ارزش انجام این کار را دارد، زیرا سیاهههای مربوط به سرعت رشد می کنند. من شخصاً هیچ معنای عملی در ذخیره چنین اطلاعاتی نمی بینم.

نحوه غیرفعال کردن iptables

اگر به طور ناگهانی تصمیم گرفتید که دیگر به فایروال نیاز ندارید، می توانید آن را به صورت زیر غیرفعال کنید:

# systemctl iptables.service را متوقف کنید

این دستور فایروال را متوقف می کند. و موارد زیر آن را از راه اندازی حذف می کند:

# systemctl iptables.service را غیرفعال کنید

با غیرفعال کردن فایروال، همه اتصالات را مجاز کردیم.

نتیجه

همانطور که قول داده بودم، یک اسکریپت تمام شده با مجموعه قوانین اساسی که در نظر گرفته ایم را ارسال می کنم

من می خواهم یک بار دیگر اشاره کنم که هنگام تنظیم iptables باید بسیار مراقب باشید. اگر به کنسول سرور دسترسی ندارید، این تجارت را راه اندازی نکنید. حتی در حین نوشتن این مقاله، به دلیل یک اشتباه مضحک در قوانین، دسترسی به سرور را از دست دادم. این خطا به دلیل کپی کردن و از دست دادن یک خط تیره ایجاد شد - با یک تک جایگزین شد.

دوره آنلاین "Linux Administrator" در OTUS. این دوره برای مبتدیان نیست؛ برای ثبت نام نیاز به دانش اولیه در مورد شبکه و نصب لینوکس بر روی ماشین مجازی دارید. این دوره آموزشی 5 ماه طول می کشد و پس از آن فارغ التحصیلان موفق دوره می توانند با شرکای خود مصاحبه کنند. آنچه این دوره به شما می دهد:

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

مناطق

دیمون فایروالد گروه هایی از قوانین را با استفاده از مناطق به اصطلاح مدیریت می کند.

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

رایانه هایی که اغلب به شبکه های مختلف (مانند لپ تاپ) متصل می شوند، می توانند از مناطق برای تغییر مجموعه قوانین بسته به محیط استفاده کنند. به عنوان مثال، هنگام اتصال به یک شبکه WiFi عمومی، فایروال ممکن است قوانین سخت گیرانه تری را اعمال کند، اما در شبکه خانگی، محدودیت ها را کاهش دهید.

فایروال دارای مناطق زیر است:

  • افت: پایین ترین سطح اعتماد شبکه. تمام ترافیک ورودی بدون پاسخ حذف می شود، فقط اتصالات خروجی پشتیبانی می شوند.
  • بلوک: این منطقه مشابه منطقه قبلی است، اما درخواست های دریافتی با پیام icmp-host-prohibited یا icmp6-adm-prohibited حذف می شوند.
  • public: این ناحیه نشان دهنده یک شبکه عمومی است که نمی توان به آن اعتماد کرد، اما به اتصالات ورودی به صورت خصوصی اجازه می دهد.
  • خارجی: منطقه شبکه خارجی. از پوشش NAT پشتیبانی می کند، بنابراین شبکه داخلی بسته باقی می ماند اما همچنان قابل دسترسی است.
  • داخلی: سمت معکوس منطقه خارجی، شبکه های داخلی. کامپیوترهای این منطقه قابل اعتماد هستند. خدمات اضافی در دسترس است.
  • dmz: برای رایانه های واقع در DMZ (رایانه های ایزوله ای که به بقیه شبکه دسترسی ندارند) استفاده می شود. فقط برخی از اتصالات ورودی را پشتیبانی می کند.
  • کار: منطقه شبکه کار. بیشتر ماشین های موجود در شبکه قابل اعتماد هستند. خدمات اضافی در دسترس است.
  • خانه: منطقه شبکه خانگی. محیط قابل اعتماد است، اما فقط اتصالات ورودی تعریف شده توسط کاربر پشتیبانی می شود.
  • اعتماد: همه ماشین های موجود در شبکه قابل اعتماد هستند.

قوانین ذخیره سازی

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

اکثر دستورات فایروال-cmd می توانند از پرچم --permanent استفاده کنند که این قانون را ذخیره می کند و پس از آن برای همیشه استفاده می شود.

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

ابتدا باید دیمون را فعال کنید. فایل واحد systemd firewalld.service نامیده می شود. برای شروع دیمون، وارد شوید.

sudo systemctl راه اندازی firewalld.service

مطمئن شوید که سرویس در حال اجرا است:

فایروال-cmd --state
در حال اجرا

فایروال اکنون مطابق پیکربندی پیش فرض خود راه اندازی شده و اجرا می شود.

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

قوانین فایروال پیش فرض

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

برای اینکه بفهمید کدام منطقه پیش فرض است، وارد کنید:

فایروال-cmd --get-default-zone
عمومی

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

برای دریافت لیست مناطق فعال، وارد کنید:


عمومی
رابط ها: eth0 eth1

دو رابط شبکه مرتبط با منطقه عمومی وجود دارد: eth0 و eth1. رابط های محدود شده به یک منطقه بر اساس قوانین آن منطقه عمل می کنند.

برای مشاهده اینکه یک منطقه به طور پیش فرض از چه قوانینی استفاده می کند، وارد کنید:

فایروال-cmd --list-all
عمومی (پیش‌فرض، فعال)
رابط ها: eth0 eth1
منابع:
خدمات: dhcpv6-client ssh
پورت ها:
بالماسکه: نه
فوروارد پورت ها:
icmp-blocks:
قوانین غنی:

بنابراین اکنون می دانید که:

  • public منطقه پیش فرض و تنها منطقه فعال است.
  • رابط های eth0 و eth1 به آن متصل هستند.
  • از ترافیک DHCP (تخصیص آدرس IP) و SSH (مدیریت از راه دور) پشتیبانی می کند.

سایر مناطق فایروال

اکنون باید با مناطق دیگر آشنا شوید.

برای دریافت لیستی از تمام مناطق موجود، وارد کنید:

فایروال-cmd --get-zones

برای دریافت پارامترهای یک منطقه خاص، پرچم --zone= را به دستور اضافه کنید.

فایروال-cmd --zone=home --list-all
خانه
رابط ها:
منابع:
خدمات: dhcpv6-client ipp-client mdns samba-client ssh
پورت ها:
بالماسکه: نه
فوروارد پورت ها:
icmp-blocks:
قوانین غنی:

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

فایروال-cmd --list-all-zones | کمتر

راه اندازی مناطق رابط

در ابتدا، تمام رابط های شبکه به منطقه پیش فرض اختصاص داده می شوند.

تغییر ناحیه رابط برای یک جلسه

برای انتقال یک رابط به منطقه دیگر برای یک جلسه، از گزینه های --zone= و --change-interface= استفاده کنید.

به عنوان مثال، برای انتقال eth0 به منطقه اصلی، باید وارد کنید:

sudo firewall-cmd --zone=home --change-interface=eth0
موفقیت

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

برای اطمینان از اینکه رابط به منطقه جدید متصل است، وارد کنید:

فایروال-cmd --get-active-zones
خانه
رابط ها: eth0
عمومی
رابط ها: eth1

پس از راه اندازی مجدد فایروال، رابط به منطقه پیش فرض باز می گردد.

sudo systemctl راه اندازی مجدد firewalld.service
فایروال-cmd --get-active-zones
عمومی
رابط ها: eth0 eth1

تغییر منطقه رابط به طور دائم

اگر هیچ منطقه دیگری در تنظیمات رابط مشخص نشده باشد، پس از راه اندازی مجدد فایروال، اینترفیس به منطقه پیش فرض باز می گردد. در CentOS، چنین تنظیماتی در پوشه /etc/sysconfig/network-scripts، در فایل‌هایی با فرمت ifcfg-interface ذخیره می‌شوند.

برای تعریف ناحیه یک رابط، فایل پیکربندی آن رابط را باز کنید، به عنوان مثال:

در انتهای فایل، متغیر ZONE= را اضافه کنید و ناحیه دیگری را به عنوان مقدار مشخص کنید، برای مثال home:

. . .
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=خانه

ذخیره کنید و فایل را ببندید.

برای به روز رسانی تنظیمات، سرویس شبکه و فایروال را مجددا راه اندازی کنید:

sudo systemctl راه اندازی مجدد network.service
sudo systemctl راه اندازی مجدد firewalld.service

پس از راه اندازی مجدد، رابط eth0 به منطقه اصلی اختصاص داده می شود.

فایروال-cmd --get-active-zones
خانه
رابط ها: eth0
عمومی
رابط ها: eth1

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

همچنین می توانید یک منطقه پیش فرض متفاوت را انتخاب کنید.

برای این کار از پارامتر --set-default-zone= استفاده کنید. پس از این، تمام اینترفیس ها به منطقه دیگری اختصاص داده می شوند:

sudo firewall-cmd --set-default-zone=home
خانه
رابط ها: eth0 eth1

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

اضافه کردن یک سرویس به یک منطقه

ساده ترین راه اضافه کردن یک سرویس یا پورت به منطقه ای است که فایروال استفاده می کند. مشاهده خدمات موجود:

فایروال-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp در دسترس بودن بالا http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt mountnpdnt my پروکسی pmcd pm pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

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



SSH

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

به عنوان مثال، برای اجرای یک وب سرور برای سرویس دهی به ترافیک HTTP، ابتدا باید پشتیبانی از این ترافیک را در منطقه عمومی برای یک جلسه فعال کنید:

sudo firewall-cmd --zone=public --add-service=http

اگر سرویس باید به منطقه پیش فرض اضافه شود، می توان پرچم --zone= را حذف کرد.

بررسی موفقیت آمیز بودن عملیات:

firewall-cmd --zone=public --list-services
dhcpv6-client http ssh

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

sudo firewall-cmd --zone=public --permanent --add-service=http

برای مشاهده لیستی از قوانین دائمی، وارد کنید:

sudo firewall-cmd --zone=public --permanent --list-services
dhcpv6-client http ssh

اکنون منطقه عمومی از HTTP و پورت 80 به طور دائم پشتیبانی می کند. اگر وب سرور می تواند ترافیک SSL/TLS را ارائه کند، می توانید سرویس https را نیز اضافه کنید (برای یک جلسه یا به مجموعه ای از قوانین پایدار):

sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --permanent --add-service=https

اگر سرویس مورد نیاز در دسترس نباشد چه باید کرد؟

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

روش 1: تنظیم پورت

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

به عنوان مثال، برنامه ای که از پورت 5000 و پروتکل TCP استفاده می کند باید به منطقه عمومی اضافه شود. برای فعال کردن پشتیبانی برنامه برای جلسه پایین، از پارامتر --add-port= استفاده کنید و پروتکل tcp یا udp را مشخص کنید.

sudo firewall-cmd --zone=public --add-port=5000/tcp

بررسی موفقیت آمیز بودن عملیات:

فایروال-cmd --list-ports
5000/tcp

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

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

پس از تست، می توانید این قوانین را به تنظیمات دائمی فایروال خود اضافه کنید.

sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
sudo firewall-cmd --zone=public --permanent --list-ports
موفقیت
موفقیت
4990-4999/udp 5000/tcp

روش 2: تعریف یک سرویس

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

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

ابتدا باید اسکریپت موجود را از پوشه /usr/lib/firewalld/services در پوشه /etc/firewalld/services کپی کنید (این جایی است که فایروال به دنبال تنظیمات غیر استاندارد می گردد).

به عنوان مثال، می توانید تعریف سرویس SSH را کپی کنید و از آن برای تعریف یک سرویس مثال شرطی استفاده کنید. نام اسکریپت باید با نام سرویس مطابقت داشته باشد و پسوند xml. داشته باشد.

sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

فایل کپی شده را ویرایش کنید.

sudo nano /etc/firewalld/services/example.xml

فایل حاوی تعریف SSH است:



SSH
Secure Shell (SSH) پروتکلی برای ورود به سیستم و اجرای دستورات در ماشین های راه دور است. ارتباطات رمزگذاری شده ایمن را فراهم می کند. اگر قصد دارید از راه دور از طریق SSH از طریق یک رابط فایروال به دستگاه خود دسترسی داشته باشید، این گزینه را فعال کنید. برای مفید بودن این گزینه به بسته openssh-server نصب شده نیاز دارید.

بخش بزرگی از تعریف یک سرویس، ابرداده است. می توانید نام کوتاه سرویس را در برچسب ها تغییر دهید . این نام سرویس قابل خواندن توسط انسان است. همچنین باید توضیحاتی در مورد خدمات اضافه کنید. تنها تغییری که بر عملکرد سرویس تأثیر می گذارد، تغییر شماره پورت و پروتکل است.

بیایید به سرویس مثال برگردیم. فرض کنید نیاز به باز کردن پورت TCP 7777 و پورت UDP 8888 دارد. تعریف به شکل زیر است:



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

ذخیره کنید و فایل را ببندید.

فایروال را مجددا راه اندازی کنید:

sudo firewall-cmd --reload

این سرویس اکنون در لیست خدمات موجود ظاهر می شود:

فایروال-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns نمونه ftp با در دسترس بودن بالا http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libdvirt-motorfnts my n pmcd pmpr oxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

ایجاد مناطق

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

به عنوان مثال، می توانید یک منطقه وب عمومی برای یک وب سرور و یک منطقه خصوصی DNS برای یک سرویس DNS ایجاد کنید.

هنگامی که یک منطقه ایجاد می کنید، باید آن را به تنظیمات دائمی فایروال خود اضافه کنید.

ایجاد مناطق وب عمومی و خصوصی DNS را امتحان کنید:

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS

بررسی کنید که مناطق وجود دارند:

sudo firewall-cmd --permanent --get-zones

مناطق جدید در جلسه فعلی در دسترس نخواهند بود:

فایروال-cmd --get-zones
بلوک dmz قطره خارجی خانه داخلی داخلی کار مورد اعتماد عمومی

برای دسترسی به مناطق جدید، باید فایروال را مجددا راه اندازی کنید:

sudo firewall-cmd --reload
فایروال-cmd --get-zones
بلوک dmz رها کردن خانه خارجی داخلی privateDNS عمومی وب عمومی کار مورد اعتماد

اکنون می توانید خدمات و پورت های مورد نیاز را به مناطق جدید اختصاص دهید. به عنوان مثال، می توانید SSH، HTTP و HTTPS را به منطقه وب عمومی اضافه کنید.

sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
فایروال-cmd --zone=publicweb --list-all
وب عمومی
رابط ها:
منابع:
خدمات: http https ssh
پورت ها:
بالماسکه: نه
فوروارد پورت ها:
icmp-blocks:
قوانین غنی:

می توانید DNS را به منطقه privateDNS اضافه کنید:

sudo firewall-cmd --zone=privateDNS --add-service=dns
فایروال-cmd --zone=privateDNS --list-all
خصوصی DNS
رابط ها:
منابع:
خدمات: dns
پورت ها:
بالماسکه: نه
فوروارد پورت ها:
icmp-blocks:
قوانین غنی:

سپس می توانید رابط های شبکه را به مناطق جدید اختصاص دهید:

sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1

اکنون می توانید تنظیمات را آزمایش کنید. اگر همه چیز درست کار کند، می توانید این قوانین را به تنظیمات دائمی اضافه کنید.

sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
sudo firewall-cmd --zone=publicweb --permanent --add-service=http
sudo firewall-cmd --zone=publicweb --permanent --add-service=https
sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

سپس می توانید رابط های شبکه را طوری پیکربندی کنید که به طور خودکار به منطقه صحیح متصل شوند.

به عنوان مثال، eth0 به وب عمومی پیوند داده می شود:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
. . .
IPV6_AUTOCONF=نه
DNS1=2001:4860:4860::8844
DNS2=2001:4860:4860::8888
DNS3=8.8.8.8
ZONE=وب عمومی

و رابط eth1 به privateDNS محدود می شود:

sudo nano /etc/sysconfig/network-scripts/ifcfg-eth1
. . .
NETMASK=255.255.0.0
DEFROUTE = نه
NM_CONTROLLED="بله"
ZONE=DNS خصوصی

راه اندازی مجدد خدمات شبکه و فایروال:

شبکه sudo systemctl راه اندازی مجدد
فایروال sudo systemctl راه اندازی مجدد

بررسی مناطق:

فایروال-cmd --get-active-zones
خصوصی DNS
رابط ها: eth1
وب عمومی
رابط ها: eth0

اطمینان حاصل کنید که خدمات مورد نیاز در مناطق اجرا می شود:

firewall-cmd --zone=publicweb --list-services
http htpps ssh
فایروال-cmd --zone=privateDNS --list-services
dns

مناطق کاربری کاملاً آماده استفاده هستند. می توانید هر یک از آنها را منطقه پیش فرض خود قرار دهید. مثلا:

sudo firewall-cmd --set-default-zone=publicweb

شروع خودکار فایروال

اکنون که تمام تنظیمات را بررسی کرده‌اید و مطمئن شده‌اید که همه قوانین مطابق انتظار کار می‌کنند، می‌توانید فایروال را برای شروع خودکار پیکربندی کنید.

برای این کار وارد کنید:

sudo systemctl فایروال را فعال می کند

اکنون فایروال همراه با سرور شروع می شود.

نتیجه

فایروال فایروال ابزاری بسیار انعطاف پذیر است. Zone به شما این امکان را می دهد که به سرعت خط مشی فایروال را تغییر دهید.

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

برچسب ها: ,

بهترین مقالات در این زمینه