فایروال نصب شده در سیستم عامل برای جلوگیری از عبور ترافیک غیرمجاز از طریق شبکه های کامپیوتری استفاده می شود. به صورت دستی یا به طور خودکار قوانین ویژه ای برای فایروال ایجاد می کند که مسئول کنترل دسترسی می باشند. در OS توسعه یافته در هسته لینوکس، CentOS 7 دارای یک فایروال داخلی است و با استفاده از یک فایروال مدیریت می شود. FirewallD به طور پیش فرض فعال است، و ما می خواهیم امروز در مورد تنظیمات آن صحبت کنیم.
محتوا
همانطور که در بالا ذکر شد، فایروال استاندارد در 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 فعال (یک برنامه در حال اجرا در پس زمینه) قوانین مربوط به فایروال را اعمال می کند. فعال سازی تنها با چند کلیک انجام می شود:
sudo systemctl start firewalld.service
را وارد کنید و کلید Enter را فشار دهید. firewall-cmd --state
مشخص firewall-cmd --state
. اگر یک بار به طور موقت یا دائمی دیوار آتش را غیرفعال کنید، توصیه می کنیم از دستورالعمل های ارائه شده در مقاله دیگر ما در لینک زیر استفاده کنید.
جزئیات بیشتر: فایروال را در CentOS 7 غیرفعال کنید
حتی در یک حالت منظم کار می کند، فایروال دارای قوانین خاص خود و مناطق موجود است. قبل از شروع به ویرایش خط مشی ها، توصیه می کنیم خود را با پیکربندی فعلی آشنا کنید. این کار با استفاده از دستورات ساده انجام می شود:
firewall-cmd --get-default-zone
به firewall-cmd --get-default-zone
کمک خواهد کرد. firewall-cmd --get-active-zones
. firewall-cmd --list-all
قوانینی را که برای منطقه پیش فرض تعیین شده است نمایش می دهد. تصویر زیر را ببینید شما می توانید ببینید که قانون "پیش فرض" به منطقه فعال "عمومی" اختصاص داده شده است - عملیات پیش فرض ، رابط "enp0s3" و دو سرویس اضافه شده است. firewall-cmd --get-zones
. firewall-cmd --zone=name --list-all
، که نام آن نام منطقه است. پس از تعیین پارامترهای لازم، می توانید به اصلاح و اضافه کردن آنها ادامه دهید. اجازه دهید نگاهی دقیق تر به برخی از پیکربندی های محبوب تر داشته باشیم.
همانطور که از اطلاعات بالا می دانید، هر رابط دارای منطقه پیش فرض خود است. آن را در آن باقی بماند تا زمانی که تنظیمات توسط کاربر یا برنامه نویسی تغییر یابد. ممکن است به صورت دستی انتقال واسط به منطقه را برای یک جلسه انجام دهید و با فعال کردن دستور sudo firewall-cmd --zone=home --change-interface=eth0
. نتیجه "موفقیت" نشان می دهد که انتقال موفقیت آمیز بود. به یاد بیاورید که چنین تنظیمات بلافاصله بعد از راه اندازی مجدد فایروال تنظیم مجدد می شوند.
با چنین تغییر پارامترها باید در نظر داشت که کار خدمات را می توان تنظیم مجدد کرد. بعضی از آنها در برخی مناطق، مانند SSH، عملیات را پشتیبانی نمی کنند، اگر چه در "خانه" در دسترس هستند، اما این سرویس به کار در خدمات کاربر یا خدمات خاص نمی پردازد. شما می توانید با تایپ کردن firewall-cmd --get-active-zones
شما firewall-cmd --get-active-zones
که رابط با موفقیت به یک شاخه جدید مرتبط شده firewall-cmd --get-active-zones
.
اگر می خواهید تنظیمات قبلی خود را بازنشانی کنید، فقط دیواره آتش را راه اندازی مجدد کنید: sudo systemctl restart firewalld.service
.
گاهی اوقات راحت نیست که فقط یک جلسه را به رابط کاربری تغییر دهید. در این مورد، شما باید فایل پیکربندی را ویرایش کنید تا تمام تنظیمات به صورت دائمی وارد شوند. برای انجام این کار، توصیه می کنیم از ویرایشگر متن نانو استفاده کنید که از مخزن ذخیره سازی sudo yum install nano
. باقی مانده است تا اقدامات زیر انجام شود:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
، که eth0 نام نام کاربری مورد نیاز است، باز کنید. public
یا home
. در حال حاضر منطقه رابط همان چیزی است که شما آن را مشخص کرده اید، تا ویرایش بعدی فایل پیکربندی. برای ایجاد تنظیمات به روزرسانی، اجرای 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 نام منطقه مورد نیاز است.
موفقیت این فرمان با کتیبه "موفقیت" در یک خط جداگانه نشان داده می شود. پس از آن، تمام رابط های فعلی به منطقه مشخص متصل می شوند، مگر اینکه در فایل های پیکربندی مشخص شده باشد.
در ابتدای مقاله ما درباره عملیات هر منطقه صحبت کردیم. تعریف خدمات، برنامه های کاربردی و برنامه ها در این شاخه ها به هر یک از آنها اجازه می دهد تا پارامترهای فردی را برای هر کاربر درخواست کنند. برای شروع، توصیه می کنیم خود را با لیست کامل سرویس های در حال حاضر در دسترس آشنا کنید: firewall-cmd --get-services
.
نتیجه به طور مستقیم در کنسول نمایش داده می شود. هر سرور با یک فضای جدا می شود و در لیست شما به راحتی می توانید ابزار مورد علاقه خود را پیدا کنید. اگر سرویس مورد نیاز از دست رفته باشد، باید آن را نیز نصب کرد. درباره قوانین نصب، مستندات نرم افزار رسمی را بخوانید.
دستور بالا فقط نام خدمات را نشان می دهد. اطلاعات دقیق در مورد هر یک از آنها از طریق یک فایل جداگانه در مسیر مسیر /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 نام سرویس است. توجه داشته باشید که این تغییر تنها در یک جلسه تاثیر می گذارد.
علاوه بر این، از طریق 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 = عمومی ، منطقه برای پورت است، adad-port = 0000 / tcp - شماره پورت و پروتکل. گزینه firewall-cmd --list-ports
لیستی از پورت های باز firewall-cmd --list-ports
نمایش firewall-cmd --list-ports
دهد.
اگر شما نیاز به باز کردن پورت هایی که در محدوده هستند، از خط sudo firewall-cmd --zone=public --add-port=0000-9999/udp
، whereadd-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
.
همانطور که می بینید، اضافه کردن پورت ها هیچ مشکلی ایجاد نمی کند، اما وقتی تعداد زیادی از برنامه ها استفاده می شود، این روش پیچیده است. دشوار است که تمام پورت های استفاده شده را پیگیری کنید، بدین معناست که تعریف سرویس صحیح خواهد بود:
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
کپی کنید، جایی که service.xml نام پرونده سرویس است و example.xml نام کپی آن است. sudo nano /etc/firewalld/services/example.xml
. sudo firewall-cmd --reload
. پس از آن، سرویس در لیستی از موارد موجود ظاهر می شود که می تواند از طریق firewall-cmd --get-services
. شما فقط باید مناسب ترین روش برای حل مشکل را با دسترسی به سرویس انتخاب کنید و دستورالعمل های داده شده را دنبال کنید. همانطور که می بینید، تمام اقدامات به راحتی انجام می شود و هیچ مشکلی ایجاد نمی شود.
شما قبلا می دانید که در ابتدا تعداد زیادی از مناطق مختلف با قوانین خاص در FirewallD ایجاد شده است. با این حال، موقعی که مدیر سیستم نیاز به ایجاد یک منطقه کاربری، مانند "publicweb" برای سرور وب نصب شده یا "privateDNS" برای یک سرور DNS وجود دارد. در این دو نمونه، ما علاوه بر شاخه ها را تحلیل می کنیم:
sudo firewall-cmd --permanent --new-zone=publicweb
و sudo firewall-cmd --permanent --new-zone=privateDNS
. sudo firewall-cmd --reload
آنها در دسترس خواهند بود. برای نمایش مناطق دائمی، enter sudo firewall-cmd --permanent --get-zones
. 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
. در این مقاله، شما یاد گرفتید که چگونه برای ایجاد مناطق سفارشی و اضافه کردن خدمات به آنها. ما قبلا در بالا توضیح دادیم که آنها را به طور پیش فرض تنظیم کرده و اینترفیس ها را تعیین می کنیم، فقط باید نام های صحیح را مشخص کنید. فراموش نکنید که پس از انجام تغییرات دائمی، فایروال را مجددا راه اندازی کنید.
همانطور که می بینید، فایروال FirewallD یک ابزار نسبتا بزرگ است که به شما اجازه می دهد تنظیمات انعطاف پذیر ترین دیوار آتش را تنظیم کنید. تنها به منظور اطمینان از اینکه این ابزار با سیستم راه اندازی شده و قوانین مشخص شده بلافاصله کار خود را آغاز می کنند، باقی می ماند. این کار را با دستور sudo systemctl enable firewalld
.