Firewalld چیست؟ جایگزین مدرن برای CSF در مدیریت فایروال لینوکس

 

از تاریخ ۳۱ آگوست ۲۰۲۵ (۹ شهریور ۱۴۰۴) وب سایت رسمی ConfigServer.com فعالیت خود را متوقف کرد. این وب سایت سال ها به عنوان ارائه دهنده ی ابزارهای امنیتی محبوب CSF (ConfigServer Security & Firewall) و LFD (Login Failure Daemon) شناخته می شد. با این حال، توقف پشتیبانی و انتشار آپدیت های امنیتی برای این ابزارها، آن ها را در برابر تهدیدهای جدید و آسیب پذیری های احتمالی به شدت آسیب پذیر کرده است.

 

end of support for configserver.com

 

به همین دلیل، مدیران سیستم و سرورها نیازمند یافتن جایگزین های مدرن و پشتیبانی شده هستند تا بتوانند امنیت زیرساخت های خود را تضمین کنند. یکی از بهترین ترکیب ها در این زمینه، استفاده هم زمان از Firewalld به عنوان فایروال اصلی و Fail2ban برای مقابله با حملات brute-force است.
Firewalld یک ابزار مدیریت فایروال پیشرفته در سیستم عامل های لینوکسی است که به صورت پیش فرض در بسیاری از توزیع ها (مثل CentOS، RHEL و Fedora) نصب یا به راحتی قابل اضافه کردن است.

این ابزار در واقع یک لایه مدیریتی روی iptables یا nftables (سیستم اصلی فایروال در کرنل لینوکس) است. به زبان ساده، به جای اینکه شما مجبور باشید ده ها دستور پیچیده ی iptables بنویسید، Firewalld یک رابط ساده و انعطاف پذیر ارائه می دهد که کار مدیریت قوانین امنیتی شبکه را بسیار راحت تر می کند.

 

ویژگی های کلیدی Firewalld

  • Zoneها (مناطق امنیتی): شما می توانید برای هر رابط شبکه (مثلاً کارت شبکه داخلی یا اینترنتی) یک سطح امنیتی مشخص کنید.
  • Serviceها (سرویس ها): سرویس هایی مثل SSH، HTTP یا HTTPS از پیش تعریف شده اند و به راحتی قابل فعال یا غیرفعال شدن هستند.
  • Runtime vs Permanent: می توانید قوانین موقت (برای تست) یا دائم (برای همیشه) تعریف کنید.
  • مدیریت ساده پورت ها: باز و بسته کردن پورت ها با یک دستور ساده انجام می شود.
  • Rich Rules: امکان تعریف قوانین پیشرفته برای شرایط خاص.

به بیان دیگر، Firewalld همان نقشی را دارد که CSF برای بسیاری از مدیران سرور ایفا می کرد، اما با معماری مدرن تر و یکپارچگی بهتر با سیستم عامل های لینوکسی.

حالا که می دانید Firewalld چیست و چرا به آن نیاز داریم، وقت آن است که گامی عملی برداشته و آن را روی سیستم خود نصب و راه اندازی کنید. نگران نباشید، این فرآیند بسیار ساده است و در بیشتر توزیع های لینوکس با چند دستور قابل انجام است.

 

نصب و راه اندازی Firewalld

 

نصب و راه اندازی Firewalld

 

Firewalld به طور پیش فرض در بسیاری از توزیع های مدرن لینوکس مانند CentOS/RHEL 7 به بالا و Fedora نصب شده است. با این حال، اگر از توزیع های دیگری مانند Ubuntu/Debian استفاده می کنید یا نسخه ی Firewalld شما قدیمی است، نیاز به نصب آن خواهید داشت.

با این حال، برای اطمینان می توانید از دستور زیر برای نصب یا به روزرسانی آن استفاده کنید.

sudo yum install firewalld

یا در Fedora و نسخه های جدیدتر RHEL/CentOS:

sudo dnf install firewalld

در توزیع های مبتنی بر Debian برای نصب Firewalld میتوانید از مخازن APT استفاده کنید:

sudo apt update
sudo apt install firewalld

 

دستورات پایه برای مدیریت Firewalld

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

sudo systemctl enable firewalld

سپس، برای راه اندازی فوری سرویس Firewalld از دستور زیر استفاده کنید:

