021-91008989

امنیت سرور


آموزش تنظیمات و کانفیگ فایروال csf

 

فایروال متن باز و رایگان Config Server Firewall با نام اختصاری CSF قوی ترین فایروال رایگان و Open Source لینوکس است . فایروال CSF روی کلیه توزیع های لینوکس نصب شده و بهترین فایروال برای استفاده در سرور مجازی محسوب میشود . کانفیگ فایروال CSF در سرور های لینوکس مبتنی بر کنترل پنل های وب هاستینگ cPanel ، Directadmin و همچنین Webmin به دلیل وجود یک UI یا یک پنل گرافیگی و وب بیس به خصوص برای افرادی که دانش کار در محیط Command Line را ندارند ساده تر است . با کانفیگ صحیح فایروال CSF قادر به تشخیص و کنترل بسیاری از حملات و Attack ها مانند اسکن کردن پورت ، حملات SYN flood ، حملات لاگین بیس brute force attacks و … خواهید بود .

برای مشاهده مجازی ساز ها و سیستم عامل های تست شده و سازگار با فایروال CSF به لینک زیر مراجعه کنید :

http://www.configserver.com/cp/csf.html

این مقاله به کانفیگ فایروال CSF روی سرور های مجازی لینوکس بر پایه Debian مانند Debian Linux و Ubuntu Linux می پردازد . در صورت آشنا بودن با مباحث پایه ای لینوکس میتوانید از همین آموزش برای کانفیگ و تنظیمات CSF در توزیع های RHEL مانند CentOS ، Fedora و RedHat نیز استفاده کنید .

دستورات اجرا و نصب فایروال CSF باید با دسترسی های root super user در سیستم عامل لینوکس سرور اجرا شوند :

su root

آموزش تنظیمات و کانفیگ فایروال CSF

فایروال CSF امکانات زیادی برای محافظت سرور مجازی و سرور اختصاصی لینوکس شما در برابر انواع حملات سایبری ارائه میکند که به معرفی آن ها میپردازیم :

جلوگیری از تلاش های لاگین بدون مجوز یا Login authentication failure daemon

فایروال CSF به صورت مداوم و در بازه های زمانی مشخص شده لاگ های سرور را برای بررسی تلاش های ناموفق لاگین به سرور بررسی میکند . CSF بر اساس خواسته شما به این دسته از حملات پاسخ میدهد . برای مثال میتوانید با کانفیگ صحیح به CSF اعلام کنید در صورت مشاهده بیش از ۵ تلاش ناموفق برای لاگین به یکی از سرویس های لینوکس ، آی پی Attacker را برای مدت محدودی (با به صورت دائمی) بلاک کند . نرم افزار ها و سرویس های زیر در حال حاضر توسط CSF محافظت میشوند :

  • سرویس های Courier imap, Dovecot, uw-imap, Kerio
  • سرویس openSSH
  • کنترل پنل WHM/cPanel و صفحه Webmail
  • سرویس های Pure-ftpd, vsftpd, Proftpd
  • دایرکتوری های رمز دار (htpasswd)
  • مغایرت های Mod_security
  • مغایرت های Suhosin
  • سرویس Exim SMTP AUTH

امکان سفارسی کردن لاگ ها و محل ذخیره سازی آن ها برای فایروال CSF وجود دارد .

رد یابی پراسس های لینوکس Process tracking

فایروال CSF در صورت کانفیگ ، امکان ردیابی و تعقیب پراسس های مشکوک اجرا شده در background را به سرور مجازی و اختصاصی شده هدیه میکند . با استفاده از این ابزار قادر به شناسایی و جلوگیری از Exploit در VPS یا VDS خود خواهید بود .

مانیتور کردن دایرکتوری ها Directory watching

با کمک این ابزار CSF قادر به مانیتور لحظه ای پوشه /tmp و سایر دایرکتوری های مورد نظر شما برای شناسایی اسکریپت های خطرناک و تروژان ها میباشد . در صورت شناسایی هر گونه اسکریپت ها بدافزار ، CSF مدیر سرور را از طریق ارسال ایمیل اگاه خواهد ساخت .

محافظ Port flood protection

