منبع اصلی نوشتار زیر در این لینک قرار دارد

FirewallD چیست – مفاهیم

FirewallD یا Dynamic Firewall نام فایروال جدید و جایگزین iptables برای توزیع های لینوکسی است. این فایروال به صورت پیشفرض در این فایروال در توزیع های لینوکسی وجود دارد که از systemd استفاده می کنند. تفاوت iptable و systemd در این است که، با افزودن یک Rule به iptables، لازم است تا برای اعمال شدن این Rule ها باید سرویس iptables راه اندازی مجدد شود در صورتی که در firewalld لازم نیست برای اعمال Rule ها، سرویس راه اندازی مجدد شود.

منظور از Dynamic بودن به همین این دلیل است که برای اعمال Rule نیازی به راه اندازی مجدد سرویس firewalld نیست. در توزیع CentOS,RHEL نسخه 7 و openSUSE 13 به بعد و SUSE Enterprise Linux نسخه 12 دستور firewall-cmd و ابزار گرافیکی firewall-config و YaST ابزارهایی برای مدیریت FirewallD هستند.

firewalld نام سرویسی (یا Daemon) است که اجازه تا توسط اینترفیس هایی مانند firewall-cmd و firewall-config مدیریت فایروال را انجام دهیم. در firewalld دو مفهوم Zone و Service وجود دارند. یک Zone سطحی از اعتماد (یا trust) را برای اتصال های شبکه تعریف می کند. Service سرویس هایی از پیش تعریف شده است که یک در غالب فایل های XML درون خود پورت و ماژولی که سرویس از آن استفاده می کند را تعیین می کند.

Zone ها و Service های مختلفی وجود دارند. هر Zone یک هدف خاص دارد و می توان یک یا چند اینترفیس و همچنین می توان چندین Service را برای هر Zone فعال کرد. شکل زیر نمایی از ابزار firewall-config است که نشان می دهد Zone های مختلف وجود دارد و برای هر Zone تعدادی مشابه Service وجود دارد که می توان آنها را فعال کرد.

مفهوم Zone ها در FirewallD

Zone ها مدیریت فایروال را ساده می کند. یک Zone دارای مجموعه ای از Rule ها است که بر روی بسته IP ورودی (Incoming) مطابق با آدرس مبدا ( Source Address) یا اینترفیس مبدا اعمال می شود. Zone زمانی اهمیت پیدا می کنند که یک سرور لینوکسی دارای بیش از یک اینرفیس شبکه (مانند اترنت و وایرلس) باشد و می توان هر اینترفیس را عضوی از Zone کرده و سپس Rule هایی را به Zone اختصاص داد.

در FirewallD یک Zone پیشفرض یا Defualt وجود دارد که به طور پیشفرض خود این Zone پیشفرض public نام دارد. زمانی که یک بسته IP به سیستم وارد می شود، سیستم بر اساس آدرس مبدا آن بسته، تحلیل می کند که این بسته مطعلق به کدام Zone است.

در شکل زیر از برگه Zones و از زیر پنل Zone می توان فهرست تمامی Zone ها را مشاهده کرد. همچنین public نام Zone پیشفرض است. هر Zone یک هدف خاص دارد.

 firewalld_linux_firewall_1

Zone های موجود در FirewallD

  • block تمامی اتصال های (Connections) ورودی Reject می شوند و یک پیغام icmp-host-prohibited برای IPv4 و پیغام icmp6-adm-prohibited برای IPv6 به ماشین مبدا (درخواست کننده) ارسال می شود. در این Zone تنها اتصال های شبکه ای که در همین ماشین اغاز شده اند، ممکن خواهند بود.
  • dmz برای کامپیوترهایی در یک منطقه غیر نظامی استفاده می شود. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت و احازه دسترسی محدود شده به شبکه داخلی یا Internal وجود دارد.
  • drop مانند block بوده و تنها اتصال های شبکه ای که در همین ماشین اغاز شده اند، ممکن خواهند بود با این تفاوت که دیگر پیغامی به ماشین مبدا ارسال نمی شود.
  • external برای استفاده بر روی شبکه هایی که قابلیت masquerading فعال شده است، به طور خاص بر روی روترها. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت.
  • home برای استفاده در شبکه های محدوده خانگی.  در این شبکه به کامپیوترهای دیگر غالبا اعتماد می شود که به کامپیوتر شما (همین ماشین firewalld) آسیبی نمی رسانند. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت.
  • internal برای استفاده در شبکه های داخلی.  در این شبکه به کامپیوترهای دیگر غالبا اعتماد می شود که به کامپیوتر شما (همین ماشین firewalld) آسیبی نمی رسانند. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت.
  • public نام Zone پیشفرض یا Default استو برای محدوده های عمومی که در آنها درون یک شبکه همسان اعتمادی بر دیگر کامپیوترهای درون همان شبکه وجود ندارد. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت.
  • trusted اعتماد کامل وجود دارد و تمامی اتصا های شبکه قابل قبول هستند.
  • work برای محدوده یا شبکه های کاری. در این شبکه به کامپیوترهای دیگر غالبا اعتماد می شود که به کامپیوتر شما (همین ماشین firewalld) آسیبی نمی رسانند. در این Zone تنها اتصال های ورودی (Incoming Connections) های انتخابی قابل قبول و اجازه خواهند داشت.

