به نام خدا
در این مقاله سعی داریم روشی جالب و خلاقانه برای جلوگیری از پورت اسکنر ها در سرور های لینوکس استفاده نماییم.
البته برای استفاده از این روش باید از فایروال iptables و ابزار fail2ban استفاده نمایید.
جهت ادامه آموزش به ادامه مطلب مراجعه نمایید
fail2ban چیست؟
fail2ban ابزاری می باشد که در سرور های لینوکس جهت اهداف مختلف از آن استفاده می شود. روش کلی این ابزار به این گونه است فایل های لاگ سیستم را بررسی می نماید و آی پی ها مهاجم و یا هکر را بن می نماید شما می توانید از این ابزار جهت توقف حملات بروت فورس (Brute Force) به پورت ssh سرور و یا لینوکس استفاده نمود.
استفاده از fail2ban برای متوقف کردن حملات بروت فورس و یا پورت اسکنر ها چه فایده ای دارد؟
به طور کلی لینوکس از امن ترین سیستم عامل های ارائه شده می باشد ولی استفاده از fail2ban دارای دو مزیت زیر می باشد یک با بن نمودن آی پی های مهاجم از شما ترافیک بیشتری از سرور خود دریافت خواهید کرد و ترافیکی جهت پاسخگویی به حملات هکری هدر نخواهد رفت و دومین مزیت این است که با وجود امنیت بالای لینوکس مانند این می ماند که شما گاوصندوق خود را در اتاق بگذارید و از دید دزدان مخفی کنید و یا اینکه گاوصندوق خود را در خیابان محل زندگیتان قرار دهید هر چند شاید کسی نتواند به محتویات گاوصندوق دسترسی پیدا کند ولی عاقلانه به نظر نمی رسد که گاوصندوق در خیابان باشد!
اگر نیاز به دانش بیشتری در مورد fail2ban دارید به این پست سایت مراجعه نمایید و یا در اینترنت سرچ نمایید!
خب روده درازی دیگه بسه! میرم سراغ آموزش اصلی
روش کلی این آموزش استفاده از سیاه چاله می باشد. اگر دوست دارید بدونید سیاه چاله دیگه چه روشیه به این پست مراجعه کنید کامل توضیح دادم.
البته زیادم مهم نیست یه روش کلیه!
دستور زیر را در ترمینال لینوکس وارد نمایید.
iptables -A INPUT -p tcp --dport 80 --syn -j LOG --log-prefix "PORT DENIED: " --log-level 5 --log-ip-options --log-tcp-options --log-tcp-sequence
می خواهید بدونید دستور بالا چی کار میکنه؟
دستور بالا اتصال هایی که به پورت هشتاد میشه را در مسیر /var/log/messages به صورت لاگ ذخیره می نماید. شما میتوانید به جای پورت هشتاد از هر پورت دیگه این استفاده نمایید فقط دو نکته را مورد توجه قرار دهید یک پورت به صورت سیاه چاله یا دام باشد یعنی هیچ استفاده ای نداشته باشد. دو بهتر از پورت های معروف استفاده نمایید مانند:(13و20و21و22و23و25و53و67و69و68و79و80و110و119و143و443و515و544و636و989و990و1000و1433و1723و1900و2082و2121و3128و3389و3986و5000و5190و6646و8000و8080و8443و9999)
اینم از معرفی پورت های معروف!
در مرحله بعد به مسیر زیر بروید.
/etc/fail2ban/filter.d
اگر بلد نیستید به این مسیر بروید از دستور زیر استفاده نمایید.
cd /etc/fail2ban/filter.d
با ویرایشگر نانو یا هر ویرایشگر دیگه و یا هر روش دیگر فایلی به نام portscan.conf بسازید و متن زیر را درون این فایل قرار دهید.
میترسم بگید از زیر آموزش کامل در رفت دستور زیر را وارد نمایید.
nano portscan.conf
اگر ویرایشگر نانو را در لینوکس خود نصب نکرده باشید این دستور کار نخواهد کرد! پس نصبش کن.
nano portscan.conf
متن زیر را داخل این فایل کپی نمایید.
[Definition]
failregex = PORT DENIED: .* SRC=<HOST>
ignoreregex =
تغییرات را ذخیره نمایید و از فایل خارج شوید(در ویرایشگر nano ابتدا کلید ctrl +x را فشار دهید و با زدن دکمه y تغیرات را سیو نمایید)
فایل jail.local را باز نمایید مسیر این فایل به این شرح است
/etc/fail2ban/
متن زیر را به آخر فایل اضافه نمایید.
[portscan]
enabled = true
filter = portscan
port = 0:65535
logpath = /var/log/messages
bantime= 864
maxretry = 1
آیا نیازی به توضیح است؟
باشه توضیح میدم عبارت port = 0:65535 شامل همه پورت هایی میشود که در صورت حمله پورت اسکنر آی پی هکر در همه این پورت ها بلاک خواهد شد و این رنج یعنی همه پورت ها و کلا سرور آی پی را بلاک می کند.
عبارت bantime= 864 مدت زمانی می باشد که آی پی هکر بلاک می شود شما می توانید جلوی این عدد شصت صفر دیگر تا هرچه قدر که دلتون بخواد یا هر عددی بزارید فقط توجه کنید به ثانیه حساب میشه!
خواهشا به این عبارت maxretry = 1 دست نزنید چون عملا اگه زیادش کنید کلا پورت اسکنر از این مرحله جون سالم به در میبره.
در آخر دو تا کار دیگه باید انجام بدید تا تموم بشه!
یک تغییرات iptables را سیو نمایید با دستور زیر...
service iptables save
دو fail2ban باید restart بشه.
در اکثر توزیع های لینوکس با دستور زیر:
systemctl restart fail2ban.service
خب اگه زدید و اخطار داد شما در یه جایی اشتباه کردید چون این دستورات به فاصله ها و حرف های اضافی حساس می باشند دو ممکن است فایل لاگ در توزیع لینوکس شما مسیر متفاوتی از /var/log/messages داشته باشه بگردید و یا سرچ کنید پیداش کنید.
تمام شاید بگید روش سختیه ولی از هر روش دیگه ای آسون تره!
خب در آخر بهتون توصیه می کنم به این پست سایت سر بزنید یه آموزش خوبی از fail2ban داخل این پسته