کانفیگ صحیح و تنظیمات حرفه ای در این بخش به شما امکان جلوگیری از حملات port flood attacks و انواع خاصی از حملات Dos و DDos را میدهد . با انجام تنظیمات این بخش شما مشخص میکنید حد اکثر چند کانکشن در یک بازه زمانی مشخص و روی یک پورت خاص مجوز اتصال دارند . مثلا هر IP مجاز به اتصال ۱۰ کانکشن در ۵ ثانیه روی پورت ۸۰ خواهد بود و در صورت تجاوز از این تعداد ، بر اساس تنظیمات انجام شده IP مورد نظر به صورت موقت یا دائم بلاک خواهد شد .

در زدن به پورت Port knocking

با کمک تنظیمات این بخش فایروال CSF مجوز اتصال به پورت های بسته را برای گروهی از کلاینت ها که مرحله در زدن به پورت را با موفقیت پش سر میگذارند فراهم میکند . این ابزار امنیت سرور مجازی و اختصاصی لینوکس را به میزان قابل ملاحظه ای بالا میبرد .

برای کسب اطلاعات بیشتر در زمینه Port Knocking به آدرس زیر مراجعه کنید :

http://www.portknocking.org

محدودیت در تعداد کانکشن ها Connection limit protection

این قابلیت به شما امکان تعیین کردن تعداد مجاز کانکشن برای هر IP را میدهد . با کانفیگ اصولی این بخش مثلا هر IP قابلیت اتصال حد اکثر ۲۰۰ یا ۳۰۰ کانکشن همزمان را خواهد داشت . یکی از تنظیمات موثر در کنترل بعضی از انواع حملات Dos و Ddos در سرور های لینوکس همین قسمت است .

پنل ادمین فایروال بر پایه وب UI integration

فایروال CSF از یک پنل وب بیس قوی و کاربر پسند برای کنتل پنل های هاستینگ cPanel ، Webmin و دایرکت ادمین پشتیبانی میکند . با کمک این ابزار قدرتمند تسلط شما بر مدیریت فایروال بیشتر شده و انجام تغییرات در فایروال به مراتب ساده تر میگردد .

موارد فوق تنها بخشی از امکانات فایروال قدرتمند CSF بودند که به اختصار به آن ها اشاره شد . در ادامه مبحث ، به آموزش نصب و کانفیگ حرفه ای فایروال CSF در سرور لینوکس میپردازیم :

آموزش تنظیمات و کانفیگ فایروال csf نصب فایروال CSF

فایروال CSF به صورت پیش فرض در مخازن توزیع های Debian و Ubuntu و CentOS از لینوکس موجود نیست . بنا بر این برای نصب فایروال CSF باید آن را از وب سایت رسمی سی اس اف دانلود کنیم :

wget http://www.configserver.com/free/csf.tgz

tar -xzf csf.tgz

cd csf

sh install.sh

با اجرای دستورات فوق فایروال CSF روی سرور شما نصب میشود . ولی در اولین قدم ابتدا باید از وجود کلیه ماژول های IPTABLES مورد نیاز CSF روی سرور اطمینان حاصل کنیم . برای بررسی وجود یا عدم وجود ماژول های ضروری IPTABLES روی سرور لینوکس باید اسکریپت پرل CSF مخصوص بررسی ماژول های IPTABLES زیر را اجرا کنیم :

perl /usr/local/csf/bin/csftest.pl

