این آموزش تلفیق ۳ آموزش موجود در 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