🔥 آموزش امنیت سرور لینوکس

آموزش نصب فایروال CSF در لینوکس؛ تنظیم حرفه‌ای، جلوگیری از قفل شدن SSH و رفع خطاهای رایج

CSF یکی از محبوب‌ترین فایروال‌های مدیریتی برای سرورهای لینوکسی است که همراه با LFD می‌تواند پورت‌ها، IPها، تلاش‌های ورود ناموفق، اسکن پورت، حملات brute force و رفتارهای مشکوک را کنترل کند. در این آموزش، نصب CSF را با SSH، تنظیمات مهم، چالش‌های واقعی کاربران، خطاهای رایج و راه‌حل‌های عملی بررسی می‌کنیم.

CSF چیست؟ فرق CSF با فایروال ساده لینوکس

CSF یا ConfigServer Security & Firewall یک ابزار مدیریتی برای کنترل فایروال لینوکس است. CSF خودش هسته فایروال نیست؛ بلکه روی مکانیزم‌های فایروال لینوکس مثل iptables/ip6tables و Netfilter کار می‌کند و مدیریت پورت‌ها، IPهای مجاز/مسدود، محدودسازی اتصال‌ها و قوانین امنیتی را ساده‌تر می‌کند.

بخش مهم CSF فقط باز و بسته کردن پورت نیست. سرویس LFD یا Login Failure Daemon همراه آن رفتارهای مشکوک مثل تلاش‌های زیاد برای ورود به SSH، FTP، ایمیل یا پنل را بررسی می‌کند و می‌تواند IP مهاجم را مسدود کند.

CSF برای چه کسانی مناسب است؟

  • مدیران سرور مجازی و اختصاصی که می‌خواهند پورت‌ها را دقیق کنترل کنند.
  • کاربران cPanel/WHM، DirectAdmin، CyberPanel و سرورهای وب مستقل.
  • سایت‌های وردپرسی، فروشگاهی و پروژه‌هایی که حملات SSH، FTP، SMTP یا اسکن پورت دارند.
  • تیم‌هایی که می‌خواهند به‌جای دستورهای پراکنده iptables، یک لایه مدیریتی قابل فهم داشته باشند.

قبل از نصب CSF؛ این چک‌لیست را جدی بگیرید

بیشترین مشکلی که کاربران هنگام نصب فایروال تجربه می‌کنند، قفل شدن SSH یا بسته شدن پورت کنترل‌پنل است. بنابراین قبل از نصب CSF، این چند مرحله را انجام دهید.

یک نشست SSH دوم باز نگه داریدتا وقتی مطمئن نشدید CSF درست کار می‌کند، نشست SSH فعلی را نبندید.
IP خودتان را پیدا و allow کنیداگر IP شما ثابت نیست، حداقل در زمان نصب آن را در csf.allow اضافه کنید.
پورت SSH و پنل را بدانیدپورت 22 یا پورت سفارشی SSH، پورت‌های 80/443 و پورت کنترل‌پنل را قبل از فعال‌سازی وارد کنید.
از تنظیمات شبکه بکاپ بگیریدروی سرور حساس، قبل از نصب firewall snapshot یا backup داشته باشید.
فایروال‌های همزمان را بررسی کنیداجرای همزمان چند مدیر فایروال مثل UFW، firewalld و CSF می‌تواند باعث تداخل و قوانین گیج‌کننده شود.

دستورهای آماده قبل از نصب

# نمایش IP اتصال SSH شما
echo “$SSH_CONNECTION”

# پیدا کردن IP عمومی از داخل سرور
curl -4 ifconfig.me || curl -4 icanhazip.com

# بررسی پورت‌هایی که الان گوش می‌کنند
ss -tulpn

# بررسی فایروال‌های فعال
systemctl is-active firewalld 2>/dev/null || true
ufw status 2>/dev/null || true
iptables -S 2>/dev/null | head -n 40

هشدار مهم برای جلوگیری از قفل شدن SSH

اگر پورت SSH را در `TCP_IN` قرار ندهید یا IP خودتان را قبل از فعال‌سازی allow نکنید، ممکن است دسترسی SSH قطع شود. همیشه بعد از نصب، اول با یک نشست جدید SSH تست کنید و بعد نشست قبلی را ببندید.

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

نصب CSF معمولاً با دانلود بسته رسمی، Extract کردن و اجرای install.sh انجام می‌شود. قبل از اجرا، مطمئن شوید با کاربر root وارد شده‌اید.