در صورت عدم دریافت هر گونه fatal errors توسط اسکریپت پرل فوق ، فایروال CSF بدون مشکل روی سرور شما کار خواهد کرد . در حین فرایند نصب CSF روی سرور ، IP کامپیوتر شما به صورت اتوماتیک WHITELIST میشود . نکته بعدی که در هنگام نصب اولیه فایروال باید به آن توجه کنید قرار گرفتن اتوماتیک فایروال به صورت پیش فرض  در وضعیت و حالت  تست است . دلیل آن نیز مشخص است . اگر نیاز به باز کردن پورت های خاصی روی سرور دارید ، حتما قبل از خارج کردن فایروال از حالت تست آن ها را باز کنید . اگر از کنترل پنل های هاستینگ استفاده میکنید یا مثلا پورت SSH شما یک پورت غیر استاندارد و به جز پورت ۲۲ هست ، باید این پورت ها را قبل از فعال کردن کامل فایروال  و خروج از وضعیت تست باز کنید و در غیر این صورت به محض خارج کردن فایروال CSF از حالت تست امکان قطع  شدن دسترسی های شما  به سرور وجود خواهد داشت . برای جلوگیری از این مشکل اجازه بدهید سرور با فایروال در وضعیت تست حد اقل ۵ یا ۱۰ دقیقه کار کنید . فایروال csf در وضعیت testing هر ۵ دقیقه کلیه رول های IPTABLES را پاک میکند . بنا بر این اگر هم ایرادی در کانفیگ فایروال باشد که منجر به قطع دسترسی های شما شده باشد ، بعد از ۵ دقیقه خود به خود غیر فعال میگردد .

کانفیگ مقدماتی و پایه فایروال CSF

برای کانفیگ فایروال CSF باید فایل csf.conf را ویرایش کنید . بعد از ذخیره تغییرات در فایل csf.conf با ریست کردن فایروال تغییرات در IPTABLES اعمال خواهند شد :

vi /etc/csf/csf.conf

csf -r

مرحله اول : تنظیمات پورت های سرور

هر چقدر دسترسی ها به سرور شما محدود تر باشد ، امنیت سرور خواه نا خواه افزایش پیدا میکند . این یک قاعده کلی است و پورت های سرور هم مشمول همین قانون هستند . هیچ دلیلی وجود ندارد که پورت های بی استفاده سیستم عامل لینوکس سرور مجازی یا سرور اختصاصی شما باز باشند . بنا بر این در اولین قدم به مدیریت پورت ها در لینوکس میپردازیم . با نصب فایروال CSF پورت های زیر به صورت پیش فرض باز خواهند شد :

TCP_IN = “20,21,22,25,53,80,110,143,443,465,587,993,995”

TCP_OUT = “20,21,22,25,53,80,110,113,443”

UDP_IN = “20,21,53”

UDP_OUT = “20,21,53,113,123”

سرویس هایی که از این پورت ها  استفاده میکنند به شرح زیر هستند :

Port 20: FTP data transfer
Port 21: FTP control
Port 22: Secure shell -SSH
Port 25: Simple mail transfer protocol -SMTP
Port 53: Domain name system -DNS
Port 80: Hypertext transfer protocol -HTTP
Port 110: Post office protocol v3 -POP3
Port 113: Authentication service/identification protocol
Port 123: Network time protocol -NTP
Port 143: Internet message access protocol -IMAP
Port 443: Hypertext transfer protocol over SSL/TLS -HTTPS
Port 465: URL Rendesvous Directory for SSM -Cisco
Port 587: E-mail message submission -SMTP
Port 993: Internet message access protocol over SSL -IMAPS
Port 995: Post office protocol 3 over TLS/SSL -POP3S

اگر از هر یک از پورت های فوق استفاده نمیکنید یا سرویس های استفاده کننده از این پورت ها در سرور شما کاربردی ندارند ، حتما آن ها را از طریق فایروال CSF ببندید .

مرحله دوم : سایر تنظیمات CSF

در ادامه مبحث آموزش کانفیگ و تنیظمات فایروال CSF به آموزش پیکربندی پر استفاده ترین و مهم ترین قسمت های فایروال CSF در لینوکس می پردازیم .

کنترل پینگ LICMP_IN

مجموعه پروتوکل های ICMP  یکی از پر استفاده ترین سرویس های دنیای اینترنت ، شبکه و هاستینگ هستند . با کمک ICMP_IN در فایروال CSF قادر به باز کردن و بستن پینگ آی پی سرور هستید . با قرار دادن مقدار ۱ پینگ سرور باز میشود و در صورت مقدار دهی ۰ پینگ سرور به طور کامل بسته میشود . اگر سرور شما یک سرور اشتراکی است بستن پینگ میتوانید مشکلاتی برای سرور به همراه داشته باشد .

محدود کردن تعداد IP های بلاک شده با DENY_IP_LIMIT

