برنامه CSF یا «تنظیمات فایروال سرور» یک بسته امنیتی فایروال برای سرورهای لینوکس است. همچنین از CSF می‌تواند برای تشخیص نفوذ و ورود به اپلیکیشن‌هایی مانند SSH، SMTP، IMAP و Pop3 استفاده می‌شود. برنامه CSF به عنوان مثال می‌‌تواند تشخیص دهد که کسی از طریق SSH وارد سرور شده و به شما هشدار دهد که این شخص سعی کرده از فرمان su و مجوزهای آن استفاده کند. این برنامه ورودهای ناموفق به سرورهای ایمیل را بررسی می‌کند. Exim، IMAP، Dovecot، uw-imap و uw-imap از جمله این سرویس‌ها هستند. سرورهای OpenSSH، Ftp و cPanel نیز مورد بررسی CSF قرار می‌گیرند. برنامه CSF یک راه‌حل امنیتی مناسب برای سرورهای میزبان وب است و به‌راحتی با رابط‌های کاربری سی‌پنل، دایرکت‌ادمین و وب‌مین هماهنگ می‌شود.

پیش‌نیازها

  • سیستم‌عامل CentOS 7 (در اینجا سرور از آدرس آی‌پی 168.1.101 استفاده می‌شود).
  • دسترسی‌ها و مجوّزهای روت

کارهایی که در این آموزش انجام خواهیم داد:

  • نصب پیش‌نیازهای برنامه CSF
  • نصب CSF
  • تنظیمات CSF
  • فرمان‌های پایه CSF
  • تنظیمات پیشرفته

گام ۱) نصب پیش‌نیازها و متعلقات CSF

CSF بر اساس زبان برنامه نویسی Perl نوشته شده است. بنابراین اولین کاری که باید انجام دهید، نصب Perl بر روی سرور خواهد بود. همچنین برای دریافت نصب‌کننده CSF نیاز به wget دارید. ضمن اینکه برای ویرایش فایل تنظیمات CSF به یک برنامه ویرایشگر مانند vim احتیاج خواهید داشت. بسته‌ها را با استفاده از فرمان yum مطابق زیر نصب کنید.

yum install wget vim perl-libwww-perl.noarch perl-Time-HiRes

گام ۲) نصب برنامه CSF

به دایرکتوری /usr/src/ بروید و با کمک فرمان wget، برنامه CSF را دریافت کنید.

cd /usr/src/

wget https://download.configserver.com/csf.tgz

حالا فایل tar.gz را استخراج کرده و به دایرکتوری csf بروید. حالا می‌توانید نصب را شروع کنید.

tar -xzf csf.tgz

cd csf

sh install.sh

نهایتاً باید به شما اطلاع داده شود که نصب CSF به‌درستی پایان یافته است.

تکمیل فرآیند برنامه CSF

تکمیل فرآیند برنامه CSF

 

حالا باید از درستی عملکرد CSF در این سرور مطمئن شوید. برای این منظور به دایرکتوری /usr/local/csf/bin/ بروید و csftest.pl را اجرا کنید.

cd /usr/local/csf/bin/

perl csftest.pl

اگر نتیجه‌ای مطابق زیر مشاهده می‌کنید، مطمئن باشید که برنامه CSF بدون هیچ مشکلی روی سرور شما کار می‌کند.

RESULT: csf should function on this server

CSF در حال اجرا

CSF در حال اجرا

گام ۳) تنظیمات CSF بر روی CentOS 7

قبل از اینکه وارد فرآیند تنظیمات CSF شوید، اولین چیزی که باید بدانید این است که CentOS 7 دارای یک اپلیکیشن پیش‌فرض فایروال به نام “firewalld” است. با این اپلیکیشن و نحوه کاربرد آن قبلاً در آریانت آشنا شده‌اید. در اینجا باید firewalld را متوقف کرده و آن را از استارتاپ سرور خارج کنید.

توقف firewalld

systemctl stop firewalld

غیرفعال‌کردن و حذف firewalld از استارتاپ

systemctl disable firewalld

اکنون به دایرکتوری تنظیمات CSF یا /etc/csf/ بروید. در اینجا با استفاده از برنامه ویرایشگر vim فایل csf.conf را ویرایش کنید.

cd /etc/csf/

vim csf.conf

مقدار “TESTING ” در خط ۱۱ را به صفر تغییر دهید تا تنظیمات فایروال اِعمال شوند.

TESTING = "0"

در حالت پیش‌فرض، برنامه CSF به ترافیک ورودی و خروجی SSH از طریق پورت استاندارد 22 اجازه می‌دهد. در صورتی که شما از یک پورت متفاوت برای SSH استفاده می‌کنید، باید این پورت را در تنظیمات و در خط ۱۳۹ برای مقدار “TCP_IN” وارد کنید.

حالا با استفاده از فرمان systemctl اقدام به راه‌اندازی CSF و LFD می‌کنیم.

systemctl start csf

systemctl start lfd

