تنظیمات فایروال برای جلوگیری از حملات DOS و SYN

برای مشاهده آی پی ها و تعداد کانکشن های متصل به سرور می توانید از دستور زیر استفاده نمایید و هر آی پی ای که بیش از مجاز متصل بود آنرا بلاک نمایید

netstat -atun | awk '{print $5}' | cut -d: -f1 | sed -e '/^$/d' |sort | uniq -c | sort -n

برای حفاظت از سرور در حملات SYN و DOS مقادیر زیر را در فایروال به مقادیر زیر تغییر دهید

CT_LIMIT = "80"

CT_INTERVAL = "50"
CT_PERMANENT = "1"
CT_BLOCK_TIME = "1800"
CT_INTERVAL = "60"
CT_SKIP_TIME_WAIT = "1"
SYNFLOOD = "1"
LF_DIRWATCH = "300"
PORTFLOOD = "80;tcp;20;300"

کانفیگ و نصب فایروال CSF

در این آموزش قصد داریم نحوه نصب فایروال CSF بر روی انواع سرور های لینوکسی و همچنین کانفیگ آن را به شما آموزش دهیم

این کانفیگ برای سرور های مجازی و سرور های اختصاصی معتبر می باشد

[accordion]

[section title=”نحوه نصب “]

ابتدا از طریق putty وارد سرور لینوکسی خود شوید ، سپس دستورات زیر را یکی یکی کپی کرده و منتظر بمانید تا پروسه آن به پایان رسد

[code]
wget https://download.configserver.com/csf.tgz [/code]
[code]tar -xzf csf.tgz[/code]
[code]cd csf[/code]
[code]sh install.sh[/code]

 

[/section]
[section title=”نحوه کانفیگ”]