فهرستی از تمامی Zone ها را از خط فرمان

firewall-cmd –get-zones

مشاهده  Default Zone از خط فرمان

firewall-cmd –get-default-zone

مفهوم Service ها در FirewallD

دومین مولفه کلیدی در FirewallD، سرویس ها (Services) هستند. نکته مهمی که باید به آن توجه داشت این است که سرویس های فایروال FirewllD مجزا و متفاوت از سرویس های Systemd هستند. هر Service در غالب یک فایل XML در زیر دایرکتوری urs/lib/firewalld/services/ و یا زیر دایرکتوری etc/firewalld/ ذخیره شده است. هر فایل برای هر سرویس یک توصیف و شماره پورت و پروتکل مربوط به آن سرویس و احتمالا ماژولی که سرویس از آن استفاده می کند را برای همان سرویس تعریف و مشخص کرده است. به طور مثال شکل زیر، فایل ftp.xml را نشان می دهد.

cd /usr/lib/firewalld/services

cat ftp.xml

firewalld_linux_firewall_2

 به طور پیشفرض و احتمالا 54 سرویس و فایل مربوط به آنها وجود دارند که سرویس های معمولی همچون DNS DHCP, HTTP, HTTPS, SSH, FTP و غیره را مشخص می کنند. Service ها به Zone ها اختصاص داده می شوند.

فهرستی از تمامی Service ها را از خط فرمان

firewall-cmd –get-services

فهرستی از تمامی Service های Default Zone از خط فرمان

firewall-cmd –list-all

OR

firewall-cmd –zone=public –list-all

 firewalld_linux_firewall_3

همانطور که از شکل بالا مشخص است public به عنوان default zone و فعال بوده و اینرفیس eno16777736 به آن اختصاص داده شده است. دو سرویس dhcpv6-client و ssh برای این zone فعال و انتخاب شده اند و می توان سرویس هایی دیگری را نیز انتخاب و فعال نمود. همچنین از شکل یک و ناحیه مشخص شده با رنگ قرمز می توان مشاهده کرد که این دو سرویس برای public انتخاب و فعال شده اند.

فهرستی از تمامی Service های یک Zone از خط فرمان

firewall-cmd –zone=ZONE_NAME –list-all

در این مطلب با مفهوم کلی FirewallD آشنا شدید. این فایروال دو مولفه کلیدی Zone و Service را دارد. هر Zone مجموعه ای از Rule ها است که  به صورت پیشفرض بر روی بسته های واردی اعمال می شوند. همچنین هر Service توصیفی از یک سرویس است که پورت، پروتکل و ماژول آن سرویس را تعریف و مشخص می کند و سرویس ها به Zone ها اعمال می شوند. Service های FirewallD متفاوت از سرویس های Systemd هستند. (سرویس های Systemd همان فرایند های پس زمینه ای هستند که رفتار و عملکرد یک سرویس مانند ssh را کنترل می کنند).
در مطلب فوق منظور از FirewallD نام فایروال جدید لینوکسی است ولی firewalld نام سرویس یا فرایند پس زمینه ای است که فایروال را کنترل می کند. بنابراین برای آنکه سرویس فایروال را فعال یا غیر فعال کنیم و یا از وضعیت آن مطلع شویم باید از دستورهای زیر استفاده کنیم.

بررسی وضعیت firewalld

firewall-cmd -state

OR

systemctl status firewalld-service

firewalld_linux_firewall_4

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

systemctl stop firewalld.service

systemctl start firewalld.service

systemctl reload firewalld.service

همچنین می توانید درباره iptables از لینک های زیر مطالعه کنید.



برچسب ها : , , , , , , ,