sudo systemctl start firewalld

برای اطمینان از اینکه Firewalld به درستی در حال اجرا است، می توانید وضعیت آن را بررسی کنید:

sudo systemctl status firewalld

خروجی باید نشان دهد که سرویس active (running) است.

در صورتی که نیاز به متوقف کردن موقت Firewalld دارید:

sudo systemctl stop firewalld

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

sudo systemctl disable firewalld

نکته مهم: قبل از متوقف کردن یا غیرفعال کردن Firewalld، از عواقب امنیتی آن آگاه باشید. سیستم شما بدون فایروال در برابر حملات آسیب پذیر خواهد بود.

پس از نصب و اطمینان از راه اندازی Firewalld، آماده هستید تا وارد دنیای مفاهیم کلیدی آن شوید و فایروال سرور لینوکس خود را به طور مؤثر مدیریت کنید.

 

مفاهیم کلیدی Firewalld

برای اینکه بتوانید به طور موثر از Firewalld استفاده کنید، درک مفاهیم اساسی آن ضروری است. Firewalld با معرفی رویکرد “منطقه محور” (Zone-based) مدیریت فایروال را ساده تر و قدرتمندتر کرده است.

 

Zoneها (Zones) چه هستند و چه کاربردی دارند؟

Zoneها قلب معماری Firewalld هستند. یک Zone مجموعه ای از قوانین از پیش تعریف شده است که تعیین می کند کدام ترافیک مجاز و کدام ترافیک ممنوع است. هر Zone برای یک سطح مشخصی از اعتماد طراحی شده است. به عبارت دیگر، شما می توانید شبکه های مختلف یا اینترفیس های شبکه خود را به Zoneهای مختلف اختصاص دهید و برای هر یک سطح امنیت متفاوتی تعریف کنید.

 

Firewalld Zones

 

Firewalld چندین Zone پیش فرض دارد که برخی از مهم ترین آن ها عبارتند از:

  • public: برای استفاده در شبکه های عمومی (اینترنت). تنها سرویس ها و پورت های ضروری به طور پیش فرض باز هستند.
  • trusted: تمامی ترافیک ورودی مجاز است. این Zone برای شبکه های بسیار امن که به آن ها کاملاً اعتماد دارید، مناسب است.
  • home: برای استفاده در شبکه های خانگی. به میزبان های دیگر در شبکه تا حدی اعتماد دارد.
  • internal: برای شبکه های داخلی. به میزبان های دیگر در شبکه اعتماد بیشتری دارد.
  • external: برای روترهایی که به اینترنت متصل هستند. تنها ترافیک خروجی مجاز است و ترافیک ورودی NAT می شود.
  • drop: تمام بسته های ورودی را بدون هیچ پاسخی از بین می برد (پاسخگو نیست).
  • block: تمام بسته های ورودی را مسدود می کند و یک پیام خطا (ICMP host-prohibited) برمی گرداند.
  • dmz: برای سرورهایی که باید از اینترنت قابل دسترسی باشند (مانند سرورهای وب) اما از بقیه شبکه داخلی ایزوله هستند.
  • work: برای محیط های کاری. به میزبان های دیگر در شبکه تا حدی اعتماد دارد.

شما می توانید اینترفیس های شبکه خود را به یک Zone خاص اختصاص دهید. یک اینترفیس می تواند تنها در یک Zone باشد.

 

Services ها چه هستند؟

به جای اینکه هر بار شماره پورت یک سرویس را به خاطر بسپارید و آن را در فایروال باز کنید، Firewalld مفهوم “Service” را معرفی کرده است. یک Service یک تعریف از پیش تعیین شده برای یک سرویس شبکه رایج است که شامل پورت ها، پروتکل ها و ماژول های لازم برای آن سرویس می شود.

به عنوان مثال، به جای اینکه پورت ۸۰ (HTTP) و ۴۴۳ (HTTPS) را به صورت جداگانه باز کنید، می توانید سرویس http و https را فعال کنید. این کار خوانایی و مدیریت قوانین فایروال را به شدت افزایش می دهد. Firewalld لیست گسترده ای از سرویس های پیش فرض مانند ssh, http, https, ftp, mysql, dns و بسیاری دیگر را ارائه می دهد.

 

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

