آموزش و گذری بر دیوار آتش FirewallD

security

در نسخه های جدید فدورا و توزیع های هم خانواده ی آن یعنی سری هفت توزیع هایی چون RHEL و CentOS از firewalld به عنوان دیوار اتش استفاده می شود که در واقع جایگزینی برای iptables می باشد.

از این رو قصد دارم تا در این مطلب به صورت کاملا خلاصه گذری بر نحوه نصب و بررسی وضعیت و همچنین باز کردن پورت های مورد نیاز در firewalld را خدمت شما عزیران آموزش دهم.

 

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

 

# yum install firewalld

اگر از مدیر بسته ی dnf استفاده می کنید کافیست تا از این دستور استفاده کنید :

 

# dnf install firewalld

 

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

 

#yum install firewall-config

 

#dnf install firewall-config

 

اگر از میزکارهای گرافیکی استفاده می کنید،جهت استفاده از رابط کاربری گرافیکی firewalld  کافیست تا آن را از طریق منو های میزکار خود اجرا کنید و یا این دستور را اجرا کنید تا رابط گرافیکی firewalld را مشاهده کنید :

 

# firewall-config

در پایین تصویری از رابط گرافیکی firewalld را مشاهده می کنید :

firewall-config

برای استفاده از firewalld در خط فرمان باید از دستور firewall-cmd استفاه کرد.

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

 $ firewall-cmd -V
$firewall-cmd --version

 

 

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

 

$ firewall-cmd -h
$ firewall-cmd --help

 

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

$man firewall-cmd

 

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

 

$ firewall-cmd --state
$ systemctl status firewalld

 

 

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

 

$ firewall-cmd --get-active-zones

 

تعیین کردن یک zone به عنوان zone پیش فرض :

 

firewall-cmd --set-default-zone=<zone>

 

برای فهمیدن اینکه یک رابط شبکه (NIC) به کدام Zone اختصاص داده شده است از این دستور می توان استفاده کرد :

 

 $ firewall-cmd --get-zone-of-interface=eth0

نکته اینکه بجای eth0 باید نام رابط شبکه ی مورد نظر خود را نوشت.

 

برای نمایش لیستی از رابط های شبکه که به یک Zone اختصاص داده شده اند از دستور پایین باید استفاده کرد :

 

# firewall-cmd --zone=public --list-interfaces

نکته اینکه بجای public می توان نام zone مورد نظر خود را نوشت.

 

برای اضافه کردن یک رابط شبکه (NIC) به یک zone از این دستور می توان استفاده کرد :

 

firewall-cmd [--zone=<zone>] --add-interface=<interface>

 

توجه داشته باشید اگر zone مشخص نشود از zone پیش فرض استفاده خواهد شد.

 

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

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

 

 

نکته اینکه بجای public می توان نام zone مورد نظر خود را نوشت.

 

 

Runtime zone handling و Permanent zone handling  :

 

باز کردن پورت و یا فعال کردن یک سرویس در firewalld می توان به دو صورت Runtime و یا Permanent باشد که در حالت اول پس از reload کردن و یا restart کردن firewalld آن roule غیر فعال می شود ولی در حالت Permanent تغییرات به صورت دائمی می باشد.

 

Runtime zone handling :

 

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

 

firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]

 

اگر در دستور بالا zone نوشته نشود از zone پیشفرض استفاده خواهد شد.

اگر از timeout استفاده شود به این معنا می باشد که سرویس مورد نظر تا همان مقدار ثانیه که تعیین می کنیم فعال خواهد بود.

به عنوان نمونه برای فعال کردن سرویس http برای 60 ثانیه این دستور را اجرا کنید :

 

firewall-cmd --zone=home --add-service=http --timeout=60

 

مثال :

فعال کردن سرویس http در zone پیش فرض :

 

firewall-cmd --add-service=http

 

 

دستور کلی برای غیر فعال کردن در یک zone به این صورت می باشد :

 

firewall-cmd [--zone=<zone>] --remove-service=<service>

 

نکته اینکه اگر zone مشخص نشود از zone پیش فرض استفاده خواهد شد.

 

مثال :

غیر فعال کردن سرویس http در zone home :

 

firewall-cmd --zone=home --remove-service=http

 

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

 

firewall-cmd [--zone=<zone>] --query-service=<service>

 

 

Permanent zone handling :

 

حالت Permanent که در واقع حالت دائمی برای تغییرات می باشد که برای اعمال تغییرات حتما نیاز هست تا از reload یا restart استفاده شود.

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

 

#firewall-cmd --permanent --get-services 

 

نمایش لیستی از zone ها که از permanent  پشتیبانی می کنند :

 

#firewall-cmd --permanent --get-zones

 

برای فعال کردن سرویس در یک zone دستور کلی آن به این صورت می باشد :

 

# firewall-cmd --permanent [--zone=<zone>] --add-service=<service>

 

نکته اینکه اگر zone مشخص نشود از zone پیش فرض استفاده خواهد شد.

 

به عنوان نمونه برای فعال کردن سرویس http در zone home از این دستور می توان استفاده کرد :

 

#firewall-cmd --permanent --zone=home --add-service=http

 

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

 

# firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>

 

دستور کلی برای پرس و جو کردن اینکه یک سرویس در zone مورد نظر فعال هست یا نه به این صورت می باشد :

 

 firewall-cmd --permanent [--zone=<zone>] --query-service=<service>

 

 

