اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری، سرور مجازی/اختصاصی، هاست و دامنه

اَبرِ دیجیتال، مرکز تخصصی ارائه سرویس های ابری

دریافت مشاوره رایگان

آموزش نصب و کانفیگ CSF در لینوکس

بخش اول — مقدمه جامع و اصول پایه‌ای CSF

 

توضیحات کلی و هدف

 

CSF (ConfigServer Security & Firewall) یک راهکار نرم‌افزاری است که مدیریت فایروال روی سرورهای لینوکس را ساده و امن می‌کند. CSF در واقع لایه‌ای راحت برای ادارهٔ قواعد iptables (یا در برخی موارد nftables) فراهم می‌آورد و همراه با یک سرویس نگهبان به‌نام LFD (Login Failure Daemon) عمل می‌کند که لاگ‌های مختلف سیستم و سرویس‌ها را مانیتور می‌کند و در صورت مشاهدهٔ الگوهای مخرب (مثل تلاش‌های مکرر لاگین ناموفق، اسکن پورت، ارسال اسپم و غیره) آدرس‌های منبع را موقتاً یا دائماً بلاک می‌کند. هدف این بخش آشنایی کامل با مفهوم، نقش و محدودیت‌های CSF و آماده‌سازی ذهنی برای پیاده‌سازی امن و بدون ریسک است.

 

چرا از CSF استفاده کنیم؟

 

– آسانی مدیریت: جایگزین نوشتن مستقیم قوانین پیچیدهٔ iptables می‌شود و دستورات مدیریتی ساده دارد.

– مانیتورینگ لاگ‌ها: LFD لاگ‌های سیستم و سرویس‌ها را برای تشخیص رفتارهای ناسالم بررسی می‌کند.

– محافظت در برابر حملات متداول: مانند brute‑force، SYN flood، port scan و مواردی که منجر به مصرف منابع یا نفوذ می‌شوند.

– ادغام با کنترل پنل‌ها: پلاگین/ماژول‌هایی برای cPanel، DirectAdmin و Webmin وجود دارد که مدیریت برای میزبانان وب را آسان‌تر می‌کند.

– پیکربندی انعطاف‌پذیر: امکان تنظیم محدودیت‌ها، لیست‌های مجاز/ممنوع، قوانین سفارشی و واکنش‌های خودکار.

 

محدودیت‌ها و نکات احتیاط

 

– CSF در سطح کاربر-نرم‌افزاری کار می‌کند؛ اگر شبکهٔ خارجی (مثلاً Security Group در AWS یا Load Balancer در جلوی سرور) ترافیک را قبل از رسیدن به سرور فیلتر کند، CSF نمی‌تواند آن را جایگزین کند.

– اگر کنترلر فایروال دیگری مانند firewalld یا ufw فعال باشد، ممکن است تداخل رخ دهد. پیشنهاد می‌شود پیش از فعال‌سازی CSF، یکی از آنها را خاموش یا به‌درستی هماهنگ کنید.

– در زمان فعال‌سازی، اگر پورت SSH یا پورت پنل خود را در لیست مجاز وارد نکنید و آی‌پی مدیریت را allow نکنید، ممکن است دسترسی خود را از دست بدهید. بنابراین مراحل آماده‌سازی و افزودن آی‌پی مدیریتی حیاتی است.

– پشتیبانی IPv6 ممکن است در نسخه‌های قدیمی ناقص باشد؛ اگر سرور IPv6 دارد، باید تنظیمات مرتبط را بررسی کنید و از فعال بودن ip6tables یا معادل آن اطمینان حاصل کنید.

 

پیش‌نیازهای نرم‌افزاری و سخت‌افزاری

 

– دسترسی root یا حسابی با دسترسی sudo.

– بسته‌های پرل (Perl) و چند ماژول Perl برای اجرای اسکریپت‌های CSF/LFD.

– ابزارهای پایه مانند wget، tar، unzip.

– MTA (مانند sendmail یا postfix) برای ارسال ایمیل‌های هشدار (اختیاری اما توصیه‌شده).