sudo firewall-cmd --get-services

 

تفاوت قوانین دائم (permanent) و موقت (runtime)

یکی از ویژگی های مهم Firewalld این است که به شما امکان می دهد قوانین را به دو صورت اعمال کنید:

 

  1. قوانین موقت (runtime): این قوانین بلافاصله پس از اعمال شدن فعال می شوند، اما با راه اندازی مجدد سرویس Firewalld یا راه اندازی مجدد سیستم، از بین می روند. این حالت برای آزمایش قوانین یا اعمال تغییرات موقت بسیار مفید است.

    مثال:

sudo firewall-cmd --add-port=8080/tcp

 

  1. قوانین دائم (permanent): این قوانین پس از اعمال شدن فعال نمی شوند، بلکه در فایل های پیکربندی Firewalld ذخیره می شوند. برای اینکه این قوانین به طور فعال توسط Firewalld اجرا شوند، باید Firewalld را reload کنید. این قوانین پس از راه اندازی مجدد سیستم نیز پابرجا خواهند بود.

    مثال:

sudo firewall-cmd --permanent --add-port=8080/tcp

 

برای اعمال تغییرات دائمی، همیشه مراحل زیر را دنبال کنید:

  1. قوانین را با استفاده از permanent– اضافه کنید.
  2. Firewalld را reload کنید تا قوانین دائمی بارگذاری و فعال شوند:
    sudo firewall-cmd --reload

    این دستور بدون قطع ارتباطات فعال، قوانین جدید را بارگذاری می کند.

 

اضافه کردن پورت ها و سرویس ها

برای باز کردن یک پورت یا فعال کردن یک سرویس در یک Zone خاص (مثلاً Zone پیش فرض public):

مثال: باز کردن پورت ۸۰۸۰ برای TCP به صورت موقت:

sudo firewall-cmd --zone=public --add-port=8080/tcp

برای دائمی کردن این تغییر:

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

 

اضافه کردن یک سرویس

مثال: فعال کردن سرویس HTTP (پورت ۸۰) به صورت موقت:

sudo firewall-cmd --zone=public --add-service=http

برای دائمی کردن این تغییر:

sudo firewall-cmd --zone=public --add-service=http --permanent

sudo firewall-cmd --reload

 

مدیریت اینترفیس ها در Zoneها

هنگامی که Firewalld نصب می شود، اینترفیس های شبکه شما (مانند eth0 یا enp0s3) به یک Zone پیش فرض (معمولا public) اختصاص داده می شوند. می توانید این تخصیص را تغییر دهید.

برای مشاهده Zone فعال فعلی و اینترفیس های مرتبط با آن:

sudo firewall-cmd --get-active-zones

اختصاص یک اینترفیس به یک Zone دیگر

فرض کنید می خواهید اینترفیس eth0 را به Zone external منتقل کنید:

sudo firewall-cmd --zone=external --change-interface=eth0 --permanent

sudo firewall-cmd --reload

حذف یک اینترفیس از یک Zone

sudo firewall-cmd --zone=public --remove-interface=eth0 --permanent

sudo firewall-cmd --reload

 

درک این مفاهیم اساسی، شما را قادر می سازد تا Firewalld را به طور مؤثر پیکربندی کنید. در بخش بعدی، به کاربردهای عملی و سناریوهای رایج می پردازیم.

با درک مفاهیم کلیدی Firewalld، اکنون آماده ایم تا به سراغ کاربردهای عملی برویم و ببینیم چگونه می توانیم با استفاده از این ابزار قدرتمند، امنیت سرورهای لینوکس خود را مدیریت کنیم.

 

کاربردهای عملی Firewalld

در این بخش، به رایج ترین وظایف مدیریت فایروال می پردازیم و نحوه انجام آن ها را با Firewalld توضیح می دهیم. تمامی مثال ها بر روی Zone پیش فرض public اعمال می شوند، مگر اینکه خلاف آن ذکر شود. به یاد داشته باشید که برای اعمال دائمی تغییرات، از سوئیچ permanent– استفاده کرده و سپس sudo firewall-cmd –reload را اجرا کنید.

 

۱. باز و بسته کردن پورت ها

باز کردن و بستن پورت ها از اساسی ترین وظایف یک فایروال است.

 