نصب پیش‌نیازها در Ubuntu/Debian

apt update
apt install -y wget curl perl libwww-perl liblwp-protocol-https-perl unzip tar

نصب پیش‌نیازها در AlmaLinux/Rocky/CentOS

dnf install -y wget curl perl-libwww-perl perl-LWP-Protocol-https unzip tar perl
# اگر dnf نبود:
yum install -y wget curl perl-libwww-perl perl-LWP-Protocol-https unzip tar perl

دانلود و نصب CSF

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

تست ماژول‌ها و سازگاری فایروال

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

اگر خروجی تست مشکلی جدی نشان نداد، می‌توانید سراغ تنظیمات اصلی بروید. اگر خطای iptables، ip6tables، kernel modules یا nft/legacy دیدید، قبل از فعال‌سازی نهایی آن را بررسی کنید.

تنظیمات مهم فایل csf.conf

فایل اصلی تنظیمات CSF معمولاً اینجاست:

nano /etc/csf/csf.conf

۱. TESTING را خاموش کنید، اما عجله نکنید

بعد از نصب، CSF معمولاً در حالت تست نصب می‌شود تا اگر اشتباه کردید، فایروال خودش بعد از مدتی غیرفعال شود. وقتی پورت‌ها را تنظیم و تست کردید، مقدار زیر را تغییر دهید:

TESTING = “0”

۲. پورت‌های ورودی و خروجی را تنظیم کنید

مهم‌ترین بخش برای جلوگیری از قفل شدن سایت و پنل، تنظیم `TCP_IN` و `TCP_OUT` است.

# نمونه عمومی برای وب‌سرور ساده با SSH، وب، DNS و ایمیل
TCP_IN = “22,25,53,80,110,143,443,465,587,993,995”
TCP_OUT = “20,21,22,25,53,80,110,113,443,587,993,995”
UDP_IN = “20,21,53”
UDP_OUT = “20,21,53,123”

اگر SSH روی پورت دیگری است

اگر SSH شما مثلاً روی پورت 22222 است، باید همان پورت را در `TCP_IN` بگذارید. فقط نوشتن 22 کافی نیست.

۳. IP خودتان را allow کنید

# اضافه کردن IP خودتان به لیست مجاز
csf -a YOUR.IP.ADDRESS “my admin ip”

# مشاهده فایل allow
cat /etc/csf/csf.allow

۴. اعمال تنظیمات

csf -r
systemctl restart lfd 2>/dev/null || service lfd restart
csf -l | head -n 80

پورت‌های مهم برای کنترل‌پنل‌ها و سرویس‌ها

یکی از رایج‌ترین مشکلات کاربران این است که بعد از نصب CSF، سایت بالا می‌آید ولی پنل باز نمی‌شود، یا ایمیل کار نمی‌کند. دلیل معمولاً این است که پورت‌های لازم در `TCP_IN` و گاهی `TCP_OUT` وارد نشده‌اند.

سرویس پورت‌های رایج توضیح
SSH 22 یا پورت سفارشی قبل از فعال‌سازی CSF حتماً پورت واقعی SSH را وارد کنید.
وب‌سایت 80, 443 HTTP و HTTPS برای باز شدن سایت ضروری هستند.
DNS 53 TCP/UDP اگر سرور DNS هم روی همین سرور است، هر دو پروتکل را بررسی کنید.
ایمیل 25, 465, 587, 110, 143, 993, 995 برای SMTP/IMAP/POP3 بسته به سرویس ایمیل لازم می‌شود.
cPanel/WHM 2082, 2083, 2086, 2087, 2095, 2096 برای ورود کاربران، WHM و Webmail.
DirectAdmin 2222 پورت پیش‌فرض پنل DirectAdmin.
CyberPanel 8090 پورت ورود به پنل CyberPanel.
FTP 21 و Passive Ports اگر FTP دارید، فقط 21 کافی نیست و محدوده Passive هم لازم است.
LiteSpeed/OpenLiteSpeed 7080، 8088 در بعضی نصب‌ها برای کنسول مدیریت یا تست وب‌سرور.

تنظیم LFD برای جلوگیری از Brute Force

LFD لاگ‌های سیستم را بررسی می‌کند و اگر یک IP چند بار ورود ناموفق داشته باشد، می‌تواند آن را block کند. این بخش برای SSH، FTP، ایمیل، cPanel، DirectAdmin و سرویس‌های دیگر مفید است.

# مشاهده لاگ LFD
tail -f /var/log/lfd.log