دستور کلی برای فعال کردن پورت و پروتکل در یک zone به صورت permanent به شرح زیر می باشد :

 

#firewall-cmd --permanent [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>

 

 

 

اکنون به عنوان مثال برای باز کردن پورت 80 از نوع tcp در zone public باید از این دستور استفاده کرد :

 

#firewall-cmd --permanent --zone=public --add-port=80/tcp

 

 

برای باز کردن پورت 5060 از نوع tcp و udp باید این دستورها را اجرا کرد :

 

# firewall-cmd --permanent --zone=public --add-port=5060/tcp
# firewall-cmd --permanent --zone=public --add-port=5060/udp

 

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

 

#firewall-cmd --permanent --zone=public --add-port=10000-20000/udp

 

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

 

# firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>

 

جهت غیر فعال کردن یک پورت (به عنوان مثال پورت ۸۰) از دستور پایین می توان استفاده کرد :

 

# firewall-cmd  --permanent --zone=public --remove-port=80/tcp 

 

دستور کلی برای پرس و جو کردن اینکه یک پورت و پروتکل در حالت permanent در یک zone فعال می باشد یا نه به این صورت می باشد :

 

# firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>

 

 

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

 

# firewall-cmd --reload

 

اکنون جهت مشاهده ی تغییرات انجام شده روی zone مورد نظر می توانید این دستور را اجرا کنید :

 

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

روش دیگر جهت مشاهده rule مربوطه می توان از این دستور استفاده کرد :

 

# iptables-save | grep 80

 

 

همانطور که مشاهده کردید پر استفاده ترین دستورات firewalld توضیح داده شد.اما برای اطلاعات بیشتر می توانید مستندات firewalld را مطالعه کنیید که می توانید از مستندات و ویکی پروژه فدورا استفاده کنید.

 

6 نظرات
  1. محمد شکوری می گوید

    سلام وقت بخیر
    من این نرم افزار رو قبلا نصب کرده بودم, وقتی دیدم واسش آپدیت اومده آپدیت رو دریافت کردم و بعداز دریافت آپدیت این فایروال حذف شد. فایروال دیگه ای برای استفاده هست آیا؟

    1. hos7ein می گوید

      درود بر شما
      چطور میگین خذف شده!؟

  2. محمد شکوری می گوید

    این فایروال رو قبلا از طریق yemex extender نصب کرده بودم. و اون رو تولیست برنامه هام میتونستم ببینم (فدورا۲۱ گنوم۳) بعد از آپدیت از لیست برنامه هام حذف شد.
    ویک سوال دیگه; من تو ویندوز همیشه نرم افزار sorfblocker رو همراه خودم داشتم آیا مشابه ش برای لینوکس هست؟
    لطفا یه نرم افزاری که باهاش بشه دسترسی نرم افزارها به اینترنت رو کنترل و بلاک کرد به من معرفی کنید

    1. hos7ein می گوید

      خروجی این دستور رو بدین :
      rpm -qa firewall*

      شخصا با اون نرم افزار ویندوزی آشنا نیستم.

  3. محمد شکوری می گوید

    – خروجی این اومد:
    rpm [-afgpcdLlsiv?] [-a|–all] [-f|–file] [-g|–group]
    [-p|–package] [–pkgid] [–hdrid] [–triggeredby] [–whatrequires]
    [–whatprovides] [–nomanifest] [-c|–configfiles] [-d|–docfiles]
    [-L|–licensefiles] [–dump] [-l|–list] [–queryformat=QUERYFORMAT]
    [-s|–state] [–nofiledigest] [–nofiles] [–nodeps] [–noscript]
    [–allfiles] [–allmatches] [–badreloc] [-e|–erase=+]
    [–excludedocs] [–excludepath=] [–force]
    [-F|–freshen=+] [-h|–hash] [–ignorearch]
    [–ignoreos] [–ignoresize] [-i|–install] [–justdb] [–nodeps]
    [–nofiledigest] [–nocontexts] [–noorder] [–noscripts]
    [–notriggers] [–oldpackage] [–percent] [–prefix=]
    [–relocate==] [–replacefiles] [–replacepkgs] [–test]
    [-U|–upgrade=+] [–reinstall=+]
    [-D|–define=’MACRO EXPR’] [–undefine=MACRO] [-E|–eval=’EXPR’]
    [–macros=] [–noplugins] [–nodigest] [–nosignature]
    [–rcfile=] [-r|–root=ROOT] [–dbpath=DIRECTORY]
    [–querytags] [–showrc] [–quiet] [-v|–verbose] [–version]
    [-?|–help] [–usage] [–scripts] [–setperms] [–setugids]
    [–conflicts] [–obsoletes] [–provides] [–requires]
    [–recommends] [–suggests] [–supplements] [–enhances] [–info]
    [–changelog] [–xml] [–triggers] [–last] [–dupes]
    [–filesbypkg] [–fileclass] [–filecolor] [–fscontext]
    [–fileprovide] [–filerequire] [–filecaps]
    – واقعا شما که اینقدر گنو/لینوکسی هستید, برای کنترل دسترسی نرم افزارها به اینترنت نرم افزاری نمی شناسید؟

    1. hos7ein می گوید

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

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.

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