مثال اول: باز کردن پورت SSH (پورت ۲۲)

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

به صورت موقت

sudo firewall-cmd --zone=public --add-service=ssh

به صورت دائم

sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload

 

اگر سرویس SSH روی پورت پیش فرض (۲۲) اجرا نمی شود و مثلاً روی پورت ۲۲۲۲ است، می توانید پورت را مستقیماً باز کنید:

به صورت موقت

sudo firewall-cmd --zone=public --add-port=2222/tcp

به صورت دائم

sudo firewall-cmd --zone=public --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

 

مثال دوم: باز کردن پورت های HTTP و HTTPS

باز کردن HTTP (پورت ۸۰)

sudo firewall-cmd --zone=public --add-service=http --permanent

باز کردن HTTPS (پورت ۴۴۳)

sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

 

مثال سوم: بستن یک پورت یا سرویس

حذف سرویس http

sudo firewall-cmd --zone=public --remove-service=http --permanent

حذف پورت ۲۲۲۲

sudo firewall-cmd --zone=public --remove-port=2222/tcp --permanent
sudo firewall-cmd --reload

مشاهده پورت ها و سرویس های فعال در یک Zone

برای مشاهده تمامی پورت ها و سرویس های فعال در Zone public:

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

 

۲. محدود کردن دسترسی از یک IP یا Subnet

Firewalld به شما امکان می دهد تا دسترسی به پورت ها یا سرویس های خاص را فقط به آدرس های IP یا زیرشبکه های مشخصی محدود کنید. این کار با استفاده از source انجام می شود.

 

مثال اول: اجازه دسترسی SSH فقط از یک IP خاص

فرض کنید فقط IP 192.168.1.100 اجازه دسترسی SSH به سرور را دارد:

حذف سرویس ssh از قوانین عمومی (اگر از قبل اضافه شده بود)

sudo firewall-cmd --zone=public --remove-service=ssh --permanent

اضافه کردن قانون جدید برای IP مشخص

sudo firewall-cmd --zone=public --add-source=192.168.1.100 --add-service=ssh --permanent
sudo firewall-cmd --reload

با این کار، تنها IP 192.168.1.100 می تواند از طریق SSH به سرور متصل شود.

 

مثال دوم: اجازه دسترسی HTTP از یک زیرشبکه خاص

فرض کنید می خواهید فقط زیرشبکه ۱۹۲.۱۶۸.۱.۰/۲۴ به وب سایت شما دسترسی داشته باشد:

sudo firewall-cmd --zone=public --add-source=192.168.1.0/24 --add-service=http --permanent
sudo firewall-cmd --reload

 

۳. استفاده از Rich Rules (قوانین غنی)

Rich Rules ابزاری قدرتمند برای تعریف قوانین پیچیده تر و دقیق تر در Firewalld هستند. این قوانین انعطاف پذیری بسیار بیشتری نسبت به اضافه کردن ساده پورت ها و سرویس ها ارائه می دهند.

ساختار کلی یک Rich Rule:

rule [source] [destination] service|port|protocol|icmp-block|masquerade|forward-port action

 

مثال اول: اجازه دسترسی SSH فقط از یک IP خاص و محدود کردن به پورت ۲۲

این همان کاری است که با add-source انجام دادیم، اما اینبار با Rich Rule انجام میدهیم:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent
sudo firewall-cmd --reload

 

مثال دوم: رد کردن (reject) ترافیک از یک IP خاص به یک پورت خاص

برای مسدود کردن تمام اتصالات از ۱۰.۰.۰.۵ به پورت ۸۰۸۰:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port port="8080" protocol="tcp" reject' --permanent
sudo firewall-cmd --reload

 

مثال سوم: محدود کردن تعداد اتصالات SSH

برای جلوگیری از حملات brute-force، می توانید تعداد اتصالات جدید SSH از یک IP را در یک بازه زمانی محدود کنید. (توجه: Fail2ban راهکار جامع تری است، اما این یک مثال از قابلیت rich rule است):

sudo firewall-cmd --zone=public --add-rich-rule='rule service name="ssh" limit value="1/minute" accept' --permanent
sudo firewall-cmd --reload

