نصب و تنظیم فایروال csf در سرور های لینوکسی

سلام عزیزای دل ، امیدوارم که خوبه خوب باشید ،

امروز یک فایروال خوب و ساده و بسیار کارآمد رو براتون توضیح میدم که لازمه روی سرور های لینوکسی نصب باشه ، چه سرور شما در مسیر فایروال دیتاسنتر باشه چه نباشه بنظرم لازمه که خودتون هم محکم کاری های اینچنینی رو رعایت کنید . پس با نصب و کانفیگ فایروال csf با من همراه باشید

csf یک application firewall اوپن سورس هست برای سرور های لینوکس . csf قابلیت تشخصی لاگین به سرویس هایی همچون ssh , smtp , ftp imap , pop3 … رو داره و اگر کسی تصمیم داره با حملاتی شبیه دیکشنری حمله کنه به سرور و رمز رو حدس بزنه تشخصی بده و اون ip اون رو بلاک کنه. این فایروال قابل نصب بر روی پنل های هاستینگ هم هست مانند whm/cpaenl , directadmin …(نصب csf در دایرکت ادمین)

فایروال csf به زبان perl نوشته شده ، پس باید قبل از نصبش پکیج های مورد نیازش رو نصب کنیم. توی این اموزش من قصد دارم csf رو روی centos 7 نصب کنم. پس از دستورات مربوط به centos استفاده میکنم.

نصب پکیج های مورد نیاز csf

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

بعد از نصب پکیج های مربوط به perl میریم سراغ نصب csf

نصب فایروال csf

cd /usr/src/
wget https://download.configserver.com/csf.tgz

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

tar -xzf csf.tgz
cd csf
sh install.sh

بعد از گذشت چند ثانیه شما باید پیام installation is completed رو در پایان ببینید.
شما باید اطمینان پیدا کنید که CSG بدرستی روی سرور شما نصب شده و خوب کار میکنه برای همین دستورات زیر رو وارد کنید.

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

اگر نتیجه تست چیزی شبیه RESULT: csf should function on this server بود یعنی csf بدون هیچ مشکلی کار میکنه روی سرور شما.

تنظیمات فایروال csf روی سرور لینوکس centos

قبل از شروع تنظیم فایروال csf اولین چیزی که شما باید بدونیم این هست که centos 7 یک فایروال پیشفرض به نام firewalld داره که باید اون رو متوقف کنیم و از برنامه های startup حذف کنیم. برای این منظور دستور زیر رو وارد میکنیم.

systemctl stop firewalld
systemctl disable firewalld

سپس به دایرکتوری تنظیمات csf میریم و فایل تنظیمات رو با ادیتور vim (یا هر ادیتور متن) باز میکنیم.

cd /etc/csf/
vim csf.conf

سپس به خط ۱۱ میریم و مقدار testing رو برابر 0 قرار میدیم(ممکنه در ورژن های بعدی خط ۱۱ نباشه :D)

TESTING = "0"

پایین تر میریم و پورت های ورودی و خروجی رو تنظیم میکنیم. به عنوان مثال شماره پورت 22 رو که برای ssh هست برمیدارم و شماره پورت دیگه ای رو جایگذینش میکنم. و پورت هایی که لازم ندارم رو کلا حذف میکنم. برای این کار شما باید مقادیر TCP_IN رو تغییر بدین . پس مواظب باشید چه پورتی رو باز و بسته میکنید. همچنین در TCP_OUT میتونیم پورت های خروجی سرور رو مشخص کنیم. همین مقادیر رو شما برای پروتوکل UDP هم دارید که میتونید ویرایش کنید با توجه به نیازتون. اگر هم تمایل دارید که یک پورت خاص فقط برای یک IP باز باشه و برای بقیه IP ها بسته باشه ، ابتدا پورت رو در tcp_in باز میکنید و سپس توی فایل csf.allow بصورت زیر عمل میکنید.

tcp:in:d=1889:s=192.168.122.122

توی ایم مثال من پورت شماره ۱۸۸۹ رو فقط برای IP 192.168.122.122 بازکردم

خب بعد از این تغییرات csf و lfd رو باید فعال کنیم. پس برای فعال شدن فایروال CSF از دستور زیر استفاده میکنیم.

systemctl enable csf
systemctl enable lfd

وقت این رسیده که IP خودتون رو در لیست سفید csf قرار بدیم که اشتباهی بلاک نشید. برای این کار شما میتونید فایل زیر رو بازکنید و IP خودتون رو داخلش بنویسید.

vim /etc/csf/csf.allow

یک نکته خیلی باریک اینجا هست که lfd بصورت پیشفرض کاری به این فایل csf.allow نداره و اگه دوست داشته باشه IP شما رو که در فایل بالایی allow شده رو هم بلاک میکنه :)) پس باید بریم به فایل csf.conf دوباره و IGNORE_ALLOW رو برابر مقدار 1 تنظیم کنیم. پس…

vim /etc/csf/csf.conf
IGNORE_ALLOW = "1"