– پشتیبان‌گیری از تنظیمات شبکه و iptables قبل از اعمال تغییرات.

 

 

دستورالعمل‌ها — آماده‌سازی اولیه برای توزیع‌های Debian/Ubuntu

 

در این بخش، ابتدا سیستم را به‌روز می‌کنیم و سپس بسته‌های لازم برای نصب و اجرای CSF را نصب می‌کنیم. اگر UFW فعال است، آن را غیرفعال می‌کنیم تا تداخلی ایجاد نشود. این گام‌ها تضمین می‌کنند ماژول‌های موردنیاز پرل نصب شده و ابزارهای کمکی در دسترس هستند.

 

apt update
apt upgrade -y
apt install -y wget perl libwww-perl liblwp-protocol-https-perl unzip libio-socket-ssl-perl libnet-libidn-perl libcrypt-ssleay-perl libio-socket-inet6-perl sendmail-bin dnsutils
ufw status
ufw disable
systemctl stop ufw.service

 

 

دستورالعمل‌ها — آماده‌سازی اولیه برای توزیع‌های RHEL/CentOS/AlmaLinux/Rocky

 

در توزیع‌های مبتنی بر RHEL، بسته‌های Perl و ابزارهای لازم را نصب می‌کنیم. اگر firewalld فعال است و قصد داریم CSF را جایگزین کنیم، آن را متوقف و غیرفعال می‌کنیم. اگر می‌خواهید firewalld را نگه دارید، باید با دقت بررسی کنید که تداخلی ایجاد نشود.

 

dnf update -y
dnf install -y wget perl perl-libwww-perl perl-LWP-Protocol-https unzip libnet-libidn-perl perl-Time-HiRes sendmail
systemctl stop firewalld
systemctl disable firewalld

 

 

چک‌لیست پیش از نصب CSF (پیشنهاد عملیاتی)

 

– پورت SSH و پورت‌های کنترل پنل در دسترس و شناخته‌شده باشد.

– آی‌پی مدیریتی را یادداشت کرده و آماده اضافه کردن به لیست مجاز باشید.

– نسخهٔ فعلی iptables را با iptables-save ذخیره کنید.

– اگر سرور پشت پروکسی یا load balancer است، جزئیات شبکه را بدانید (آیا IP واقعی در لاگ‌ها هست یا نه).

 

iptables-save > /root/iptables-before-csf.save

 

 

بخش دوم — دانلود، نصب و تست سازگاری CSF

 

توضیحات کلی

در این بخش بستهٔ رسمی CSF را دانلود و نصب می‌کنیم. نصب‌کننده فایل‌ها را در مسیرهای مناسب قرار می‌دهد و اسکریپت نصب برخی چک‌های ابتدایی را انجام می‌دهد. پس از نصب باید اسکریپت تست را اجرا کنیم تا اطمینان حاصل شود سرور مجازی از نظر ماژول‌های kernel و iptables برای اجرای CSF مناسب است. اگر تست نشان دهد که CSF نمی‌تواند کار کند، باید خطاهای نشان‌داده‌شده را رفع کنیم (مثلاً بارگذاری ماژول‌های kernel، نصب بستهٔ iptables یا فعال‌سازی ip6tables برای IPv6).

 

دستورالعمل‌های دانلود و نصب CSF

cd /usr/src
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

 

 

اجرای تست سازگاری و بررسی خروجی

perl /usr/local/csf/bin/csftest.pl

 

تفسیر نتایج تست

– خروجی مطلوب: RESULT: csf should function on this server

در این حالت می‌توان ادامه داد و CSF را پیکربندی و فعال کرد.

– در صورت مشاهدهٔ خطاها یا هشدارها: متن خطاها را بخوانید. معمولاً مشکلات مربوط به عدم وجود ماژول iptables، نبود پکیج‌های netfilter یا محدودیت‌های هسته است. بسته به متن خطاها، باید ماژول‌ها را بارگذاری یا بسته‌های مرتبط را نصب کنید یا در محیط‌های خاص (مانند containers) از روش‌های جایگزین استفاده کنید.

 

نصب فورک جایگزین (در صورت نیاز)

