در نسخه های جدید فدورا و توزیع های هم خانواده ی آن یعنی سری هفت توزیع هایی چون 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 را مشاهده می کنید :
برای استفاده از 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 را مطالعه کنیید که می توانید از مستندات و ویکی پروژه فدورا استفاده کنید.
سلام وقت بخیر
من این نرم افزار رو قبلا نصب کرده بودم, وقتی دیدم واسش آپدیت اومده آپدیت رو دریافت کردم و بعداز دریافت آپدیت این فایروال حذف شد. فایروال دیگه ای برای استفاده هست آیا؟
درود بر شما
چطور میگین خذف شده!؟
این فایروال رو قبلا از طریق yemex extender نصب کرده بودم. و اون رو تولیست برنامه هام میتونستم ببینم (فدورا۲۱ گنوم۳) بعد از آپدیت از لیست برنامه هام حذف شد.
ویک سوال دیگه; من تو ویندوز همیشه نرم افزار sorfblocker رو همراه خودم داشتم آیا مشابه ش برای لینوکس هست؟
لطفا یه نرم افزاری که باهاش بشه دسترسی نرم افزارها به اینترنت رو کنترل و بلاک کرد به من معرفی کنید
خروجی این دستور رو بدین :
rpm -qa firewall*
شخصا با اون نرم افزار ویندوزی آشنا نیستم.
– خروجی این اومد:
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]
– واقعا شما که اینقدر گنو/لینوکسی هستید, برای کنترل دسترسی نرم افزارها به اینترنت نرم افزاری نمی شناسید؟
اون ستاره اخر دستور هست.
من گفتم با اون نرم افزاری که شما معرفی کردین آشنا نیستم.در مورد اون کاری که می خواین انجام بدین هم یه جستجو کنین بهتر هست.