حالا خوب شد و خیالمون راحته که بلاک نمیشیم فقط csf رو یکبار ریستارت میکنیم با دستور csf -r . فایروال csf بطور پیشفرض تعداد ۲۰۰ IP رو بلاک میکنه پس ما نیاز داریم این تعداد رو بیشتر کنیم برای اینکار فایل تنظیمات /etc/csf/csf.conf رو باز میکنیم و مقدار DENY_IP_LIMIT رو عددی بزرگتر قرار میدیم.
اگر قصد دارید csf جلوی icmp رو بگیره میتونید داخل فایل csf.conf  مقدار ICMP_IN رو برابر 0 بزاریم اگر که نه مقدارش همون 1 باشه.

مسدود کردن کشور های مختلف در فایروال csf

گاهی پیش میاد که قصد داریم برخی کشور ها رو بر روی سرورمون ببندیم به هر علتی ، csf این قابلیت رو به شما میده پس فایل csf.conf رو مجدد باز میکنیم و CC_DENY کد کشور هایی که قراره به سرور وصل نشن رو مینویسیم . به عنوان مثال:

CC_DENY = "CN,UK,US"

برعکس این موضوع هم وجود داره ، یعنی قصد داریم فقط برخی کشور ها ببین سرور رو پس توی فایل csf.conf دنبال CC_ALLOW بگردین و کد کشور های مجاز رو بنویسید

CC_ALLOW = "ID,MY,DE"

یه قابلیت خیلی خوب که فایروال csf داره این هست که اگر کاربری ssh زد و لاگین شد و یا حتی اگر کاربر su خواست انجام بده به کاربر root به ما یک ایمیل ارسال کنه برای این منظور مثال زیر رو دنبال کنید:

vim /etc/csf/csf.conf
LF_ALERT_TO = "mymail@mydomain.com"
LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"

در LF_ALERT_TO آدرس ایمیلی که قصد دارید لاگ ها براش ارسال بشه رو مینویسید و ۲ خط بعدی رو هم مقدار 1 قرار میدیم جلوش.

جلوگیری از حملات DDOS در فایروال csf

فایروال csf هم میتونه حملات DDOS رو دفع کنه. البته میدونم که بیشتر در حد شوخیه ولی بودنش بهتر از نبودنش هست. پس این مورد رو هم تنظیم میکنیم توی فایل /etc/csf/csf.conf

SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"

SYNFLOOD v بصورت پیشفرض مقدارش 0 هست که باید به 1 تغییرش بدیم. SYNFLOOD_RATE سرعت دریافت پکت ها رو نشون میده و SYNFLOOD_BURST تعداد کانکشن های هر IP در ثانیه رو مشخص میکنه.

یه پارامتر مفید دیگه هم معرفی کنم به نام CONNLIMIT این پارامتر میتونه مشخص کنه که هر IP بطور همزمان چه تعداد درخواست ارسال میتونه بکنه و به کدوم پورت.

vim /etc/csf/csf.conf
CONNLIMIT = "22;5,80;20"

مثال بالا داره مشخص میکنه که هر IP میتونه به پورت ۸۰ بطور همزمان ۲۰ درخواست ارسال کنه و به پورت ۲۲ ۵ درخواست. اینم راه خوبی برای جلوگیری از DDOS به حساب میاد.

همچنین PORTFLOOD هم میتونه برای حملات DDOS در فایروال csf مفید باشه. به اینصورت که مشخص میکنه کدام پورت / چه پروتوکلی / چه تعداد درخواست. / چه مدت زمان،  به مثال زیر توجه کنید

PORTFLOOD = "22;tcp;5;300,80;tcp;20;5"

اگر تعداد خواست ها در به پورت 80 در پروتوکل TCP در مدت 5 ثانیه بیشتر از 20 مورد بود اون IP بلاک میشه. یک پارامتر مهم دیگه هم هست به نام CT_LIMIT باید خیلی مراقب باشید وقتی فعالش میکنید چون تعداد درخواست های هر ip رو میشمره اگر تعداد پایین تنظیم کنیم ممکنه الکی ip رو بلاک کنه. پیشنهاد میشه این عدد رو روی 300 تننظیبم کنید.
دستوراتی که باید در هنگام کار کردن با CSF بدونیم

csf -s # csf start
csf -e # csf enable
csf -r # csf restart
csf -a 192.168.122.122 # allow an IP
csf -ar 192.168.122.122 # Remove and delete an IP from csf.allow.
csf -d 192.168.122.122 # Deny an IP
csf -dr 192.168.122.122 # Remove and Unblock all entries from csf.deny.
csf -g 192.168.122.122 # Search for a pattern match on iptables e.g : IP
csf -u # update csf

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

در نظر داشته باشید که ۹۹٪ حملات روی سرور ها کاملا بی هدف هستن و خیلی هم کارت شبکه و cpu , memory رو درگیر میکنن. خیلی راحت میشه با همین فایروال csf اون حملات رو دفع کرد. پس در کانفیگ فایروال csf کوشا باشید 😀

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

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