اگر پروژهٔ اصلی CSF در مخزن قابل‌دسترس نباشد یا به‌روزرسانی‌ها متوقف شده باشد، فورک‌هایی مانند Sentinel وجود دارند که قواعد و عملکرد مشابهی ارائه می‌دهند. نصب آنها معمولاً مشابه نصب CSF است ولی آدرس دانلود متفاوت است.

 

cd /usr/src
wget https://github.com/sentinelfirewall/sentinel/raw/refs/heads/main/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh

 

 

بخش سوم — پیکربندی اولیه و تغییر حالت تست به عملیاتی (TESTING → 0)

 

 

پس از نصب، CSF به‌صورت پیش‌فرض در حالت آزمایشی یا TESTING=1 قرار دارد. در این حالت CSF قوانین را ایجاد نمی‌کند تا ریسک قفل‌شدن مدیر کاهش یابد. قبل از برداشتن حالت تست، باید فایل پیکربندی اصلی را ویرایش کرده و پورت‌های ضروری و آی‌پی مدیریتی را اضافه کنیم. دو فایل حیاتی وجود دارد: /etc/csf/csf.conf که تنظیمات اصلی را نگه می‌دارد و /etc/csf/csf.allow و /etc/csf/csf.deny که لیست‌های صریح آدرس‌های مجاز و ممنوع را ذخیره می‌کنند. در این بخش به‌صورت گام‌به‌گام این تغییرات را انجام می‌دهیم.

 

ویرایش فایل پیکربندی اصلی

nano /etc/csf/csf.conf

 

 

پیدا کردن و تغییر مقدار TESTING

پیدا کنید TESTING = “1”

تغییر دهید به TESTING = “0”

 

توضیحات پورت‌ها و مثال‌های امن

– TCP_IN: پورت‌های TCP ورودی که باید باز باشند (مثلاً SSH، HTTP، HTTPS). فقط پورت‌هایی را باز کنید که نیاز دارید. اگر پورت SSH غیرپیش‌فرض دارید (مثلاً 2222)، آن را اضافه کنید.

– TCP_OUT: پورت‌های TCP خروجی که سرور باید بتواند به آنها وصل شود (مثلاً برای بروزرسانی یا ایمیل).

– UDP_IN/UDP_OUT: اگر نیاز به سرویس‌هایی دارید که از UDP استفاده می‌کنند (مثلاً DNS)، آن‌ها را اضافه کنید.

نمونهٔ پایه:

پیدا کنید TCP_IN

TCP_IN = “22,80,443”

پیدا کنید TCP_OUT

TCP_OUT = “20,21,22,53,80,443”

 

اضافه کردن آی‌پی مدیریتی به لیست مجاز

echo "203.0.113.45 # admin home" >> /etc/csf/csf.allow

 

 

بارگذاری مجدد و فعال‌سازی CSF و LFD

csf -ra
csf -e

 

 

بررسی اولیه و اطمینان از نداشتن بلاک شدن ناخواسته

csf -l
csf -p
systemctl status lfd
systemctl status csf

 

 

بخش چهارم — مدیریت لیست‌ها و استفاده روزمره

 

 

CSF چند فرمان مدیریتی ساده برای افزودن یا حذف IPها، لیست کردن قواعد و مشاهده وضعیت ارائه می‌دهد. این فرمان‌ها باید به‌عنوان مدیر سرور استفاده شوند. بهتر است قبل از بلاک کردن دستی IPها، علت را بررسی کنید و در صورت نیاز توضیحی به عنوان کامنت وارد کنید. همچنین قابلیت بلاک کردن موقت یا دائمی وجود دارد. csf.allow برای IPهای مجاز و csf.deny برای IPهای بلاک شده استفاده می‌شود. استفاده از csf -g برای جستجوی IPها در قواعد مفید است.

 

دستورات مدیریت لیست‌ها و نمونه‌ها

csf -a 203.0.113.45 "admin ip"
csf -d 198.51.100.12 "blocked ip"
csf -ar 203.0.113.45
csf -dr 198.51.100.12
csf -g 198.51.100.12
csf -l
csf -p
csf -x
csf -e
csf -r

 

 

