در این مقاله نحوهی نصب و تنظیم CSF بر روی لینوکس را آموزش خواهیم داد. همانگونه که در مقالات قبل توضیح دادیم، نصب CSF یکی از روشهای افزایش امنیت در سرور مجازی لینوکس است.
قبل از وارد شدن به مراحل نصب، ابتدا به معرفی CSF میپردازیم:
CSF مخفف عبارت Config Server Firewall است. CSF در حقیقت یک فایروال رایگان و پیشرفته بوده که در بیشتر توزیعهای لینوکس و سرورهای مجازی مبتنی بر لینوکس از آن استفاده میشود.
علاوه بر قابلیتهای اولیهی فایروال و فیلتر کردن بستهها، CSF حاوی ویژگیهای امنیتی دیگری ازجمله تشخیص ورود و نفوذ به سیستم است.
CSF قادر به تشخیص حملات بسیاری از قبیل port scans، SYN floods و brute force است. این برنامه به نحوی پیکربندی شده است که بهصورت موقت کاربرانی که موردحمله قرار گرفتهاند را بلاک میکند.
CSF دارای UI منطبق با کنترلپنلهای cPanel ،DirectAdmin و Webmin است. اما در این مقاله آموزش نصب بهصورت دستوری آموزش داده خواهد شد.
پیش از شروع نصب CSF بر روی توزیعهای لینوکس (RHEL، CentOS، openSUSE، Debian و Ubuntu) توجه داشته باشید که CSF به مخازن Perl و Libwww نیاز دارد. این مخازن اغلب بهصورت پیشفرض در دسترس هستند، اما اگر در مراحل نصب با خطایی مواجه شدید، نیاز به سیستم مدیریت بستهها دارید تا بتوانید آنها را نصب کنید:
# yum install perl-libwww-perl
# apt install libwww-perl
در اولین مرحله باید بهوسیلهی فرمان زیر CSF را دانلود کنیم:
# cd /usr/src
# wget https://download.configserver.com/csf.tgz
پس از دانلود، باید فایل CSF را استخراج (Extract) کنیم:
# tar xzf csf.tgz
# cd csf
این بخش نصب تمام وابستگیها را بررسی میکند، ساختار دایرکتوری لازم و فایلهای مربوط به رابط وب را ایجاد کرده، پورتهای باز را شناسایی کرده و به شما یادآوری میکند که پس از کار با پیکربندی اولیه، csf و lfd را ریستارت کنید:
# sh install.sh
# perl /usr/local/csf/bin/csftest.pl
خروجی فرمان بالا بهصورت زیر خواهد بود:
Testing ip_tables/iptable_filter…OK
Testing ipt_LOG…OK
Testing ipt_multiport/xt_multiport…OK
Testing ipt_REJECT…OK
Testing ipt_state/xt_state…OK
Testing ipt_limit/xt_limit…OK
Testing ipt_recent…OK
Testing xt_connlimit…OK
Testing ipt_owner/xt_owner…OK
Testing iptable_nat/ipt_REDIRECT…OK
Testing iptable_nat/ipt_DNAT…OK
RESULT: csf should function on this server
اگر فایروال در حال اجراست، آن را غیرفعال کرده و سپس CSF را پیکربندی کنید:
# systemctl stop firewalld
# systemctl disable firewalld
عبارت TESTING = “1” را به TESTING = “0” تغییر دهید ( در غیر این صورت lfd راهاندازی نخواهد شد). سپس فهرست مجاز به پورتهای ورودی و خروجی، بهعنوان یک فهرست مجزا با ویرگول (TCP_IN و TCP_OUT) در etc/csf/csf.conf/ مانند زیر نمایش داده خواهند شد:
# Testing flag – enables a CRON job that clears iptables incase of
# configuration problems when you start csf. This should be enabled until you
# are sure that the firewall works – i.e. incase you get locked out of your
# server! Then do remember to set it to 0 and restart csf when you’re sure
# everything is OK. Stopping csf will remove the line from /etc/crontab
#
# lfd will not start while this is enabled
TESTING = “0”
# Allow incoming TCP ports
TCP_IN = “20,21,22,25,53,80,110,143,443,465,587,993,995”
# Allow outgoing TCP ports
TCP_OUT = “20,21,22,25,53,80,110,113,443,587,993,995”
هنگامیکه پیکربندی را تنظیم کردید، تغییرات را ذخیره کرده و به محیط فرمان برگردید.
با استفاده از فرمان زیر میتوانید CSF را ریستارت کرده و عملکرد آن را بررسی کنید:
# systemctl restart {csf,lfd}
# systemctl enable {csf,lfd}
# systemctl is-active {csf,lfd}
# csf -v
در تصویر زیر خروجی این دستور را مشاهده میکنید:
اکنون آمادهایم تا تنظیمات فایروال و قوانین تشخیص نفوذ را شروع کنیم.
در ابتدا نیاز خواهیم داشت تا قوانین فایروال فعلی را بررسی کنیم:
# csf -l
با استفاده از دستورات زیر میتوانید فایروال را خاموش یا راهاندازی مجدد کنید:
# csf -f
# csf -r
مراحلی که در بالا به آنها اشاره کردیم را حتماً به ترتیب انجام دهید. چنانچه در هر قسمت با مشکل یا سؤالی مواجه شدید، با ما در میان بگذارید تا کارشناسان فنی سینداد شما را راهنمایی کنند.
پس از نصب و تنظیم CSF، اکنون میتوانیم با اجرای دستورات لازم با عملکرد آن آشنا شویم. در این قسمت مثالهای از عملکرد CSF را عنوان خواهیم کرد.
مثال ۱: صدور مجوز یا منع ارتباط IP آدرس
برای صدور مجوز ارتباطات ورودی از IP آدرس ۱۹۲.۱۶۸.۰.۱۰ میتوانید از فرمان زیر استفاده کنید:
# csf -a 192.168.0.10
به همین ترتیب میتوانید مانع ارتباطات ورودی از IP آدرس ۱۹۲.۱۶۸.۰.۱۱ شوید:
# csf -d 192.168.0.11
البته شما میتوانید بهراحتی قوانین بالا را لغو کنید:
# csf -ar 192.168.0.10
# csf -dr 192.168.0.11
خروجی لغو قوانین مشابه تصویر زیر خواهد بود:
مثال ۲: محدود کردن ارتباطات ورودی به منبع
بسته به نوع استفاده از سرور، شاید بخواهید ارتباطات ورودی را به یک عدد ایمن در یک پورت محدود کنید. بدین منظور، فایل etc/csf/csf.conf/ را باز کنید و عبارت CONNLIMIT را سرچ کنید. همچنین شما میتوانید چند پورت را مشخص کنید:
CONNLIMIT = “22;2,80;10”
در مثال بالا، این فرمان در پورتهای TCP شماره ۲۲ و ۸۰ فقط به ارتباطات شماره ۲ و ۱۰ از یک منبع اجازهی ورود میدهد.
مثال ۳: ارسال هشدار از طریق ایمیل
چند نوع هشدار وجود دارند که شما میتوانید انتخاب کنید. در فایل etc/csf/csf.conf/ به دنبال تنظیمات EMAIL_ALERT بگردید و مطمئن شوید که عدد آن “۱” باشد. بهعنوانمثال، دستور زیر را مشاهده کنید:
LF_SSH_EMAIL_ALERT = “1”
LF_SU_EMAIL_ALERT = “1”
این فرمان هر بار یک نفر از طریق SSH وارد سیستم شود یا با استفاده از دستور su وارد حساب کاربری دیگری شود، به آدرس مشخص شده در LF_ALERT_TO یک پیغام هشدار ارسال میکند.
تنظیماتی که به آنها اشاره خواهیم کرد، برای تغییر و کنترل پیکربندی CSF مورد استفاده قرار میگیرند. تمام فایلهای پیکربندی CSF در دایرکتوری etc/csf/ واقع شدهاند. اگر هرکدام از فایلهای زیر را تغییر دهید، باید CSF را ریستارت کنید تا تغییرات اعمال شوند.
چنانچه قصد دارید بهطور کامل فایروال CSF را حذف کنید، کافی است تا اسکریپت زیر را در دایرکتوری etc/csf/uninstall.sh/ اجرا کنید:
# /etc/csf/uninstall.sh
فرمان بالا فایروال CSF را با تمام فایلها و محتویاتش حذف خواهد کرد.
سینداد یعنی هدیهی سیمرغ، یا فرزند سیمرغ؛ به عبارتی یعنی خود سیمرغ، با همه ی شگفتی هایش، اما جوانتر و سرزنده تر. و این چیزی است که ما سعی می کنیم در سینداد باشیم. از سال ۱۳۸۵ دانش مان را به صورت خدماتی در حوزه ی هاستینگ، شبکه و تولید نرم افزار در اختیار مشتریان مان قرار داده ایم و به این افتخار می کنیم که تک تک آنها تا به امروز همراه ما مانده اند. باور داریم که سینداد صرفاً یک شرکت نیست، بلکه نوعی باور است به ارائه ی شگفت انگیز از هر چیز.