این قانون به هر IP اجازه می دهد حداکثر یک اتصال SSH در دقیقه برقرار کند.

 

حذف یک Rich Rule

برای حذف یک Rich Rule، باید دقیقاً همان دستوری که برای اضافه کردن آن استفاده کردید را با remove-rich-rule جایگزین کنید:

sudo firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent

sudo firewall-cmd --reload

 

۴. مدیریت Masquerading (NAT) و Port Forwarding

این قابلیت ها برای سناریوهایی که سرور شما به عنوان یک روتر یا گیت وی عمل می کند، بسیار مفید هستند.

 

 Masquerading (NAT)

Masquerading به کامپیوترهای پشت فایروال (در یک شبکه خصوصی) اجازه می دهد تا از طریق آدرس IP عمومی سرور به اینترنت دسترسی پیدا کنند.

فعال کردن masquerading در یک Zone (مثلاً external)

sudo firewall-cmd --zone=external --add-masquerade --permanent
sudo firewall-cmd --reload

 

Port Forwarding (انتقال پورت)

Port Forwarding برای ارسال ترافیک از یک پورت در سرور شما به یک پورت دیگر در سرور یا به یک سرور دیگر در شبکه داخلی استفاده می شود.

مثال: فوروارد کردن ترافیک پورت ۸۰۸۰ ورودی به سرور، به پورت ۸۰ در یک سرور داخلی با IP 192.168.1.5:

توجه : اطمینان حاصل کنید که masquerading در Zone مربوطه فعال است.

فعال کردن Port Forwarding

sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.5 --permanent

sudo firewall-cmd --reload

 

۵. نمونه سناریو برای یک سرور وب

فرض کنید یک سرور وب دارید که نیازهای زیر را دارد:

  • دسترسی SSH از همه جا (فقط برای مدیریت)
  • دسترسی HTTP و HTTPS برای عموم
  • یک اپلیکیشن بک اند روی پورت ۵۰۰۰ که فقط از IP داخلی ۱۹۲.۱۶۸.۱.۲۰ قابل دسترسی است.
  • Ping مجاز باشد.

 

مراحل پیکربندی:

  1. بررسی Zone فعال: مطمئن شوید اینترفیس اصلی وب سرور در Zone public است.
    sudo firewall-cmd --get-active-zones
  1. اجازه SSH، HTTP، HTTPS:
    sudo firewall-cmd --zone=public --add-service=ssh --permanent
    sudo firewall-cmd --zone=public --add-service=http --permanent
    sudo firewall-cmd --zone=public --add-service=https --permanent

 

  1. اجازه پینگ (icmp-echo-request):
    sudo firewall-cmd --zone=public --add-icmp-block=echo-request --permanent

برای اجازه دادن، از remove-icmp-block استفاده کنید و مطمئن شوید که مسدود نشده است.

اگر می خواهید صراحتا اجازه دهید (که در public به طور پیش فرض است):

    # sudo firewall-cmd --zone=public --add-rich-rule='rule protocol value="icmp" accept' --permanent

 

به طور پیش فرض، Ping (ICMP echo-request) در Zone public مجاز است، مگر اینکه صراحتاً مسدود شده باشد. برای اطمینان از اجازه، نیازی به اضافه کردن قانون خاصی نیست، مگر اینکه قبل تر آن را مسدود کرده باشید.

 

  1. محدود کردن دسترسی به پورت ۵۰۰۰:
    sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.20" port port="5000" protocol="tcp" accept' --permanent
  1. اعمال تغییرات:
    sudo firewall-cmd --reload
  1. بررسی قوانین اعمال شده:
    sudo firewall-cmd --zone=public --list-all

 

با این تنظیمات، وب سرور شما امن و در عین حال قابل دسترسی خواهد بود. این بخش تنها گوشه ای از قابلیت های Firewalld را نشان می دهد. با مطالعه مستندات و تمرین، می توانید پیکربندی های پیچیده تری را نیز اعمال کنید.

اکنون که با Firewalld و کاربردهای عملی آن آشنا شدید، زمان آن رسیده تا نگاهی دقیق تر به مقایسه آن با CSF/LFD بیندازیم و ببینیم چرا Firewalld جایگزین مدرن و مناسب تری محسوب می شود.

 

مقایسه Firewalld با CSF

 

