
نحوه راه اندازی فایروال با استفاده از FirewallD در CentOS 7
همانطور که می دانید، فایروال مجموعه ای از قوانین است. هنگامی که داده ای وارد یک شبکه عمومی و یا محلی شده و یا از آن خارج می شود، محتویات آن (بخصوص اطلاعات مربوط به مبدا، مقصد و پروتکل مورد نظر برای استفاده) از طریق قوانین فایروال بررسی شده تا مشخص شود اجازه عبور را دارد یا خیر.
Firewalld یکی از ابزارهای سطح بالا به منظور مدیریت راحت تر قوانین فایروال (firewall rules) در لینوکس می باشد. همانطور که از نام آن حدس زده می شود، firewalld جزئی از خانواده systemd است. Firewalld را می توان در توزیع های Debian / Ubuntu نصب کرد، اما به طور پیش فرض در Red Hat و CentOS نصب می باشد.
در این مقاله با استفاده از ابزار firewall-cmd بر خی از تظیمات کاربردی firewalld را برای تنظیم نمودن فایروال سرور شما را ارائه خواهیم کرد.
مفاهیم پایه در Firewalld
Zones
firewalld گروههایی از قوانین را با استفاده از موجودیتی به نام “zone” مدیریت می کند. Zones درواقع مجموعه ای از قوانین هستند که بسته به میزان اعتماد به شبکه هایی که سیستم شما به آن متصل هستند ، ترافیک ورودی وخروجی را مجاز ویاغیر مجاز می دانند. کارت های شبکه برای پیروی از قوانین firewall به یک zone اختصاص داده می شوند.
Rule Permanence
در فایروال ، قوانین را می توان permanent و یا immediate تعیین کرد. اگر یک قانون اضافه و یا تغییر داده شود، به طور پیش فرض، تنظیمات فایروال به روز می شود. اما در reboot بعدی ، قوانین قدیمی مجددا بارگزاری می شوند.به منظور دائمی نمودن تنظیمات اکثر دستورات مربوط به firewalld-cmd سوئیچ –permanent را برای ثبت دائمی تغییرات دارند.
نصب firewalld
همانطور که گفته شد firewalld بصورت پیشفرض در سیستم عامل CentOS نصب میباشد. در غیر اینصورت می توانید با دستور زیر آن را نصب نمایید:
$ sudo yum install firewalld $ sudo systemctl enable firewalld
پس از نصب میتوانید سیستم را reboot نمایید. توجه داشته باشید در صورتیکه از firewalld استفاده میکنید، بصورت پیشفرض فقط پورت مربوط به ssh باز می باشد و بقیه پورت ها همه بسته می باشند.
برای مشاهده وضعیت firewalld دستور زیر را اجرا نمایید:
$ sudo firewall-cmd --state
running
دستورات کاربردی firewalld
مشاهده zone پیشفرض:
$ sudo firewall-cmd --get-default-zone
output
public
مشاهده zone های فعال:
$ sudo firewall-cmd --get-active-zone
output
public interfaces: enp0s3 enp0s8
همانطور که مشاهده میکنید در اینجا ما دو کارت شبکه داریم که هر دو توسط public zone مدیریت می شوند.
مشاهده تنظیمات پیشفرض public zone:
$ sudo firewall-cmd --list-all
output
public (active) target: default icmp-block-inversion: no interfaces: enp0s3 enp0s8 sources: services: ssh dhcpv6-client imap ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
مشاهده تمامی zone های موجود:
$ sudo firewall-cmd --get-zones
output
block dmz drop external home internal public trusted work
مشاهده تنظیمات مربوط به یک zone مشخص:
$ sudo firewall-cmd --zone=home --list-all
output
home target: default icmp-block-inversion: no interfaces: sources: services: ssh mdns samba-client dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
مشاهده تمام zone ها به همراه تنظیمات آنها:
$ sudo sudo firewall-cmd --list-all-zones
تغییر zone مربوط به یک کارت شبکه:
$ sudo firewall-cmd --zone=home --change-interface=eth0
output
success
باز نمودن پورت در firewalld
یه عنوان مثال با استفاده از دستور زیر میتوانید پورت ۵۰۰۰ tcp را بر روی فایروال باز نمایید:
$ sudo firewall-cmd --zone=public --add-port=5000/tcp
با دستور زیر وضعیت پورت ها را بررسی نمایید:
$ sudo firewall-cmd --zone=public --list-ports
در صورتیکه میخواهید یک رنج پورت را باز نمایید به صورت مقابل عمل کنید:
$ sudo firewall-cmd --zone=public --add-port=5000-5020/udp
با دستورات بالا پورت ها بصورت موقتی باز می شوند. درصورتیکه میخواهید پورت ها به صورت دائم بر روی سیستم باز بمانند از سویچ permanent استفاده نمایید:
$ sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp $ sudo firewall-cmd --zone=public --permanent --add-port=5000-5020/udp $ sudo firewall-cmd --zone=public --permanent --list-ports