نصب و تنظیم CSF بر روی لینوکس
CSF چیست؟
CSF مخفف عبارت Config Server Firewall است. CSF در حقیقت یک فایروال رایگان و پیشرفته بوده که در بیشتر توزیعهای لینوکس و سرورهای مجازی مبتنی بر لینوکس از آن استفاده میشود.
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
در اولین مرحله باید بهوسیلهی فرمان زیر CSF را دانلود کنیم:
cd /usr/src
wget https://download.configserver.com/csf.tgz
مرحله دوم: استخراج فایل CSF با فرمت tar
پس از دانلود، باید فایل CSF را استخراج (Extract) کنیم:
tar xzf csf.tgz
cd csf
مرحله سوم: اجرای اسکریپت نصب 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
اگر فایروال در حال اجراست، آن را غیرفعال کرده و سپس 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
با استفاده از فرمان زیر میتوانید CSF را ریستارت کرده و عملکرد آن را بررسی کنید:
systemctl restart {csf,lfd}
systemctl enable {csf,lfd}
systemctl is-active {csf,lfd}
csf -v
در تصویر زیر خروجی این دستور را مشاهده میکنید:
نصب و تنظیم CSF بر روی لینوکس
اکنون آمادهایم تا تنظیمات فایروال و قوانین تشخیص نفوذ را شروع کنیم.
تنظیم CSF و قوانین تشخیص نفوذ
در ابتدا نیاز خواهیم داشت تا قوانین فایروال فعلی را بررسی کنیم:
csf -l
با استفاده از دستورات زیر میتوانید فایروال را خاموش یا راهاندازی مجدد کنید:
csf -f
csf -r
مراحلی که در بالا به آنها اشاره کردیم را حتماً به ترتیب انجام دهید. چنانچه در هر قسمت با مشکل یا سؤالی مواجه شدید، با ما در میان بگذارید تا کارشناسان فنی سینداد شما را راهنمایی کنند.
تماس با ما
آموزش کار با CSF
پس از نصب و تنظیم 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
خروجی لغو قوانین مشابه تصویر زیر خواهد بود:
آموزش کار با CSF
مثال ۲: محدود کردن ارتباطات ورودی به منبع
بسته به نوع استفاده از سرور، شاید بخواهید ارتباطات ورودی را به یک عدد ایمن در یک پورت محدود کنید. بدین منظور، فایل 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 مورد استفاده قرار میگیرند. تمام فایلهای پیکربندی CSF در دایرکتوری etc/csf/ واقع شدهاند. اگر هرکدام از فایلهای زیر را تغییر دهید، باید CSF را ریستارت کنید تا تغییرات اعمال شوند.
تنظیمات پیکربندی CSF
csf.conf: فایل اصلی پیکربندی برای کنترل CSF.
csf.allow: فهرست IP ها و آدرسهای CIDR مجاز در فایروال.
csf.deny: فهرست IP ها و آدرسهای CIDR غیرمجاز در فایروال.
csf.ignore: فهرست IP ها و آدرسهای CIDR نادیده گرفته شده در فایروال.
csf.*ignore: فهرست فایلهای IP کاربران نادیده گرفته شده.
حذف فایروال CSF
چنانچه قصد دارید بهطور کامل فایروال CSF را حذف کنید، کافی است تا اسکریپت زیر را در دایرکتوری etc/csf/uninstall.sh/ اجرا کنید:
/etc/csf/uninstall.sh
فرمان بالا فایروال CSF را با تمام فایلها و محتویاتش حذف خواهد کرد.