اولین گزینه که در csf.conf هست مربوط میشه به حالت فعال بودن آزمایشی یا آماده به کار
TESTING = “۰″
در این جا ما دو تا حالت داریم یکی صفر و یکی “یک” که اگه یک قرار بدیم مثل این میمونه که ما اصلا CSF رو نصب نکردیم و اگر ۰ قرار بدیم CSF فعال میشه پس ما صفر رو انتخاب میکنیم و میریم سراغ کانفیگ بعدی.
این مرحله مربوط میشه به مدت زمان بین چک کردن رول های خود CSF که بر حسب دقیقه هست در واقع یه Cron هست و CSF رو استارت میکنه
TESTING_INTERVAL = “۱″
و میتونه بین ۱ تا ۵ دقیقه باشه توصیه میشه روی ۱ قرار بدید چون هرچه مدت زمان بین چک کردن رول ها کمتر باشه بهتر است
AUTO_UPDATES = “۰″
این گزینه همون طور که از اسمش پیدا هست وظیفش اینه که به طورت اتوماتیک خودش رو آپدیت نگه داره که اگه “یک” قرار بدید غیر فعال میشه و خودش رو آپدیت نمیکنه ولی اگه “صفر” قرار بدید CSF به صورت اتوماتیک خودش رو آپدیت میکنه پس بهترین گزینه برای این کانفیگ ست کردن صفر هست چون ممکنه باگی توی CSF پیدا بشه و شما متوجه نشید برا همین ۰ انتخاب میکنیم
ETH_DEVICE = “eth0,eth1″
CSF به صورت اتوماتیک بر روی تمام کارت شبکه های سرور شما رول ها رو اعمال میکنه پس اگه خالی گذاشتید تمام کارت های شبکه شما پشت فایروال قرار میگیره ولی بعضی وقت ها ممکنه تعداد کارت های شبکه سرور شما چند تا باشه که شما میخواید فقط تعدادی از اون ها پشت CSF باشه برا همین توی این کانفیگ اون ها رو مشخص میکنیم و با علامت “,” از هم دیگه جداشون میکنیم .
ETH_DEVICE_SKIP = “eth2,eth3″
این کانفیگ همون طور که از اسمش پیدا هست میتونید اون کارت شبکه هایی که نمیخواید پشت فایروال قرار بگیره رو قرار بدید در واقع آزاد باشه
خوب حالا میخوایم بریم سراغ یه سری تنظیمات که خیلی مهم هست در واقع مدیریت پورت های سرور هست پس مواظب باشید دارید چه پورتی رو باز میزارید و چه پورتی رو میبندید
TCP_IN = “۲۰,۲۵,۵۳,۸۰,۱۱۰,۴۶۵″
همون طور که از اسمش پیدا هست پورت هایی رو میتونید اینجا باز کنید که از بیرون از سرور به سرور دسترسی داشته باشند در واقع پورت هایی که اجازه ورود به سرور رو دارند شما اگه نمیدونید چه پورتی برای چه کاری هست بهتر هست به تاپیک معرفی پورت ها یه سری بزنید و و ببینید چه پورتی برای چه کاری هست اینجا دیگه بستگی به شما داره که چه سرویس هایی روی سرور خودتون دارید و از چه پورت هایی دارید استفاده میکنید
کانفیگ بعدی مربوز میشه به :
TCP_OUT = “۲۰,۲۱,۲۲,۲۵,۳۷,۴۳,۵۳,۸۰,۱۱۰″
این کانفیگ هم مربوط میشه به پورت هایی که از سرور به بیرون باز باشد در واقع پورت هایی که از توی سرور به بیرون از سرور باز باشه خوب حالا این ها مربوط میشه به TCP پورت که با UDP تفاوت داره اشتباهی نگیرید
حالا میریم سراغ پورت های UDP
که UDP_IN پورت های UDP از بیرون به داخل رو باز میکنه
UDP_IN = “۵۳″
در مورد UDP_OUT پورت های UDP از داخل سرور به بیرون میخواید باز باشه
UDP_OUT = “۲۰,۲۱,۵۳,۱۱۳,۱۲۳,۸۷۳,۶۲۷۷″
وقتی پورت ها کانفیگ کردیم میریم سراغ پروتکول ICMP که این هم بستگی به افراد داره بعضی وقت ها افراد دوست دارند باز باشه این رو فعال می کنند بعضی ها هم نه و میبندند ولی در صورت باز بودن میتونند یه سری حملات روی سرور داشته باشند راستش اگه در سطح سرور بسته هم بشه و حمله فوی باشه فایده ایی نداره ولی اگه بسته باشه بهتر هست
پس در کانفیگ زیر که ICMP رو از بیرون به داخل کانفیک میکنه :
ICMP_IN = “۰″
اگر عدد “یک” رو بزاریم ICMP باز است و میتونند پینگ کنند و شما Rate آین هم معلوم میکنید ولی اگه ۰ باشه که کلا بسته میشه برای تنظیم Rate اون هم کانفیگ زیر رو ادیت میکنیم عموما ۱ در ثانیه ست میکنند
ICMP_IN_RATE = “۱/s”
شاید شما دوست داشتید ۲ یا … بیشتر بزارید
حالا میریم سراغ باز یا بستم ICMP از داخل سرور به بیرون که باز بزارید کاریش نداشته باشید چون سرویس های شما قطعا نیاز داره
ICMP_OUT = “۱″
ICMP_OUT_RATE = “۰″
اگر دقت کرده باشید من ICMP_OUT_RATE رو عدد ۰ گذاشتم به معنی بی نهایت هست یا نا محدود
SMTP_BLOCK = “۱″
همون طور که از اسمش پیدا هست در مورد SMTP هست , که این کانفیگ ایمیل هایی که غیر از یوزر روت با SMTP میخواد فرستاده بشه ، بلاک میکنه . در سرور های هاستینگ اصلا توصیه نمیشه چون SMTP تمام یوزر ها رو میبنده اگه سروری دارید که هاستینگ هست گزینه ۱ رو انتخاب کنید . اگه سروری دارید که اصلا سیستم میل استفاده نمیشه ۰ رو انتخاب کنید
SMTP_ALLOWLOCAL = “۱″
اگر SMTP_BLOCK فعال کرده باشید این گزینه اجازه میده تنها از روی خود سرور توسط SMTP ایمیل فرستاده بشه یعنی اگه با Localhost فرستاده شد اجازه خروج از سرور رو بده غیر از این مثلا اگه از بیرون وصل شدند و خواستند SMTP ایمیل یزندد بلاک کنه اگر شما گزینه صفر رو انتخاب کنید تنها از روی خود سرور اجازه فرستادن ایمیل با SMTP داده میشه و اگر ۱ اصلا غیر فعال میشه
SMTP_PORTS = “۲۵″
این گزینه مربوط به پورتی هست که شما تنظیم کردید SMTP باهاش کار کنه که بیشتر موارد ۲۵ هست
DROP = “DROP”
همون طور که میدونید IPTABLES دو مدل برای دفع پاکت ها داره یکی Drop که پاکت ها از اسمش معلومه ریزش پیدا میکنه و یه مدل دیگه Reject که یه پاکت میفرسه که این پاکت ریجکت شده که توصیه نمیشه چون مشکل ساز هست پس بهترین مدل همون Drop هست
DROP_LOGGING = “۰″
این کانفیگ اگه گزینه ۰ رو انتخاب کنید لاگ میکنه پاکت هایی که Drop یا Reject شده و اگه ۱ رو اتخاب کنید لاگ نمیگیره از پاکت هایی که ه Drop یا Reject شده پیشنهاد میشه گزینه ۰ رو انتخاب کنید که در صورتی که مشکلی پیش اومد بدونید و دلیلش رو متوجه بشید و حلش کنید
DROP_IP_LOGGING = “۱″
این گزینه ایپی هایی که پاکت هاشون Drop یا Reject میشه رو بلاک میشکه , میشه گفت یکم خطریه پس بهتره عدد ۱ رو انتخاب کنید و رد بشید چون ایپی های معمولی و ساده بعضی وقت ها پاکت هاشون Drop میشه و این ریسک هست . پس نتیجه میگیریم بهتره گزینه ۱ است
DROP_ONLYRES = “۰″
این گزینه لاگ میکنه پورت های خاصی رو که مد نظر دارید که با “,” پورت ها رو از هم جدا کنید اگه ۰ صفر رو انتخاب کنید تمام پورت ها رو لاگ میکنه
DROP_NOLOG = “۶۷,۶۸,۱۱۱″
این گزینه هم پورت هایی که نمی خواید لاگ کنه رو مینویسید که توصیه میشه خالی بزارید تا همه پورت ها لاگ بشه
PACKET_—————— = “۱″
این گزینه هم لاگ میکنه پاکت هایی که خود IPTABLES تشخیص میده که نامشخص هست یعنی پاکت هایی که INVALID هستند ….
DROP_PF_LOGGING = “۰″
این گزینه هم لاگ کردن SYN Flood Protection رو فعال میکنه
SYNFLOOD = “۰″
SYNFLOOD_RATE = “۱۰۰/s”
SYNFLOOD_BURST = “۱۵۰″
Synflood اولی ، این تنظیم خود این Synflood Protection رو فعال میکنه و SYNFLOOD_RATE هم Rate رو مشخص میکنه و SYNFLOOD_BURST و این هم Burst که این تنظیمات بستگی به سرور شما و سطح حمله ایی که داره به سرور شما میشه به صورت دیفالت میتونید این ها رو قرار بدید اگر حمله شدیتر از این حرف ها بود Rate رو کمتر کنید تا به جایی برسه که دفع کنه حمله رو
PORTFLOOD = “”
این گزینه هم کانکشن ها رو هر پورت مدیریت میکنه برای مثال اگه شما این تنظیم رو بکنید برای مثال کانفیگ زیر رو ببینید به این معنیست که روی پورت ۸۰ از نوع TCP هر ایپی میتونه در مدت ۵ ثانیه ۲۰ تا کانکشن بندازه
PORTFLOOD = “۸۰;tcp;20;5″
VERBOSE = “۱″
VERBOSE این کار هایی که Iptables میکنه رو روی صحفه نمایش شما نشون میده که بهتره ۱ رو انتخاب کنید چون بعضی وقت ها دارید کانفیگ میکنید یه هو میبینید ۲۰ خط اومد تو صفحه مانیتورتون !
SYSLOG = “۰″
این هم برای فعال کردن SYSLOG که همیشه فعال نگهش دارید چون واقعا به کارتون میاد و لاگ های سیستم رو میندازه که مهم هست پس عدد ۰ رو انتخاب میکنیم !

[/section]
[section title=”نکته مهم”]

حتما پس از انجام تغییرات بر روی ذخیره کلیک کرده و فایروال را ریست کنید

[code]service csf restart[/code]

[/section]

[/accordion]