# وضعیت سرویس
systemctl status lfd –no-pager

# راه‌اندازی مجدد
systemctl restart lfd

تنظیمات مهم امنیتی

  • LF_SSHD: تعداد تلاش ناموفق SSH قبل از ban شدن IP.
  • LF_FTPD: کنترل تلاش‌های ناموفق FTP.
  • LF_SMTPAUTH: مقابله با تلاش‌های ورود به SMTP.
  • CT_LIMIT: محدودسازی تعداد اتصال همزمان از یک IP.
  • PORTFLOOD: کنترل flood روی پورت‌های مشخص.
  • LF_EMAIL_ALERT: ارسال ایمیل هشدار در صورت ban یا رخداد امنیتی.

زیاده‌روی در محدودسازی خطرناک است

اگر مقدارها خیلی سخت‌گیرانه باشند، کاربران واقعی پشت NAT، اینترنت موبایل یا شبکه‌های شرکتی ممکن است اشتباهی ban شوند. برای سایت فروشگاهی یا ناحیه کاربری، تنظیمات را با لاگ واقعی تیون کنید.

مشکلات رایج نصب و تنظیم CSF + راه‌حل

مشکل ۱: بعد از نصب CSF، SSH قطع شد

دلیل معمولاً وارد نکردن پورت SSH در `TCP_IN` یا allow نکردن IP مدیر است.

# اگر هنوز یک نشست SSH باز دارید:
nano /etc/csf/csf.conf
# پورت SSH را به TCP_IN اضافه کنید
csf -r

# اگر موقتاً باید فایروال را خاموش کنید:
csf -x

اگر هیچ SSH باز ندارید، باید از کنسول Rescue/VNC پنل دیتاسنتر وارد شوید و CSF را غیرفعال یا تنظیم کنید.

مشکل ۲: سایت باز نمی‌شود ولی SSH کار می‌کند

احتمالاً پورت‌های 80 و 443 در `TCP_IN` نیستند یا وب‌سرور روی پورت غیرعادی اجرا شده است.

ss -tulpn | grep -E ‘:80|:443’
grep ‘^TCP_IN’ /etc/csf/csf.conf
csf -r

مشکل ۳: پنل cPanel، DirectAdmin یا CyberPanel باز نمی‌شود

پورت پنل را به `TCP_IN` اضافه کنید. برای DirectAdmin معمولاً 2222، برای CyberPanel معمولاً 8090 و برای WHM معمولاً 2087 لازم است.

مشکل ۴: ایمیل ارسال یا دریافت نمی‌شود

پورت‌های SMTP/IMAP/POP3 را بررسی کنید. همچنین در برخی دیتاسنترها پورت 25 از سمت provider بسته است و ربطی به CSF ندارد.

مشکل ۵: با Cloudflare یا CDN، کاربران واقعی ban می‌شوند

اگر سرور IP واقعی کاربران را درست تشخیص ندهد، ممکن است IPهای Cloudflare یا CDN به‌جای IP کاربر دیده شوند. در این حالت باید real visitor IP را در وب‌سرور درست کنید و IPهای رسمی CDN را با دقت allow کنید. لیست IPهای CDN ممکن است تغییر کند، پس آن را از منبع رسمی همان سرویس بگیرید.

مشکل ۶: Docker یا سرویس‌های container بعد از CSF به مشکل می‌خورند

Docker خودش قوانین iptables ایجاد می‌کند. اگر CSF بدون بررسی روی سروری با Docker فعال شود، ممکن است ارتباط containerها، port mapping یا NAT دچار مشکل شود. در این حالت باید قبل از نصب، ساختار شبکه Docker و قوانین NAT را بررسی کنید.

مشکل ۷: firewalld یا ufw با CSF تداخل دارد

بهتر است همزمان چند ابزار مدیریتی فایروال، قوانین اصلی را کنترل نکنند. اگر CSF را به‌عنوان فایروال اصلی انتخاب می‌کنید، وضعیت UFW/firewalld را بررسی و سیاست مشخصی داشته باشید.

# بررسی firewalld
systemctl status firewalld –no-pager

# بررسی UFW
ufw status verbose

# بررسی قوانین iptables
iptables -L -n -v
ip6tables -L -n -v

مشکل ۸: IPv6 باز مانده یا درست کنترل نمی‌شود

