راهنمای نصب و پیکربندی فایروال CSF در اوبونتو
۱۷ اسفند ۱۴۰۳
مقدمه
فایروال Config Server Firewall (CSF) یک فایروال قدرتمند برای سرورهای مجازی لینوکسی است که علاوه بر فیلتر کردن ترافیک شبکه، با شناسایی ورودهای غیرمجاز، تشخیص حملات سایبری و جلوگیری از حملات سیلآسا (Flood) از سرور محافظت میکند.
لیست کامل سیستمعاملهای پشتیبانی شده توسط این فایروال و دیگر قابلیتهای آنرا در وبسایت ConfigServer میتوانید ببینید. امنیت در سرور مجازی لینوکس یکی از مسائل مهمی است که کاربران با آن روبهرو هستند، به همین دلیل در این مقاله از لیارا قصد داریم نحوه نصب فایروال CSF را بهصورت مرحلهبهمرحله برای سیستم عامل لینوکس توضیح دهیم. پس تا پایان با ما همراه باشید.

پیشنیاز
در این آموزش ما مراحل نصب را روی یک سرور مجازی اوبونتو نسخه 22.04 بررسی خواهیم کرد، اما میتوانید این مراحل را روی هر توزیع دیگری از لینوکس، دنبال کنید. برای راهاندازی یک سرور مجازی اوبونتو جهت اجرای این آموزش، میتوانید از راهنمای نحوه راهاندازی اولیه سرور مجازی با اوبونتو Ubuntu استفاده کنید.
در این مقاله میخوانید:
- نصب فایروال ConfigServer
- پیکربندی اولیه
- مسدود کردن و اجازه دادن به آدرسهای IP
- جمع بندی
نصب فایروال ConfigServer
گام اول: دانلود فایروال
فایروال ConfigServer در حالحاضر در مخازن دبیان یا اوبونتو موجود نیست و باید از وبسایت ConfigServer دانلود کنید. برای دانلود فایروال، دستور زیر را اجرا کنید:
wget http://download.configserver.com/csf.tgz
حالا با دستور wget
فایروال CSF در دایرکتوری جاری شما دانلود میشود.
گام دوم: استخراج فایل دانلود شده
بعد از دانلود با دستور tar فایل را از حالت فشرده خارج کنید:
tar -xzf csf.tgz
گام سوم: نصب فایروال
اگر از اسکریپتهای پیکربندی فایروال دیگری مانند UFW استفاده میکنید، باید قبل از ادامه، آن را غیرفعال کنید. قوانین iptables به طور خودکار حذف خواهند شد.
در این مرحله برای غیرفعال کردن UFW دستور زیر را اجرا کنید:
ufw disable
حالا باید اسکریپت نصب کننده CSF که در گام دوم استخراج کرده بودید را اجرا کنید:
برای این کار وارد دایرکتوری CSF شوید:
cd csf
sh install.sh
اکنون، فایروال نصب شده است، اما باید بررسی کنید که ماژولهای مورد نیاز iptable در سیستم شما وجود دارد یا خیر! چون برای عملکرد صحیح فایروال ConfigServer، لازم است که ماژولهای iptables به درستی بارگذاری شده باشند.
perl /usr/local/csf/bin/csftest.pl
در آخر، پس از اجرای دستور بالا اگر خطایی رخ ندهد، فایروال به درستی کار خواهد کرد.
شاید به دنبال این مطلب باشید: آشنایی با قوانین و دستورات رایج فایروال (UFW)
توجه: آدرس IP
شما به لیست سفید اضافه شده و پورت SSH به طور خودکار باز شده است، حتی اگر از پورت سفارشی استفاده کنید. فایروال به طور پیشفرض در حالت آزمایشی قرار دارد، یعنی پنج دقیقه پس از راهاندازی CSF، قوانین iptables به طور خودکار حذف میشوند.