مقایسه Firewalld با CSF

 

CSF (ConfigServer Security & Firewall) همراه با LFD (Login Failure Daemon) سال هاست که ابزاری محبوب برای مدیریت فایروال و امنیت سرورهای لینوکس، به ویژه در محیط های میزبانی وب مانند cPanel، بوده اند. اما با توجه به پایان عمر پشتیبانی CSF، نیاز به یک جایگزین مدرن و پایدار احساس می شود.

 

سادگی vs امکانات: یک نگاه اجمالی

ویژگی/معیار CSF/LFD Firewalld
معماری مبتنی بر اسکریپت های iptables، پیچیده و monolithic مبتنی بر Zoneها، D-Bus، با ساختار ماژولار و شی گرا
مدیریت قوانین ویرایش دستی فایل های پیکربندی و راه اندازی مجدد سرویس دستور firewall-cmd، تغییرات runtime و permanent
واسط کاربری خط فرمان و واسط کاربری گرافیکی (معمولاً در cPanel) خط فرمان و ابزار گرافیکی firewall-config
پشتیبانی از توزیع بیشتر روی RHEL/CentOS و دبیان/اوبونتو پشتیبانی می شود استاندارد توزیع های مدرن لینوکس (RHEL/CentOS/Fedora)
نیاز به reload تغییرات معمولاً نیاز به restart کامل CSF دارد reload بدون قطع ارتباطات فعلی
مفاهیم اصلی P_IN, P_OUT, IP_ALLOW, IP_DENY, Port-specific rules Zones, Services, Rich Rules, Direct Rules
محافظت Brute-Force یکپارچه با LFD نیاز به ابزار مکمل مانند Fail2ban
امنیت پیش فرض بسیار سختگیرانه (همه پورت ها بسته جز موارد مشخص) متعادل تر (Zone پیش فرض public نسبتاً امن)
گسترش پذیری اضافه کردن قوانین پیچیده نیازمند درک عمیق iptables Rich Rules، Direct Rules و پشتیبانی از ماژول های جدید
پیچیدگی یادگیری متوسط تا بالا متوسط

نقاط قوت Firewalld نسبت به CSF

  1. معماری مدرن و ماژولار: Firewalld بر پایه D-Bus و مفهوم Zone بنا شده است، که آن را بسیار انعطاف پذیرتر و قابل گسترش تر از رویکرد اسکریپت محور CSF می کند.
  2. مدیریت آسان تر: با استفاده از دستور firewall-cmd، مدیریت قوانین فایروال بسیار ساده تر و خطایابی آن راحت تر است. مفهوم تغییرات runtime و permanent به مدیران امکان می دهد تا بدون تأثیرگذاری بر سرویس های فعال، قوانین را تست کنند.
  3. پشتیبانی از reload بدون قطع اتصال: Firewalld می تواند قوانین خود را بدون نیاز به قطع اتصالات فعال (مانند restart در CSF) بارگذاری مجدد کند. این یک مزیت بزرگ برای سرورهای تولید است.
  4. Zone-based Security: رویکرد منطقه محور به شما امکان می دهد تا اینترفیس های شبکه خود را بر اساس سطح اعتماد به Zoneهای مختلفی اختصاص دهید و قوانین متفاوتی برای هر Zone اعمال کنید. این کار به خصوص در سناریوهای پیچیده تر با چندین شبکه (مانند DMZ) بسیار مفید است.
  5. Rich Rules: Rich Rules یک زبان قدرتمند برای تعریف قوانین پیچیده تر مانند محدودیت های زمانی، محدودیت های بر اساس آدرس IP مبدأ/مقصد، و عملیات های پیشرفته NAT را ارائه می دهد.
  6. یکپارچگی بهتر با سیستم: Firewalld به عنوان بخشی از اکوسیستم Systemd، به خوبی با سیستم عامل های مدرن لینوکس یکپارچه شده است.

 

مواردی که Firewalld نیاز به مکمل دارد (مثلا Fail2ban برای جلوگیری از brute-force)

در حالی که Firewalld یک فایروال عالی است، به تنهایی تمام جنبه های امنیتی را پوشش نمی دهد. یکی از نقاط قوتی که CSF (به خصوص با LFD) داشت، توانایی آن در شناسایی و مسدود کردن خودکار حملات brute-force بود. Firewalld به تنهایی این قابلیت را ندارد.