توضیح هر فرمان

– csf -a IP “comment”: اضافه کردن IP به لیست مجاز.

– csf -d IP “comment”: اضافه کردن IP به لیست ممنوع.

– csf -ar IP: حذف IP از لیست مجاز و نیز از قوانین فعال.

– csf -dr IP: حذف IP از لیست ممنوع و باز کردن دسترسی.

– csf -g IP: جستجوی IP در قواعد جاری و لیست‌های allow/deny.

– csf -l: نمایش لیست بلاک شده فعلی (iptables rules).

– csf -p: نمایش پورت‌های شنونده و وضعیت.

– csf -x: غیرفعال کردن CSF (مثلاً برای رفع مشکل فوری).

– csf -e: فعال کردن CSF.

– csf -r: بارگذاری مجدد قواعد از فایل پیکربندی.

 

بخش پنجم — پیکربندی LFD و تنظیم حساسیت‌ها

 

 

LFD (Login Failure Daemon) بخشی است که لاگ‌های سیستم را مانیتور می‌کند تا تلاش‌های ناموفق ورود یا الگوهای غیرمعمول را شناسایی کند. پیکربندی LFD به شما امکان می‌دهد حساسیت را تنظیم کنید، سرویس‌هایی را که مانیتور می‌شوند مشخص کنید، و واکنش‌ها (بلاک موقت یا دائمی، ارسال ایمیل هشدار و غیره) را تعیین کنید. متغیرهای مهم در فایل csf.conf عبارت‌اند از LF_TRIGGER، LF_SSHD، LF_INTERVAL، LF_PERMBLOCK و دیگر گزینه‌هایی که رفتار LFD را کنترل می‌کنند. کاهش یا افزایش حساسیت بسته به نوع سرور و تعداد لاگین‌های معمول کاربران باید انجام شود تا از بلاک شدن کاربران مشروع جلوگیری شود.

 

ویرایش و مثال‌های تنظیم

nano /etc/csf/csf.conf

 

 

تنظیمات پیشنهادی برای سرورهایی با تعداد لاگین طبیعی متوسط

پیدا کنید LF_TRIGGER

LF_TRIGGER = “5”

پیدا کنید LF_SSHD

LF_SSHD = “1”

پیدا کنید LF_INTERVAL

LF_INTERVAL = “300”

پیدا کنید LF_PERMBLOCK

LF_PERMBLOCK = “0”

 

توضیح مقادیر

– LF_TRIGGER: تعداد تلاش‌های ناموفق که قبل از اقدام LFD رخ می‌دهد.

– LF_SSHD: فعال‌سازی مانیتور SSH.

– LF_INTERVAL: بازه زمانی (ثانیه) که LFD لاگ‌ها را بررسی می‌کند.

– LF_PERMBLOCK: اگر روی 1 باشد، بلاک‌ها دائمی می‌شوند؛ معمولاً 0 یا مقادیر محافظه‌کارانه بهتر است.

 

اضافه کردن فایل‌های لاگ سرویس دلخواه برای مانیتورینگ

اگر سرویس‌های سفارشی دارید که لاگین یا خطا تولید می‌کنند و می‌خواهید LFD آنها را مانیتور کند، می‌توانید آن فایل لاگ را به فایل‌های مانیتور اضافه کنید.

 

بخش ششم — پیکربندی IPv6

 

 

اگر سرور شما آدرس IPv6 دارد، نیاز است که CSF و سیستم‌عامل هر دو برای مدیریت ip6tables یا nftables پیکربندی شوند. پشتیبانی ناقص IPv6 در نسخه‌های قدیمی CSF ممکن است باعث شود برخی قواعد برای IPv6 اعمال نشوند. بنابراین ابتدا وضعیت IPv6 را بررسی کنید، سپس در فایل پیکربندی CSF مقدار IPV6 را برابر 1 قرار دهید و از وجود ابزار ip6tables یا معادل nftables اطمینان حاصل کنید. همچنین جدولی از آدرس‌های allow/deny که شامل آدرس‌های IPv6 است به‌صورت مناسب نگهداری کنید.

 

