این آموزش تلفیق ۳ آموزش موجود در fedorafans است امیدوارم که مفید واقع بشه
در نسخه های جدید فدورا و توزیع های هم خانواده ی آن یعنی سری هفت توزیع هایی چون RHEL و CentOS از firewalld به عنوان دیوار اتش استفاده می شود که در واقع جایگزینی برای iptables می باشد.
از این رو قصد دارم تا در این مطلب به صورت کاملا خلاصه گذری بر نحوه نصب و بررسی وضعیت و همچنین باز کردن پورت های مورد نیاز در firewalld را خدمت شما عزیران آموزش دهم.
همانطور که گفته شد firewalld به صورت پیش فرض روی فدورا و سری جدید توزیع های هم خانواده خود نصب می باشد.ولی به هر حال برای نصب firewalld می توانید از این دستور استفاده کنید :
yum install firewalld
اگر از دستور dnf ( مدیریت بسته ) استفاده می کنید کافیست تا از این دستور استفاده کنید :
dnf install firewalld
اگر از میزکارهای گرافیکی استفاده می کنید،جهت استفاده از رابط کاربری گرافیکی firewalld کافیست تا آن را از طریق منو های میزکار خود اجرا کنید و یا این دستور را اجرا کنید تا رابط گرافیکی firewalld را مشاهده کنید :
firewall-config
برای استفاده از firewalld در خط فرمان باید از دستور firewall-cmd استفاه کرد.
-> $firewall-cmd -V 0.5.2
-> $man firewall-cmd Usage: firewall-cmd [OPTIONS...] General Options -h, --help Prints a short help text and exists -V, --version Print the version string of firewalld -q, --quiet Do not print status messages Status Options --state Return and print firewalld state --reload Reload firewall and keep state information --complete-reload Reload firewall and lose state information --runtime-to-permanent Create permanent from runtime configuration
-> $firewall-cmd --state running
جهت نمایش Zone فعال و رابط های شبکه ای که به آن تخصیص داده شده است از این دستور استفاده کنید :
-> $sudo firewall-cmd --get-active-zones public interfaces: wlp3s0
firewall-cmd --set-default-zone=<zone>
firewall-cmd --get-zone-of-interface=eth0
نکته اینکه بجای eth0 باید نام رابط شبکه ی مورد نظر خود را نوشت.
firewall-cmd --zone=public --list-interfaces
نکته اینکه بجای public می توان نام zone مورد نظر خود را نوشت.
firewall-cmd [--zone=<zone>] --add-interface=<interface>
توجه داشته باشید اگر zone مشخص نشود از zone پیش فرض استفاده خواهد شد.
firewall-cmd --zone=public --list-all
نکته اینکه بجای public می توان نام zone مورد نظر خود را نوشت.
باز کردن پورت و یا فعال کردن یک سرویس در firewalld می توان به دو صورت Runtime و یا Permanent باشد که در حالت اول پس از reload کردن و یا restart کردن firewalld آن roule غیر فعال می شود ولی در حالت Permanent تغییرات به صورت دائمی می باشد.
دستور کلی برای فعال کردن سرویس در حالت Runtime به این صورت می باشد :
firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]
اگر در دستور بالا zone نوشته نشود از zone پیشفرض استفاده خواهد شد.
اگر از timeout استفاده شود به این معنا می باشد که سرویس مورد نظر تا همان مقدار ثانیه که تعیین می کنیم فعال خواهد بود.
به عنوان نمونه برای فعال کردن سرویس http برای 60 ثانیه این دستور را اجرا کنید :
firewall-cmd --zone=home --add-service=http --timeout=60
firewall-cmd --add-service=http
firewall-cmd [--zone=<zone>] --remove-service=<service>
توجه داشته باشید اگر zone مشخص نشود از zone پیش فرض استفاده خواهد شد.
firewall-cmd --zone=home --remove-service=http
firewall-cmd [--zone=<zone>] --query-service=<service>
حالت Permanent که در واقع حالت دائمی برای تغییرات می باشد که برای اعمال تغییرات حتما نیاز هست تا از reload یا restart استفاده شود.
firewall-cmd --permanent --get-services
firewall-cmd --permanent --get-zones
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>
firewall-cmd --permanent [--zone=<zone>] --query-service=<service>
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
firewall-cmd --permanent [--zone=<zone>] --query-port=<port>[-<port>]/<protocol>
توجه داشته باسید پس ازفعال و یا غیر فعال کردن پورت ها و یا هر تغییری این دستور را جهت اعمال سازی اجرا کنید :
firewall-cmd --reload
firewall-cmd --zone=public --list-all
ابتدا بررسی کنید که IP address masquerading برای zone مورد نظر فعال باشد که برای اینکار می توانید از دستور زیر استفاده نمایید :
firewall-cmd --zone=public --list-all
نکته اینکه به جای public باید zone مورد نظر خود را بنویسید.یک نمونه خروجی از اجرای دستور بالا را در پایین مشاهده می کنید :
# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 2003/tcp 2004/tcp 8126/tcp 80-81/tcp 8125/udp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
همانطور که در خروجی دستور مشاهده می کنید masquerade: no می باشد. همچنین می توانید از دستور پایین نیز استفاده کنید :
firewall-cmd --zone=public --query-masquerade
یک نمونه خروجی از اجرای دستور گفته شده را در پایین مشاهده می کنید :
firewall-cmd --zone=public --query-masquerade no