اولین کاری که برای بالا بردن سطح امنیت یک سرور انجام می‌شود، استفاده از یک فایروال است؛ فایروال ConfigServer Security & Firewall یکی از محبوب‌ترین فایروال‌های لینوکس است؛ در این مقاله ما نحوه نصب و پیکربندی مجموعه امنیتی تمام عیار ConfigServer Security & Firewall که با نام CSF نیز شناخته می‌شود را برای لینوکس شرح داده و مجموعه ای از موارد استفاده آن را بیان می‌نماییم. پس از خواندن این مقاله شما می‌توانید از CSF به عنوان فایروال و یک سیستم تشخیص خرابی نفوذ/ورود استفاده نمایید تا امنیت سرور خود و یا سرورهایی را که مسئولیت آنها را بر عهده دارید بالا ببرید.

همچنین در صورتی که در حال حاضر این فایروال را نصب کرده‌اید، می‌توانید این مقاله: «دستورات کاربردی فایروال CSF» را مطالعه کنید.

 

نصب و پیکربندی CSF در لینوکس

برای شروع، توجه داشته باشید که Perl و libwww یک پیش نیاز برای نصب CSF روی هر یک از توزیع‌های پشتیبانی شده (RHEL, CentOS, openSUSE, Debian, Ubuntu) است. از آنجایی که این دو پیش نیاز به صورت پیش فرض باید در دسترس باشند، هیچ کاری لازم نیست از طرف شما انجام شود، مگر اینکه یکی از مراحل زیر یک پیام خطا برگرداند؛ در این صورت برای نصب ابزارهای مورد نیاز از سیستم مدیریت بسته متناسب با توزیع لینوکس خود استفاده کنید.

yum install perl-libwww-perl
apt install libwww-perl

مرحله 1- دانلود CSF

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

مرحله 2 - استخراج فایل فشرده شده CSF

tar xzf csf.tgz
cd csf

مرحله 3 - اجرای اسکریپت نصب 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

مرحله 4- غیرفعال سازی فایروال و پیکربندی 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"

پس از تنظمیات مد نظر را انجام دادید، تغییرات را ذخیره کرده و به خط فرمان بازگردید.

مرحله 5 - راه اندازی مجدد و تست CSF

systemctl restart {csf,lfd}
systemctl enable {csf,lfd}
systemctl is-active {csf,lfd}
csf -v


در این مرحله ما آماده هستیم تا همانطور که در مرحله بعد بحث خواهیم کرد، تنظیم فایروال و قوانین تشخیص نفوذ را شروع کنیم.

 

تنظیم CSF و قوانین تشخیص نفود

ابتدا با استفاده از دستور زیر قوانین فعلی فایروال را بررسی کنید:

csf -l

شما همچنین می‌توانید با استفاده از دستورات زیر آنها را به ترتیب متوقف کرده یا مجدداً بارگیری کنید:

csf -f
csf -r

 

این گزینه‌های پرکاربرد را به خاطر بسپارید؛ چرا که در ادامه مسیر به آنها احتیاج خواهید داشت، به خصوص برای بررسی بعد از ایجاد تغییرات و شروع مجدد csf و lfd.

 

مثال 1 – مجاز و ممنوع کردن آدرس‌های IP

برای مجاز کردن اتصالات ورودی از آدرس 192.168.0.10 از دستور زیر استفاده نمایید:

csf -a 192.168.0.10

به همین ترتیب، می‌توانید با استفاده از دستور زیر اتصالات مربوط به آدرس 192.168.0.11 را مانع شوید:

csf -d 192.168.0.11

در صورت تمایل می‌توانید هر یک از قوانین فوق را به صورت زیر حذف کنید.

csf -ar 192.168.0.10
csf -dr 192.168.0.11

دقت کنید که چگونه استفاده از -ar یا -dr در بالا، قوانین اجازه و منع موجود مرتبط با یک آدرس IP را حذف می‌نماید.

 

مثال 2 - محدود کردن اتصالات ورودی با منبع

بسته به کاربرد در نظر گرفته برای سرور خود، ممکن است بخواهید اتصالات ورودی را به یک تعداد ایمن بر اساس پورت محدود کنید. برای انجام این کار، /etc/csf/csf.conf را باز کرده و CONNLIMIT را جستجو کنید. شما می‌توانید چندین پورت را تعیین کنید. جفت اتصالات با کاما از هم جدا شده اند. به عنوان مثال،

CONNLIMIT = "22;2,80;10"

 

مثال 3 - ارسال هشدارها از طریق ایمیل

چندین نوع هشدار وجود دارد که می‌توانید انتخاب کنید. به دنبال تنظیمات EMAIL_ALERT در  /etc/csf/csf.conf بگردید و مطمئن شوید که برای دریافت هشدار مرتبط، روی مقدار "1" تنظیم شده اند. به عنوان مثال:

LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"

باعث می‌شود هربار که شخصی با موفقیت از طریق SSH وارد شود یا با استفاده از دستور su، به حساب دیگر سوییچ کند، یک هشدار برای آدرس مشخص شده در LF_ALERT_TO ارسال شود.

 

گزینه‌های پیکربندی CSF و کاربردهای آن

این گزینه‌های زیر برای اصلاح و کنترل پیکربندی csf استفاده می‌شوند. کلیه فایل‌های پیکربندی csf در داخل دایرکتوری  /etc/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 را با تمام فایل‌ها و پوشه‌ها به طور کامل پاک می‌کند.

 

منبع:

Install and Configure ConfigServer Security & Firewall (CSF) in Linux