اگر سرور IPv6 دارد، فقط تنظیم IPv4 کافی نیست. مقدار `IPV6` و پورت‌های IPv6 را در CSF بررسی کنید. بسیاری از مدیران فقط IPv4 را می‌بندند اما سایت یا سرویس از IPv6 همچنان در دسترس می‌ماند.

دستورهای مدیریتی مهم CSF

دستور کاربرد
csf -e فعال کردن CSF
csf -x غیرفعال کردن موقت CSF
csf -r Restart و اعمال تنظیمات
csf -l نمایش قوانین فعلی فایروال
csf -a IP اضافه کردن IP به allow
csf -d IP اضافه کردن IP به deny
csf -dr IP حذف IP از deny
csf -g IP جستجوی IP در allow/deny/rules
csf -tf IP 3600 مسدودسازی موقت IP برای ۳۶۰۰ ثانیه
csf -tr IP حذف block موقت

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

  • از یک IP دیگر، SSH جدید باز کنید و مطمئن شوید قفل نشده‌اید.
  • سایت را با HTTP و HTTPS تست کنید.
  • پنل مدیریتی مثل cPanel/WHM، DirectAdmin یا CyberPanel را باز کنید.
  • ارسال و دریافت ایمیل را تست کنید.
  • اگر DNS روی همین سرور است، رکورد دامنه را بررسی کنید.
  • لاگ LFD را حداقل ۱۰ دقیقه بررسی کنید.
  • اگر سایت فروشگاهی دارید، پرداخت تستی انجام دهید.
  • اگر CDN دارید، IP واقعی کاربران و لاگ وب‌سرور را بررسی کنید.

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

آیا CSF رایگان است؟

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

آیا CSF جایگزین WAF است؟

نه. CSF فایروال سطح سرور و شبکه است؛ WAF درخواست‌های HTTP/HTTPS و حملاتی مثل SQL Injection یا XSS را بررسی می‌کند. برای سایت حساس، ترکیب CSF، WAF، آپدیت نرم‌افزار، بکاپ و مانیتورینگ بهتر است.

آیا CSF روی Ubuntu نصب می‌شود؟

بله، معمولاً روی Ubuntu/Debian و توزیع‌های خانواده RHEL نصب می‌شود؛ اما باید سازگاری iptables/nftables، سرویس‌های فعال و تداخل با UFW/firewalld را بررسی کنید.

بعد از نصب CSF سایت باز نمی‌شود، چه کنم؟

پورت‌های 80 و 443 را در `TCP_IN` بررسی کنید، با `ss -tulpn` ببینید وب‌سرور روی چه پورتی گوش می‌کند و سپس `csf -r` بزنید.

برای جلوگیری از قفل شدن SSH چه کار کنم؟

قبل از فعال‌سازی، IP خودتان را با `csf -a` allow کنید، پورت واقعی SSH را در `TCP_IN` بگذارید، یک نشست SSH دوم باز نگه دارید و بعد از اعمال تنظیمات، از نشست جدید تست بگیرید.

آیا باید firewalld یا UFW را غیرفعال کنم؟

بهتر است چند ابزار مدیریتی همزمان قوانین اصلی فایروال را کنترل نکنند. اگر CSF را به‌عنوان فایروال اصلی انتخاب می‌کنید، وضعیت UFW/firewalld را بررسی کنید و از تداخل قوانین جلوگیری کنید.

CSF روی سرور Docker مناسب است؟

قابل انجام است، اما نیاز به دقت دارد. Docker قوانین NAT و iptables خودش را ایجاد می‌کند؛ بنابراین نصب CSF بدون بررسی ممکن است ارتباط containerها را مختل کند.

آیا CSF برای وردپرس کافی است؟

برای امنیت سرور مفید است، اما برای امنیت کامل وردپرس کافی نیست. باید افزونه‌ها را به‌روز نگه دارید، WAF داشته باشید، wp-admin را محافظت کنید، بکاپ بگیرید و دسترسی SSH/FTP را محدود کنید.

جمع‌بندی

CSF اگر درست نصب و تنظیم شود، یکی از بهترین ابزارهای عملی برای کنترل دسترسی سرور، کاهش brute force و مدیریت قوانین امنیتی است. اما نصب عجولانه آن می‌تواند باعث قفل شدن SSH، بسته شدن پنل، مشکل ایمیل یا اختلال در سرویس‌ها شود. بهترین روش این است که اول پورت‌ها، IP مدیر، کنترل‌پنل، ایمیل، DNS و CDN را مشخص کنید، سپس CSF را با حالت امن نصب و مرحله‌به‌مرحله تست کنید.