سپس این برنامه‌ها را به گونه‌ای تنظیم می‌کنیم که در شروع به کار سیستم اجرا شوند.

systemctl enable csf

systemctl enable lfd

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

csf -l

گام ۴) فرمان‌های پایه CSF

۱- راه‌اندازی فایروال (فعال‌کردن قانون‌های فایروال).

csf -s

۲- لغو یا توقف قوانین فایروال.

csf -f

۳- بازیابی قوانین فایروال.

csf -r

۴- دادن مجوز به یک IP و اضافه‌کردن آن به csf.allow.

csf -a 192.168.1.109

نتایج نمونه

Adding 192.168.1.109 to csf.allow and iptables ACCEPT...

ACCEPT  all opt -- in !lo out *  192.168.1.109  -> 0.0.0.0/0

ACCEPT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.109

۵- برداشتن و حذف یک IP از csf.allow.

csf -ar 192.168.1.109

نتیجه

Removing rule…

ACCEPT  all opt – in !lo out *  192.168.1.109  -> 0.0.0.0/0

ACCEPT  all opt – in * out !lo  0.0.0.0/0  -> 192.168.1.109

۶- بلوکه‌کردن یک IP و اضافه‌کردن آن به csf.deny.

csf -d 192.168.1.109

نتیجه

Adding 192.168.1.109 to csf.deny and iptables DROP...

DROP  all opt -- in !lo out *  192.168.1.109  -> 0.0.0.0/0

LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.109

۷- برداشتن و حذف یک IP از csf.deny.

csf -dr 192.168.1.109

نتیجه

Removing rule...

DROP  all opt -- in !lo out *  192.168.1.109  -> 0.0.0.0/0

LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.109

۸- برداشتن و حذف تمام ورودی‌ها از csf.deny.

csf -df

نتیجه

DROP  all opt -- in !lo out *  192.168.1.110  -> 0.0.0.0/0

LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.110

DROP  all opt -- in !lo out *  192.168.1.111  -> 0.0.0.0/0

LOGDROPOUT  all opt -- in * out !lo  0.0.0.0/0  -> 192.168.1.111

csf: all entries removed from csf.deny

۹- جستجو برای الگویی خاص در iptable‌ ها؛ از جمله آدرس IP، CIDR و پورت

csf -g 192.168.1.110

گام ۵) تنظیمات پیشرفته

در اینجا برخی ترفندها در رابطه با برنامه CSF را داریم که می‌توانید در هنگام نیاز از آنها استفاده کنید.

به دایرکتوری تنظیمات CSF برمی‌گردیم و فایل csf.conf را ویرایش می‌کنیم.

cd /etc/csf/

vim csf.conf

۱- آدرس‌های IP را که در فایل‌های csf.allow هستند، بلوکه نکنید.

lfd به صورت پیش‌فرض IP فایل‌های csf.allow را بلوکه خواهد کرد. بنابراین اگر می‌خواهیم این آدرس هیچ‌گاه توسط lfd مسدود نشود، باید مقدار IGNORE_ALLOW را در خط ۲۷۲ به 1 تغییر دهید. این موضوع به‌ویژه در زمانی که IP استاتیک در خانه یا دفتر کار دارید و می‌خواهید این آدرس همیشه در سرور اینترنت در دسترس باشد، مفید خواهد بود.

IGNORE_ALLOW = "1"

۲- دادن مجوّز به ورودی‌ها و خروجی‌های ICMP

برای این منظور به خط ۱۵۲  و تنظیم ورودی ping/ICMP بروید.

ICMP_IN = "1"

همچنین خروجی ping/ICMP در خط ۱۵۹ در دسترس شما خواهد بود.

ICMP_OUT = "1"

۳- مسدود کردن برخی کشورهای خاص

برنامه CSF گزینه‌ای برای دادن مجوز و مسدود کردن دسترسی کشورها با استفاده از CIDR ارائه می‌دهد. برای این منظور، به خط ۸۳۶ رفته و کد کشورهای موردنظرتان را مطابق زیر وارد کنید.

CC_DENY = "CN,UK,US"

CC_ALLOW = "ID,MY,DE"

۴- ارسال تاریخچه ورود Su و SSU با ایمیل.

می‌توانید در LFD یک آدرس ایمیل تنظیم کنید تا رخدادهای مرتبط با ورود SSH و کاربرانی که از فرمان su استفاده کرده‌اند، به آن ارسال شود. برای این منظور به خط ۱۰۶۹ رفته و مقدار را به 1 تغییر دهید.

LF_SSH_EMAIL_ALERT = "1"

...

LF_SU_EMAIL_ALERT = "1"

سپس آدرس ایمیل دلخواهتان را در خط ۵۸۸ اضافه کنید.

LF_ALERT_TO = "[email protected]"

اگر می‌خواهید ترفندهای بیشتری در این رابطه بدانید، شاید بهتر بخش options در فایل تنظیمات “/etc/csf/csf.conf” را مطالعه کنید.

جمع‌بندی

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

 

منبع: howtoforge.com