برنامه 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 در این سرور مطمئن شوید. برای این منظور به دایرکتوری /usr/local/csf/bin/ بروید و csftest.pl را اجرا کنید.
cd /usr/local/csf/bin/ perl csftest.pl
اگر نتیجهای مطابق زیر مشاهده میکنید، مطمئن باشید که برنامه CSF بدون هیچ مشکلی روی سرور شما کار میکند.
RESULT: csf should function on this server
گام ۳) تنظیمات 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 = "mymail@mydomain.tld"
اگر میخواهید ترفندهای بیشتری در این رابطه بدانید، شاید بهتر بخش options در فایل تنظیمات “/etc/csf/csf.conf” را مطالعه کنید.
جمعبندی
برنامه CSF یک فایروال مبتنی بر اپلیکیشن است که برای سرورهای لینوکس ارائه شده است. این برنامه ویژگیهای زیادی دارد و از بسیاری از ابزارهای مدیریت وب مانند سیپنل، دایرکتادمین و وبمین پشتیبانی میکند. در مجموع باید گفت که CSF نصب آسانی دارد و مدیریت امنیت سرور را بسیار ساده میکند.