با مقدار دهی به DENY_IP_LIMIT حد اکثر تعداد IP های مجاز برای نگهداری در لیست بلاک فایروال CSF را مشخص میکنید . مقدار دهی زیاد به این پارامترسبب افزایش لود سرور و مصرف CPU میگردد . خیلی از وب مستران به دلایلی که عموما  اشتباه است این مقدار را روی ۱۰۰۰ یا بیشتر تنظیم میکنند که سبب مصرف بالای منابع سرور میگردد . حد اکثر مقدار توصیه شده ۲۰۰ است .

تعداد آی پی ها بلاک شده به صورت موقت DENY_TEMP_IP_LIMIT

با مقدار دهی به DENY_TEMP_IP_LIMIT حد اکثر تعداد IP هایی که به صورت موقتی بلاک میشوند را تعیین کنید . مانند بلاک دائمی IP افزایش تعداد این آی پی ها نیز سبب کند شدن فایروال و سرور میگردد .

محدود کردن پکت ها PACKET_FILTER

به کمک این ابزار پکت های اشتباه ، بدون کاربرد و غیر قانونی را فیلتر کنید

کنترل حملات SYNFLOOD به کمک SYNFLOOD, SYNFLOOD_RATE , SYNFLOOD_BURST

به کمک این ابزار قادر به کنترل حملات SYNFLOOD روی سرور خود خواهید بود . با فعال سازی این قسمت شکل گیری و اتصال کانکشن های جدید به سرور کند میشود . در واقع با این تکنیک و با افزایش زمان شکل گیری و اتصال کانکشن های جدید به سرور تا حدودی حملات flood از نوع SYN کنترل خواهند شد . بنا بر این فقط زمانی که زیر حملات SYNFLOOD هستید این قسمت را فعال کنید ، چرا که ناخواسته سبب کند شدن سرعت لود شدن سایت برای کاربران جدید (کاربرانی که بعد از فعال سازی این قسمت سایت های روی سرور را باز میکنند) میشود .

محدود کردن کانکشن ها به کمک CONNLIMIT

یکی از قوی ترین امکانات فایروال CSF برای کنترل کردن حملات DOS و بعضی از انواع DDOS ابزای CONNLIMIT است . CONNLIMIT به شما این امکان را میدهد تا تعداد کانکشن های همزمان و فعال (concurrent connections) روی پورت های دلخواه را برای هر IP تعیین و محدود کنید . برای درک بهتر این موضوع یک مثال میزنیم :

آموزش تنظیمات و کانفیگ فایروال csf

آموزش تنظیمات و کانفیگ فایروال csf

این مقدار دهی به CONNLIMIT در فایروال CSF به این معنیست که تعداد کانکشن های همزمان مجاز برای هر آی پی روی پورت ۲۲ حد اکثر ۵ کانکشن و روی پورت ۴۴۳ حد اکثر ۲۰ کانکشن می باشد .

محدود کردن کانکشن ها به کمک PORTFLOOD

یکی دیگر از امکانات بسیار کاربردی و موثر فایروال CSF در کنترل حملات DOS و DDOS ویژگی محدود کردن تعداد کانکشن های مجاز برای اتصال بر روی پورت های تعیین شده در بازه ها زمانی مشخص است . با مقدار دهی صحیح و دقیق به PORTFLOOD سرعت کانکشن زدن یک آی پی روی پورت های مورد نظر شما کنترل خواهد شد . برای درک بهتر چگونگی عملکرد PORTFLOOD در فایروال CSF یک مثال میزنیم :

آموزش تنظیمات و کانفیگ فایروال csf

آموزش تنظیمات و کانفیگ فایروال csf

این مقدارد هی به PORTFLOOD به فایروال CSF دستور میدهد در صورتی اتصال بیش از ۵ کانکشن در مدت ۲۵۰ ثانیه به پورت ۲۲ از یک IP آن را بلاک کند .

اگر قصد محافظت از پورت های بیشتری را دارید میتوانید آن ها را با کاما از هم جدا کنید . به طور کلی فرمت استفاده از  PORTFLOOD برای چند پورت مختلف به شکل زیر است :

فرمت استفاده از PORTFLOOD برای چند پورت به صورت همزمان

آموزش تنظیمات و کانفیگ فایروال csf