اینجاست که ابزارهایی مانند Fail2ban وارد عمل می شوند. Fail2ban با نظارت بر فایل های لاگ سرویس های مختلف (مانند SSH، Apache، Nginx، Mail Serverها) و شناسایی تلاش های مکرر ورود ناموفق (یا سایر الگوهای حمله)، می تواند به طور خودکار آدرس IP مهاجم را برای مدت زمان مشخصی در فایروال مسدود کند.

در این خصوص نیز مقاله ای کامل موجود است که از این لینک میتوانید به آن دسترسی داشته باشید. 

پس از درک اهمیت Firewalld به عنوان جایگزین مدرن و نقاط قوت آن، اکنون زمان آن است که بهترین راهکار امنیتی را با ترکیب Firewalld و Fail2ban ایجاد کنیم. این ترکیب قدرتمند، خلاء موجود در Firewalld برای مقابله با حملات Brute-Force را پر می کند و یک سطح امنیتی جامع تر را فراهم می آورد.

همانطور که قبلاً اشاره شد، Firewalld به تنهایی ابزاری برای شناسایی و مسدودسازی خودکار حملات Brute-Force نیست. این وظیفه به بهترین نحو توسط **Fail2ban** انجام می شود. Fail2ban با نظارت بر فایل های لاگ و شناسایی الگوهای حمله، به Firewalld دستور می دهد تا آدرس های IP مخرب را به طور موقت یا دائم مسدود کند.

 

چرا ترکیب Firewalld + Fail2ban بهترین جایگزین CSF/LFD محسوب می شود؟

  1. تفکیک مسئولیت ها و تخصص:
    • Firewalld: متمرکز بر مدیریت قوانین فایروال، Zoneها، پورت ها و سرویس ها است.
    • Fail2ban: متخصص در تحلیل لاگ ها، شناسایی حملات و واکنش به آن ها.

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

 

  1. انعطاف پذیری بالا:
    • Fail2ban قابلیت سفارشی سازی بالایی دارد. می توانید “فیلتر”های (filters) خاص خود را برای شناسایی الگوهای حمله در لاگ های مختلف بنویسید و “جیل”های (jails) متفاوتی با قوانین مسدودسازی خاص برای هر سرویس (SSH, Apache, Nginx, Postfix و…) تعریف کنید.
    • Firewalld با معماری Zone-based و Rich Rules، امکان تعریف قوانین امنیتی بسیار دقیق را فراهم می کند.

 

  1. بهره وری و کارایی:
    • Fail2ban تنها زمانی که یک حمله شناسایی شود، به Firewalld دستور می دهد تا تغییری ایجاد کند. این رویکرد بار پردازشی را کاهش می دهد و Firewalld را از انجام کارهای غیرضروری بازمی دارد.
    • Firewalld تغییرات را به سرعت و بدون نیاز به راه اندازی مجدد کامل سرویس (با reload) اعمال می کند.

 

  1. راهکار مدرن و به روز:
    • هر دو Firewalld و Fail2ban ابزارهای فعال و به روز هستند که به طور مداوم توسعه می یابند و با توزیع های مدرن لینوکس سازگارند.

 

پس از پیکربندی Firewalld و Fail2ban، که هسته اصلی دفاع امنیتی سرور لینوکس شما را تشکیل می دهند، زمان آن است که به نکات امنیتی تکمیلی بپردازیم. امنیت یک فرآیند مداوم است و هرگز نباید تنها به یک لایه دفاعی اکتفا کرد.

 

نکات امنیتی تکمیلی

 

به روزرسانی های امنیتی

یکی از ساده ترین و در عین حال حیاتی ترین اقدامات امنیتی، به روز نگه داشتن سیستم عامل و نرم افزارهاست.
با اجرای منظم دستورهای زیر می توانید بسته های امنیتی را نصب کنید:

در Debian/Ubuntu

sudo apt update && sudo apt upgrade -y

در RHEL/CentOS/Fedora

sudo yum update -y

یا در نسخه های جدیدتر:

sudo dnf upgrade -y

