علیرضا حسینی زاده
یه برنامه نویس
مدیر فنی افرافایل
درباره من
تامین امنیت سرورهای لینوکس و جلوگیری از حملات ddos ارسال شده در ۰۴ تیر ۱۴۰۰
چند وقته هکرهای زیادی شروع کردن استفاده از سرورهای ایرانی برای ران کردن ماینر خودشون و چندروزه که خبرهای ddos زیادی از استارتاپ ها به گوشم میرسید.
دیروز روی یکی از سرورهای ما هم این بلا اومد سرور خوابید، و وقتی لاگ درخواست ها رو نگاه کردم، تعداد خیلی زیاد و عجیبی درخواست در یک لحظه رو نشون میداد بعد از بررسی دیدم که حمله هست و طرف ای پی سرور رو پیدا کرده و داره مستقیم میزنه به آی پی، بعد از پرس و جو فهمیدم اره همین ماینرها هستن که میخوان روی سرور ما نفوذ کنه و ماین کنه، برای همین این آموزش تامین امنیت سرورهای لینوکس و جلوگیری از حملات ddos رو گذاشتم که توضیح بدم چطور باید جلوگیری کنیم از این مدل حملات چون داره زیاد میشه مخصوصا روی سرور های ایرانیا
مواد لازم:
- دسترسی SSH و root به سرور
- یک CDN پیشنهاد من اینه اگه بازدیدتون بیشتر ایرانیا هستن آروان کلود استفاده کنیدو اگه نصف بازدیدتون یا بیشتر خارج از ایرانه از کلود فلر ولی درکل برای خدمات CDN و جلوگیری از حملات هردوش خوبه
- نصب یک فایروال یا استفاده از فایروال دیفالت لینوکس و گذاشتن رول های محدود کننده
خب میریم برای شروع
اولین کاری که باید بکنید اینه که توی یک CDN ثبت نام کنید و DNS ها رو ست کنید تا DNS شما از این شرکت مثلا آروان کلود استفاده کنه بعد باید نماد ابر رو روشن کنید تا برید روی سرویس CDN اونا و هر NS که آی پی شما رو نشون میده رو یا حذف کنید یا نماد ابرش رو روشن کنید تا آی پی سرورتون لو نره
دومین کار نصب فایروال روی سرور هست که بتونیم دسترسی به سرور رو برای یک سری آی پی محدود کنیم تا هرکس نتونه با هر آي پی به سرور ما به طور مستقیم دسترسی داشته باشه و این دسترسی رو فقط به خودمون و آي پی های CDN میدیم
من پیشنهادم برای فایروال CSF هست که خیلی سبکه و در عین حال قویه چندین ساله دارم روی سرورهای مختلف ازش استفاده میکنم ولی شما هر فایروال دیگه ای خواستید میتونید نصب کنید.
نصب فایروال CSF و کانفیگ اون روی سرور لینوکس CentOS 7
من اینجا طریقه نصب CSF روی سرور CentOS 7 رو آموزش میدم ولی شما میتونید روی توزیع های دیگه لینوکس هم نصبش کنید تفاوتی نداره
با دسترسی root وارد ssh بشید و اگر SELINUX روشن هست خاموشش کنید و بعد یکبار سرور رو ریبوت کنید، دستورات زیر رو به ترتیب بزنید و خط سوم باید توی اون فایل SELINUX رو disabled قرار بدید
yum -y install nano
nano /etc/selinux/config
SELINUX=disabled
reboot
بعد از اینکه سرور اومد بالا حالا دستورات زیر رو به ترتیب بزنید
yum install wget vim perl-libwww-perl.noarch perl-Time-HiRes nano
cd /usr/src/
wget https://download.configserver.com/csf.tgz
tar -xzf csf.tgz
cd csf
sh install.sh
به همین راحتی فایروال نصب میشه
اگر کنترل پنلی مثل Cpanel یا DirectAdmin یا VestaCP یا … داشته باشید توی این کنترل پنل ها یه بخش جدید اضافه میشه به اسم CSF که از همونجا میتونید کانفیگ و تنظیمات فایروال رو تغییر بدید اگر کنترل پنل ندارید بازم مشکلی نیست از طریق ssh میتونید کانفیگ این فایروال رو با دستورات زیر تغییر بدید:
nano /etc/csf/csf.conf
بعد از هربار تغییر باید فایروال رو ریستارت کنید با دستور زیر اگر کنترل پنل تغییر میدیم هم نیازی نیست بعد از هر تغییر خودش دکمه ریست رو براتون میاره و میگه ریست کنید:
systemctl restart csf
خب میریم سراغ کانفیگش
یک کانفیگ اصلی به اسم TESTING داره که دیفالت روی ۱ هست یعنی فایروال فعال نیست و برای فعال شدنش باید این مقدار رو ۰ کنیم تا از حالت تست خارج بشه و فعال بشه
تنظیم مهم دیگه LF_SSH_EMAIL_ALERT و LF_SU_EMAIL_ALERT هستن که پیشنهاد میکنم فعال کنید
مقدار LF_ALERT_TO رو با ایمیل خودتون پر کنید تا آلرت ها یا کانکشن های مشکوک براتون ایمیل بشه در هر لحظه
مقدار CT_limit رو روی ۲۵۰ بزارید این مقدار مشخص میکنه هر آی پی اجازه زدن چه تعداد درخواست رو داره که اگر مثلا یک نفر آي پی سرور رو پیدا کرد و خواست ddos بزنه یا هرچیزی این مقدار جلوش رو میگیره
و بخش مهم دیگه Allow incoming TCP ports هست که شما باید مشخص کنید چه پورت هایی باز هستن
شما باید تمام پورت های بی استفاده رو حذف کنید و پورت های اصلی مثل ۲۲ و ۲۱ رو حتما تغییر بدید چون اکثر هکر ها از این دو پورت استفاده میکنن
دقت کنید اگه خواستید پورت ۲۲ یا ssh رو تغییر بدید حتما قبلش تو فایروال پورت جدید رو ادد کرده باشید وگرنه کلا دسترسیتون به سرور قطع میشه و هیچکاری نمیتونید بکنید در ادامه آموزش تغییر پورت ssh رو میگم
خب وقتی تغییرات رو دادید فایل رو ذخیره کنید و تمام
حالا به بخش آی پی های مجاز باید بریم تا آی پی های CDN و خودمون رو بدیم تا شامل اون ۲۵۰ کانکشن نشه چون وقتی روی CDN میریم تمام درخواست هایی که به دامنه زده میشه از طریق همین آی پی های CDN به سرور اصلی خودمون میرسه پس مشخصا ۲۵۰ کانکشن خیلی کمه براش
اگر کنترل پنل دارید بخش Firewall Allow Ips برید اگه نه فایل زیر رو باید ویرایش کنید:
nano /etc/csf/csf.allow
اینجا توی هر خط یک آی پی قرار میگیره و باید آی پی های مجاز خودتون و CDN رو بگیرید و بزارید برای مثال آی پی های آروان کلود تو این آدرس هستند که وقتی آپدیت میکنن هم ایمیل میزنن:
https://www.arvancloud.com/fa/ips.txt
خب این آی پی ها رو بزارید تو لیست سفید فایروال و دوباره فایروال رو ریست کنید، آي پی خودتون رو حتما دقیق وارد کنید وگرنه دسترسی خودتون به سرور هم قطع میشه
تمام حالا میریم پورت دیفالت ssh رو تغییر میدیم
تغییر پورت دیفالت ۲۲ ssh روی سرور لینوکسی
برای تغییر پورت دیفالت ssh وارد ssh بشید و دستور زیر رو بزنید:
nano /etc/ssh/sshd_config
مقدار زیر رو پیدا کنید و از کامنت خارج کنید و یک مقدار جدید بزنید پیشنهاد من پورت بالای ۳ یا ۴ هزار هست
Port 22
اگر فایروال دیفالت دارید دستورات زیر رو بزنید حتما تا پورت جدید توی فایروال قرار بگیره (اینجا مقدار ۳۴۵۶ مثلا مقدار پورت جدیدی هست که تو خط قبل دادید)
firewall-cmd --add-port=3456/tcp --permanent
firewall-cmd --reload
اگر فایروال CSF رو دارید هم حتما پورت جدید رو طبق آموزشی که بالاتر دادم توش ادد کنید وگرنه کلا دسترسی به سرور رو از دست میدید
بعد از تغییر پورت یکبار دستور زیر رو بزنید تا سرویس SSH ریست بشه
systemctl restart sshd
اینجا خیلی مهمه تجربه میگه برای اینکه دسترسیتون رو بررسی کنید و مشکلی پیش نیاد حتما تو یه تب دیگه ترمینال باز کنید یا ssh بزنید با پورت جدید به سرور و اگر تونستید وصل بشید دسترسی قبلی که توش بودید رو ببندید. اینکار رو حتما انجام بدید تا مطمئن باشید فایروال و همه چیز داره درست کار میکنه چون بازم تاکید میکنم اگر دسترسی ssh خودتون رو درست تغییر ندید کلا دسترسی سرور رو از دست میدید و هیچکاری نمیتونید بکنید.
حالا میریم برای تغییر پسورد ssh
تغییر پسورد ssh روی سرور لینوکسی
بهتره که هر چند وقت یکبار پسورد SSH رو تغییر بدید و پیشنهاد من اینه بالای ۱۰ کاراکتر عجیب و عدد و کلا پسورد سخت بزارید تا روی حملات بروت فورس پسوردتون لو نره
برای تغییر پسورد ssh دستور زیر رو بزنید:
passwd
پسورد جدید رو بزنید و ذخیره کنید و تمام
اینجا هم حتما توی یک تب جدید یا ترمینال جدید دسترسی داشتن با پسورد جدید رو به ssh تست کنید اگر همه چیز اوکی بود ترمینال قبلی رو ببندید.
امیدوارم آموزش مفیدی بوده باشه و جلوی حمله های هکر ها چه ماینری چه غیره رو بگیره
دیدگاهتان را بنویسید