محدود کردن کلی کانکشن ها Connection Tracking

به کمک connection tracking فایروال csf میتواند آی پی هایی را که مجموعا بیشتر از تعداد مجاز و تعیین شده به سرور کانکشن زده اند را بلاک کند . این کانکشن ها به صورت کلی محاسبه میشوند و پورت و سرویس خاصی مد نظر نیست .  برای این منظور کافی است تا مقدار CT_LIMIT را مثلا روی ۳۰۰ ست کنیم . در این صورت هر زمانی که بیشتر از ۳۰۰ کانکشن توسط یک ip به سرور متصل شود آن آی پی توسط فایروال CSF بلاک خواهد شد . فایروال CSF به صورت پیش فرض هر ۳۰ ثانیه یک بار تعداد کانکشن های هر آی پی را با مقداری که در CT_LIMIT مشخص کرده اید چک میکند .در صورتی که مایل به افزایش یا کاهش این مدت زمان هستید باید مقدار تعیین شده برای CT_INTERVAL را تغییردهید . توجه داشته باشید که این عدد هر چه کمتر باشد منابع مصرفی توسط CSF بیشتر خواهد بود .

پک امنیتی CSF شامل امکانات بسیار زیاد دیگری نیز هست که میتوانید از دموی CSF در کنترل پنل WHM آن ها را مشاهده کنید :

http://configserver.com/cp/csfdemo/config.html

کلیه تنظیمات فایروال CSF که در لینک فوق مشاهده میکنید در محیط SSH با ویرایش فایل CSF.CONF قابل دسترس هستند . برای ویرایش این فایل در لینوکس دستور زیر را در ssh اجرا کنید :

vi /etc/csf/csf.conf

بعد از پایان کانفیگ فایروال csf و ذخیره کردن تغییرات در فایروال ، باید csf را یک بار ریستارت کنید تا تغییرات اعمال شوند . برای ریست کردن فایروال csf یا از طریق پنل ادمین csf در کنترل پنل های دایرکت ادمین ، سی پنل و وبمین اقدام کنید یا در ssh دستور زیر را وارد کنید :

csf -r

حالا ۵ دقیقه فرصت دارید تا همه موارد کانفیگ شده را بررسی کنید . فایروال CSF در حالت تست ۵ دقیقه بعد از استارت کلیه رول های IPTABLES را پاک میکند تا اگر هم اشتباهی درکانفیگ فایروال رخ داده دسترسی های شما کاملا قطع نشود .در صورتی که همه چیز به درستی کار میکرد و مشکلی در کانفیگ شما وجود نداشت مجددا فایل کانفیگ فایروال csf را ویراش کرده و فایروال را از حالت تست و آزمایش خارج کنید . برای این کار کافیست مقدار TESTING را از ۱ به ۰ تغییر دهید و مجددا فایروال را ریست کنید :

TESTING = 0

csf -r

چند نکته در باره فایروال CSF

  • آی پی های بلاک شده در فایل csf.deny ذخیره میشوند
  • آی پی های مجاز و white در فایل csf.allow ذخیره میشوند
  • برای بلاک کردن آی پی در ssh کافی است تا دستور csf -d ip را وارد کنید
  • برای وایت لیست کردن آی پی در ssh کافی است تا دستور csf -a ip را وارد کنید
  • برای بلاک کرد یا وایت لیست کردن یک رنج آی پی باید آن را به شکل ۲٫۳٫۰٫۰/۱۶ در فایل مربوطه وارد کنید
  • همیشه از به روز بود فایروال خود اطیمنان داشته باشید . برای آپدیت کردن csf در محیط ssh دستور csr -u را وارد کنید
  • برای غیر فعال کردن فایروال در ssh دستور csf -x را اجرا کنید
  • برای فعال کردن مجدد فایروال csf در ssh دستور csf -e را وارد کنید
  • از استفاده همزمان csf با سایرفایروال ها جدا خود داری کنید
  • برای نصب پنل ادمین CSF در  webmin کافی است تا پلاگین مربوطه را از مسیر /usr/local/csf/csfwebmin.tgz روی کنترل پنل وب مین نصب کنید . در cPanel و Directadmin نیازی به نصب پلاگین نیست .