فعال کردن IPv6 در CSF

nano /etc/csf/csf.conf

 

پیدا کنید IPV6

IPV6 = “1”

ذخیره و خروج

 

اطمینان از وجود ip6tables

ip6tables -L -n
systemctl status ip6tables

 

 

در صورت استفاده از nftables، باید قوانین IPv6 را مطابق با ساختار nft پیاده‌سازی کنید یا از روش‌های پشتیبانی‌شده توسط CSF بهره ببرید.

 

 

بخش هفتم — ادغام با کنترل پنل‌ها (cPanel, DirectAdmin, Webmin, Plesk)

 

 

CSF با بسیاری از کنترل پنل‌های میزبانی وب سازگار است یا پلاگین‌هایی دارد که امکان مدیریت از طریق رابط گرافیکی را فراهم می‌کنند. هنگام ادغام با کنترل پنل باید به پورت‌های پنل، سرویس‌های ایمیل و پورت‌های دیتابیس توجه کنید تا دسترسی مدیریتی قطع نشود. همچنین برخی کنترل پنل‌ها تنظیماتی دارند که در هنگام نصب CSF باید از آنها بهره برد (مثلاً ماژول CSF در WHM برای cPanel). در سرورهای shared host که کاربران متعدد دارند، تنظیمات LF ممکن است نیاز به تعدیل برای جلوگیری از بلاک شدن کاربران مشروع داشته باشد.

 

نمونهٔ پورت‌های پرکاربرد برای سرور cPanel

TCP_IN = “20,21,22,25,53,80,110,143,443,465,587,993,995,2082,2083,2086,2087,2095,2096,3306,30000:35000”

 

در DirectAdmin و Webmin نیز پورت‌های مشابه بسته به کانفیگ باید وارد شوند.

 

بخش هشتم — نکات محیط‌های ابری و پشت Load Balancer/Proxy

 

 

در محیط‌های ابری، ترافیک به‌صورت معمول از طریق لایه‌های شبکه‌ای خارج از سرور (مانند Security Groups در AWS، Azure Network Security Groups، یا Load Balancers) فیلتر یا هدایت می‌شود. CSF در سرور داخلی اجرا می‌شود و IPهایی که در لاگ‌ها مشاهده می‌کند ممکن است IPهای پروکسی یا LB باشند نه کلاینت‌های نهایی. در چنین شرایطی چند رویکرد وجود دارد:

– تنظیم لاگ وب‌سرور به ثبت IP واقعی از هدر X-Forwarded-For و پیکربندی LFD/CSF برای استفاده از این اطلاعات (در صورت پشتیبانی).

– Allow کردن رنج IPهای load balancer یا proxy به منظور جلوگیری از بلاک شدن آنها.

– غیرفعال کردن مانیتورینگ لاگ وب‌سرور توسط LFD اگر ثبت IPها قابل اطمینان نباشد.

– اطمینان از اینکه قوانین شبکهٔ محیط کلود (Security Groups) با قواعد CSF تداخل نمی‌کنند.

 

مثال: اضافه کردن رنج IPهای AWS ELB به لیست مجاز (نمونه شمارهٔ فرضی)

echo "198.51.100.0/24 # AWS ELB" >> /etc/csf/csf.allow

 

 

بخش نهم — عیب‌یابی رایج و راه‌حل‌ها

 

 

در زمان نصب یا اجرا ممکن است با مشکلاتی روبه‌رو شوید؛ شایع‌ترین آنها قطع دسترسی SSH، خطاهای csftest.pl، تداخل با firewalld/ufw، و بلاک شدن آی‌پیهای مشروع توسط LFD است. در این بخش روش‌های عیب‌یابی و اقدامات سریع را توضیح می‌دهیم.

 

قطع دسترسی SSH پس از فعال‌سازی CSF

علت: معمولاً پورت SSH یا آی‌پی مدیریت در TCP_IN یا csf.allow اضافه نشده‌اند.

راه‌حل سریع: از کنسول ارائه

به این مطلب امتیاز بدهید:

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


17 + 16

قوانین

قوانین ارسال دیدگاه

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