پیکربندی اولیه
برای پیکربندی CSF کافیست فایل پیکربندی آن به نام csf.conf
را در مسیر /etc/csf
با nano
ویرایش کنید.
nano /etc/csf/csf.conf
بعد از اعمال تغییرات روی فایل فوق، از دستور زیر برای ریاستارت پیکربندی CSF استفاده کنید:
csf -r
با اجرای این دستور، تغییرات اعمال شده در فایل پیکربندی csf.conf
بهطور خودکار اعمال و فایروال را مجدداً راهاندازی میکنید.
گام اول: تنظیم پورتها
هرچه دسترسی به سرور vps شما محدودتر باشد، امنیت سرور بیشتر خواهد بود. با این حال، نمیتوانید تمام پورتها را ببندید زیرا مشتریان باید بتوانند از سرور و خدمات شما استفاده کنند.
پورتهای باز شده بهطور پیشفرض عبارتند از:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995" TCP_OUT = "20,21,22,25,53,80,110,113,443" UDP_IN = "20,21,53" UDP_OUT = "20,21,53,113,123"
در لیست زیر سرویسهایی که از پورتهای باز استفاده میکنند را آوردهایم:
- پورت 20: انتقال داده FTP
- پورت 21: کنترل FTP
- پورت 22: شل امن (SSH)
- پورت 25: پروتکل انتقال پست ساده (SMTP)
- پورت 53: سیستم نام دامنه (DNS)
- پورت 80: پروتکل انتقال ابرمتن (HTTP)
- پورت 110: پروتکل پست دفتر پست نسخه 3 (POP3)
- پورت 113: سرویس احراز هویت/پروتکل شناسایی
- پورت 123: پروتکل زمان شبکه (NTP)
- پورت 143: پروتکل دسترسی به پیام اینترنتی (IMAP)
- پورت 443: پروتکل انتقال ابرمتن از طریق SSL/TLS (HTTPS)
- پورت 465: دایرکتوری همنشینی URL برای SSM (سیسکو)
- پورت 587: ارسال پیام ایمیل (SMTP)
- پورت 993: پروتکل دسترسی به پیام اینترنتی از طریق SSL (IMAPS)
البته ممکن است، شما از تمامی این سرویسها استفاده نکنید، بنابراین میتوانید پورتهایی که استفاده نمیکنید را ببنیدید.
در کد زیر، مجموعه پورتهایی که باید در صورت اجرای هر سرویس مورد نیاز، باز شوند، آوردهایم:
TCP_IN: 22,53 TCP_OUT: 22,53,80,113,443 UPD_IN: 53 UPD_OUT: 53,113,123
روی سرور Apache:
TCP_IN: 80,443
روی FTP سرور:
TCP_IN: 20,21 TCP_OUT: 20,21 UPD_IN: 20,21 UPD_OUT:20,21
روی Mail سرور:
TCP_IN: 25,110,143,587,993,995 TCP_OUT: 25,110
روی MySQL سرور:
TCP_IN: 3306 TCP_OUT: 3306
نکته: اگر از IPv6 برای سرویسهای خود استفاده میکنید، باید پیکربندیهای TCP6_IN ,TCP6_OUT ,UDP6_IN و UDP6_OUT را بهصورت مشابه با پیکربندی پورتهای IPv4، تنظیم کنید.
گام دوم: تنظیمات اضافی
CSF گزینههای مختلف زیادی در فایلهای پیکربندی خود دارد. در این مرحله به برخی از تنظیمات پرکاربرد اشاره میکنیم:
- ICMP_IN
با تنظیم مقدار ICMP_IN به 1، اجازه میدهید که پینگ به سرور شما ارسال شود. اگر مقدار آن را به 0 تغییر دهید، درخواستهای پینگ رد خواهند شد. اگر خدمات عمومی ارائه میدهید، بهتر است درخواستهای ICMP را مجاز کنید، زیرا این درخواستها به دیگران این امکان را میدهند که بررسی کنند آیا سرویس شما در دسترس است یا نه. - ICMP_IN_LIMIT
این تنظیم مشخص میکند که از یک آدرس IP، چه تعداد پینگ ICMP در یک بازه زمانی مشخص مجاز است. معمولاً نیازی به تغییر مقدار پیشفرض وجود ندارد. - DENY_IP_LIMIT
این تنظیم، تعداد آدرسهای IP مسدود شدهای را که CSF پیگیری میکند، تعیین میکند. بهتر است تعداد آدرسهای مسدود شده را محدود کنید، زیرا مسدود کردن تعداد زیاد IP ممکن است باعث کاهش عملکرد سرور شود.
DENY_TEMP_IP_LIMIT
این گزینه شبیه گزینه قبلی است، اما برای مسدودیتهای موقت آدرسهای IP کاربرد دارد. - PACKET_FILTER
این گزینه برای فیلتر کردن بستههای نامعتبر، ناخواسته و غیرقانونی استفاده میشود. - SYNFLOOD، SYNFLOOD_RATE و SYNFLOOD_BURST
این تنظیمات از سرور شما در برابر حملات SYN flood محافظت میکنند. با فعالسازی این گزینهها، فرآیند شروع هر اتصال کندتر میشود. بنابراین، باید تنها زمانی این تنظیمات را فعال کنید که از حمله به سرور خود مطمئن باشید. - CONNLIMIT
این تنظیم تعداد اتصالات همزمان فعال را بر روی یک پورت خاص محدود میکند.
مقدار:
22;5;443;20
در تنظیم CONNLIMIT، مقدار 22;5;443;20
میگوید: روی پورت 22 حداکثر 5 اتصال همزمان مجاز است و روی پورت 443 حداکثر 20 اتصال همزمان مجاز است.
تنظیم PORTFLOOD تعداد اتصالات مجاز در یک بازه زمانی مشخص برای پورتهای خاص را محدود میکند.
مقدار:
22;tcp;5;250
این مقدار به این معناست که اگر بیش از 5 اتصال روی پورت 22 با پروتکل TCP در مدت 250 ثانیه برقرار شود، آدرس IP
که این اتصالات را ایجاد کرده مسدود خواهد شد. این مسدود بودن بعد از 250 ثانیه از آخرین بسته ارسالی توسط کلاینت به این پورت، برداشته میشود. شما مانند دستور زیر میتوانید پورتهای بیشتری را با استفاده از ویرگول به همین روش اضافه کنید.
port1;protocol1;connection_count1;time1,port2;protocol2;connection_count2;time2
CSF تنظیمات زیادی دارد که از حوصله این مقاله خارج است. مقادیر پیشفرض معمولاً مناسب هستند و میتوانند روی اکثر سرورها تنظیم شوند. این تنظیمات بهگونهای پیکربندی شدهاند که از بیشتر حملات، اسکن پورتها و تلاشهای دسترسی غیرمجاز جلوگیری کنند.
با این حال، اگر بخواهید تنظیمات را بهطور دقیقتری تغییر دهید، میتوانید نظرات داخل فایل /etc/csf/csf.conf
را مطالعه کرده و آنها را به دلخواه خود ویرایش کنید.
گام سوم: اعمال تغییرات
هر بار که تنظیمات فایل csf.conf
را تغییر میدهید، باید فایل را ذخیره کرده و CSF را دوباره راهاندازی کنید تا تغییرات اعمال شوند.
زمانی که تنظیمات را تمام کردید، برای بستن فایل، کلیدهای Ctrl + X
را فشار دهید. وقتی از شما خواسته شد که تغییرات را ذخیره کنید یا نه، برای ذخیره تغییرات کلید Y
را فشار دهید.
پس از آن، باید تغییرات را با دستور زیر اعمال کنید و CSF را دوباره راهاندازی کنید:
csf -r
اگر همهچیز طبق برنامه پیش رفت و همچنان به سرور دسترسی دارید، دوباره فایل پیکربندی را باز کنید:
nano /etc/csf/csf.conf
همانطور که مشاهده میکنید، مقدار TESTING در ابتدای فایل پیکربندی را به 0 تغییر دهید:
TESTING = "0"
در نهایت، با اجرای دستور زیر، فایل را ذخیره کرده و تغییرات را اعمال کنید:
csf -r
مسدود کردن و اجازه دادن به آدرسهای IP
یکی از ویژگیهای اصلی فایروال، قابلیت مسدود کردن آدرسهای IP خاص است. شما میتوانید آدرسهای IP را مسدود، مجاز یا نادیده بگیرید. برای اینکار باید فایلهای پیکربندی csf.deny
، csf.allow
و csf.ignore
را ویرایش کنید.
مسدود کردن آدرسهای IP
حالا اگر میخواهید یک آدرس IP یا یک رنج از آدرسهای IP را مسدود کنید، فایل csf.deny
را باز کنید:
nano /etc/csf/csf.deny
آدرسهای IP
یا رنجهای مسدود شده هرکدام یک خط جداگانه در فایل csf.deny
دارند. برای مسدود کردن آدرس 1.2.3.4
و همچنین رنج آدرسهای 2.3..
، باید خطوط زیر را به این فایل اضافه کنید:
1.2.3.4 2.3.0.0/16
دقت داشته باشید که در این آموزش رنجهای IP
با استفاده از نوتیشن CIDR نوشته میشوند.
اجازه دادن به آدرسهای IP
در صورتیکه میخواهید یک آدرس IP یا یک رنج از آدرسها از تمام مسدودسازیها و فیلترها خارج شود، میتوانید آنها را به فایل csf.allow
اضافه کنید. توجه داشته باشید که آدرسهای IP
مجاز حتی اگر در فایل csf.deny
مسدود شده باشند، همچنان دسترسی خواهند داشت.
فرآیند اجازه دادن به آدرسهای IPشبیه به مسدود کردن آنهاست، با این تفاوت که باید فایل /etc/csf/csf.allow
را به جای csf.deny
ویرایش کنید.
اکنون، برای ویرایش فایل csf.allow
از دستور زیر استفاده کنید:
nano /etc/csf/csf.allow
نادیده گرفتن آدرسهای IP
CSF به شما این امکان را میدهد که آدرسهای IP
را از فیلترهای فایروال خارج کنید. آدرسهای IP
موجود در فایل csf.ignore
از فیلترهای فایروال رد میشوند و تنها زمانی مسدود میشوند که در فایل csf.deny
ذکر شده باشند.
برای ویرایش فایل، از دستور زیر استفاده کنید:
nano /etc/csf/csf.ignore
در نهایت، برای اینکه تغییرات اعمال شوند، پس از ویرایش هر یک از فایلهای ذکر شده، باید CSF را با دستور زیر راهاندازی مجدد کنید:
csf -r
جمع بندی
تبریک! شما به پایان این آموزش درباره نصب و پیکربندی فایروال CSF رسیدید. این فایروال به شما کمک میکند تا سرور خود را در برابر تهدیدات مختلف مانند حملات سایبری محافظت کنید. شما مراحل زیر را انجام دادید:
- نصب فایروال CSF: شما با دانلود و نصب فایروال CSF از وبسایت ConfigServer آشنا شدید و یاد گرفتید چگونه پیکربندیهای اولیه را تنظیم کنید.
- پیکربندی اولیه: در این بخش یاد گرفتید که چگونه فایل پیکربندی csf.conf را ویرایش کنید تا امنیت سرور خود را افزایش دهید.
- مدیریت آدرسهای IP: آموزشهایی در مورد مسدود کردن، اجازه دادن و نادیده گرفتن آدرسهای IP ارائه شد تا بتوانید دسترسیها را به دقت کنترل کنید.
- اعمال تغییرات: شما یاد گرفتید که چگونه تغییرات را در فایلهای پیکربندی ذخیره کرده و CSF را برای اعمال آنها مجدداً راهاندازی کنید.