بسته های امنیتی معمولاً پچ هایی برای آسیب پذیری های شناخته شده هستند. بی توجهی به این پچ ها می تواند به مهاجم اجازه سوءاستفاده بدهد.

    اصل حداقل دسترسی (Least Privilege)

    • به کاربران فقط دسترسی هایی بدهید که واقعاً نیاز دارند.
    • دسترسی root را محدود کنید و از sudo برای اجرای دستورات مدیریتی استفاده کنید.
    • اگر کاربری نیاز به دسترسی دائمی ندارد، به محض پایان کار، دسترسی او را حذف کنید.

     

    استفاده از کلیدهای SSH به جای پسورد

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

    • ورود با رمز عبور (Password Authentication) را غیرفعال کنید.
    • از SSH Key استفاده کنید.

    فایل تنظیمات /etc/ssh/sshd_config را ویرایش کرده و مطمئن شوید گزینه های زیر به درستی تنظیم شده اند:

    PasswordAuthentication no
    PermitRootLogin no

    سپس سرویس SSH را بازنشانی کنید:

    sudo systemctl restart sshd

    نظارت و مانیتورینگ

    • لاگ ها را به طور منظم بررسی کنید (/var/log/secure, /var/log/auth.log و غیره).
    • از ابزارهایی مانند Logwatch یا GoAccess برای تحلیل لاگ ها استفاده کنید.
    • برای مانیتورینگ جامع تر می توانید از سیستم های SIEM (مانند Graylog, ELK Stack) بهره ببرید.

     

    استفاده از SELinux یا AppArmor

    فایروال جلوی دسترسی های شبکه ای ناخواسته را می گیرد، اما برای محدود کردن دسترسی های داخلی سرویس ها باید از ابزارهایی مانند:

    • SELinux (در CentOS/RHEL/Fedora)
    • AppArmor (در Ubuntu/Debian)

    استفاده کنید. این ابزارها اجرای فرایندها را محدود به منابع مورد نیازشان می کنند و جلوی سوءاستفاده مهاجم پس از نفوذ را می گیرند.

     

    تهیه نسخه پشتیبان (Backup)

    • همیشه از داده ها و تنظیمات حیاتی خود نسخه پشتیبان منظم تهیه کنید.
    • بکاپ ها را در یک محل جدا (Offsite) یا روی فضای ابری ذخیره کنید.
    • بازگردانی بکاپ ها را نیز هر از گاهی تست کنید تا مطمئن شوید قابل استفاده هستند.

     

    جمع بندی

    در این مقاله، با Firewalld به عنوان یک جایگزین مدرن و ماژولار برای CSF/LFD آشنا شدیم. دیدیم که چگونه می توان با استفاده از Zoneها، Serviceها و Rich Rules، به شکلی ساده اما قدرتمند قوانین فایروال را مدیریت کرد. همچنین فهمیدیم که چرا Firewalld با معماری جدید و انعطاف پذیری بالا، آینده مدیریت فایروال در لینوکس محسوب می شود.

    با این حال، Firewalld به تنهایی کافی نیست. برای مقابله با حملات Brute-Force، ترکیب آن با Fail2ban یک راهکار جامع و مؤثر را ارائه می دهد که به خوبی می تواند جای خالی CSF/LFD را پر کند.

    در نهایت، امنیت سرور تنها به یک ابزار خلاصه نمی شود. رعایت نکات تکمیلی امنیتی مانند به روزرسانی منظم، اصل حداقل دسترسی، استفاده از SSH Key، مانیتورینگ، بهره گیری از SELinux/AppArmor و تهیه بکاپ، همه بخش های حیاتی یک استراتژی امنیتی کامل هستند.

    نتیجه: اگر امروز بخواهید یک فایروال مدرن، قابل اعتماد و ساده در لینوکس راه اندازی کنید، Firewalld همراه با Fail2ban بهترین گزینه موجود است. این ترکیب نه تنها امنیت شبکه شما را به سطحی بالاتر می برد، بلکه مدیریت آن را هم ساده تر می سازد. 

    ۵/۵ - (۴ امتیاز)
    جستجو

    سرفصل های مقاله

    نظرات کاربران
    دیدگاهتان را بنویسید

    لطفا علاوه بر متن نظر، نام و ایمیل خود را نیز وارد کنید. (ایمیل شما منتشر نخواهد شد)