یکی از الزاماتی که در استاندارهای امنیتی مطرح شده است، استفاده از فایروالهای نرم افزاری و سختافزاری می باشد که به جهت جلوگیری از حملات تکذیب سرویس و یا اعطای دسترسی بر اساس آی پی مورد استفاده قرار میگیرند.
در سرورهای لینوکسی فایروالهای متنوعی وجود دارد. یکی از بهترین فایروالهای لینوکسی فایروال iptables است که به دلیل نداشتن محیط گرافیکی ممکن است زیاد مورد استقبال کاربران قرار نگیرد. به همین دلیل شرکت های مختلف در صدد تولید فایروالهای با محیط GUI برای لینوکس برآمدهاند.
CSF یکی از بهترین محصولات و فایروال های لینوکسی میباشد. فایروال CSF محصول شرکت configserver است که براساس دستورات iptables مدیریت فایروال را انجام میدهد و به صورت رایگان و با محیطی کاربر پسند ارایه شدهاست.
برای نصب این فایروال در سرورهای لینوکسی مراحل زیررا انجام می دهیم:
۱- دانلود بسته فایروال در لینوکس با دستور زیر
۲- استخراج فایل های مربوطه از فایل فشرده
#tar zxvf csf.tgz
۳- در مرحله سوم به شاخه استخراج شده وارد میشویم
#cd csf
۴- در این مرحله پروسه نصب آغاز می گردد. برای نصب فایروال در کنترل پنلهای مختلف فایلهای مجزایی در فایروال وجود دارد تا پروسه نصب برای کنترل پنلهای مختلف را تسریع نماید.
به جهت نصب فایروال در کنترل پنل cPanel دستور زیر را اجرا نمایید
در صورتی که می خواهید نصب بر روی کنترل پنل دایرکت ادمین انجام شود، دستور زیر را واردنمایید
#./install,directadmin.sh
و در صورتی که از کنترل پنل خاصی در سرور لینوکس خود استفاده نمی کنید دستور زیر را وارد نمایید
#./install.sh
پس از نصب باید از صحت عملکرد فایروال در سرور مطلع شوید، زیرا فایروال برای اینکه بدرستی کار کند، در هسته مرکزی لینوکس نیاز به برخی از ماژولها دارد و برای تست این موضوع میتوانید دستور زیر را اجرا نمایید:
# perl /etc/csf/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 ipt_owner…OK
Testing iptable_nat/ipt_REDIRECT…OK
RESULT: csf should function on this server
Looks 100% OK.
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 ipt_owner…OK
Testing iptable_nat/ipt_REDIRECT…OK
RESULT: csf should function on this server
Looks 100% OK.
در صورتی که تمامی موارد ok بود و پیغام csf should function on this server مشاهده شد، یعنی فایروال درست کار میکند.
پس از نصب فایروال باید تغییراتی اعمال شود، که موارد مورد نیاز برای تغییرات به شرح زیر می باشد:
در صورتی که بخواهید هر تغییری را در پیکربندی فایروال انجام دهید، فایل اصلی پیکربندی فایروال فایل csf.conf میباشد که به صورت پیشفرض در مسیر /etc/csf/csf.conf است.
فایل مربوطه را بازگشایی و تغییرات زیر را در آن اعمال کنید
#nano /etc/csf/csf.conf
TESTING = “0″
TESTING = “0″
پارامتر testing را از ۱ به صفر تغییر دهید تا فایروال فعال شود. در حالتی که فایروال در حالت test قرار دارد، پیکریندی های انجام شده اعمال نمی گردد و عملا استفاده از فایروال بی معنی است.
مقدار TCP_IN پورت های مجاز سرور جهت اتصال از خارج از سرور را مشخص می کند. دقت کنید که همیشه ابتدا پورت SSH را در فایروال اعمال نمایید.
به عنوان مثال :
TCP_IN = “20,21,22,25,53,80,110,143, 443,465,587,993,995″
پورت SSH پورت 22 میباشد.
مقدار TCP_OUT پورت های مجاز سرور جهت اتصال از سرور به خارج از سرور را مشخص میکند. دقت کنید که همیشه ابتدا پورت SSH را در فایروال اعمال نمایید.
به عنوان مثال :
به عنوان مثال :
TCP_OUT = “20,21,22,25,53,80,110,113, 443″
مقدار UDP_IN نوع اتصال UDP از خارج از سرور به داخل سرور را مشخص می کند که در صورتی که شما بر روی سرور وب سایتی را میزبانی میکنید .پورت ۵۳ از نوع udp را در فایروال اضافه نمایید.
به عنوان مثال :
UDP_OUT = “20,21,53,113,123,33434:33523″
پارامتر SYNFLOOD باعث جلوگیری از حملات DDOS از نوع synflood میگردد.که در صورتی که پیشنهاد می گردد این مقدار برابر با ۱ باشد و در سرور فعال گردد که برای فعال سازی مقادیر زیر را در آن قرار دهید.
SYNFLOOD = “1″
SYNFLOOD_RATE = “100/s”
SYNFLOOD_BURST = “150″
SYNFLOOD_RATE = “100/s”
SYNFLOOD_BURST = “150″
پارامتر SYNFLOOD_RATE سرعت دریافت پکتها از یک آی پی را بررسی میکند که در حال تنظیم شده در ثانیه حداکثر 100 پکت دریافت میگردد.
در پارامتر SYNFLOOD_BURST تعداد کانکشنهای هر آیپی مشخص میگردد و در صورتی که تعداد کانکشنها بیشتر از 150 شود و یا 150 کانکشن در 1 ثانیه بیشتر از 100بسته ارسال کنند . آی پی مربوطه مسدود می گردد.
پارامتر PORTFLOOD در این قسمت میتوانیم نوع پروتکل و پورت به همراه تعداد کانکشن در بازه زمانی مد نظر را مشخص نماییم تا جلوی حملات سیل آسا علیه سرور در یک پورت خاص گرفتهشود.
PORTFLOOD = “80;tcp;20;300″
در مثال ذکر شده اگر از یک آی پی در مدت 300 ثانیه بیشتر از تعداد 20 کانکشن به سمت پورت 80 ارسال شود. آی پی در فایروال مسدود میگردد.
پارامتر CT_LIMIT مجموع تعداد کانکشن یک آی پی را مشخص می کند. در مثال زیر این مقدار برابر با 300 است.
CT_LIMIT = “300”
پارامتر CT_INTERVAL بازه زمانی بررسی تعدادکانکشنها را مشخص می کند. در این حالت فایروال بر اساس مثال زیر هر 30 ثانیه اقدام به بررسی تعداد کانکشنها مینماید.
CT_INTERVAL = “30”
پارامتر CT_EMAIL_ALERT با فعال سازی این پارامتر در صورت مسدود نمودن آیپی ایمیل برای ایمیل تنظیم شده در فایروال ارسال می گردد.
CT_EMAIL_ALERT = 1
پارامتر CT_PERMANENT با فعال سازی این مقدار آیپیها بصورت موقت مسدود میگردند و به صورت پیشفرض این پارامتر غیرفعال است. توصیه میکنیم این مقدار غیرفعال باشد.
در صورت فعال نمودن این پارامتر باید زمانی نیز برای بازگشایی آیپی که به صورت موقت غیرفعال شده است . در نظر بگیرید که به عنوان مثال در زیر این مقدار برابر با ۱۸۰۰ ثانیه تنظیم شده است و پس از این مدت آی پی که مسدود گردیده است . بازگشایی می گردد.
CT_BLOCK_TIME = 1800
پارامتر CT_PORTS در صورتی که میخواهید پورت و یا پورتهای خاصی عملیات connection_tracking انجام شود این مفدار را تنظیم نمایید. در مثال زیر پورت 80 و 4430تنظیم شدهاست.
CT_PORTS = 80,443
پارامتر CONNLIMIT در صورتی که میخواهید بر روی پورت مشخصی تعداد کانکشن معینی را محدود نمایید از این پارامتر استفاده نمایید. جهت اعمال موضوع توضیحات مثال زیر را بررسی نمایید.
CONNLIMIT = “22;5,80;20″
ذر این حالت بر روی پورت 22 حداکثر تعداد 5 کانکشن و بر روی پورت 80 تعداد 20 کانکشن محدود میگردد.
پارامتر LF_SCRIPT_ALERT با فعال سازی این مقدار در صورتی که از طریق اسکریپتی ایمیل ارسال شود و تعداد ایمیلهای ارسالی بیشتر از حد مجاز تعیین شدهباشد، به شما از طریق ایمیل اطلاع رسانی می شود که تعداد این ایمیلهای مجاز در مدت زمان یک ساعت توسط پارامتر LF_SCRIPT_LIMIT مشخص میگردد.
هر دو در مثال زیر مشخص شده است.
LF_SCRIPT_ALERT = 1
LF_SCRIPT_LIMIT = 100
LF_SCRIPT_LIMIT = 100
در مثال بالا در صورتی که اسکریپتی بیشتر از 100 ایمیل در 1 ساعت ارسال نماید به شما از طریق ایمیل اطلاع رسانی میگردد.
در صورتی که می خواهید گزارشهای فایروال در ایمیل خاصی بدست شما برسد پارامترهای زیر را تنظیم نمایید:
LF_ALERT_TO = “email@domain.com”
LF_ALERT_FROM = “server.iranserver.com”
LF_ALERT_FROM = “server.iranserver.com”
در مثال ذکر شده ایمیل های مربوطه به ایمیل email@domain.com ارسال می گردد و ایمیل ها در ایمیل مقصد از طرفserver.iranserver.com ارسال میگردد.