ما با محدودکردن حق استفاده از اینترنت مخالفیم.
اطلاعات بیشتر

چگونه سرورهای لینوکسی را امن کنیم

سین جیم
چگونه سرورهای لینوکسی را امن کنیم
سین جیم 1400/04/12

سین جیم 5

امروز می‌خوایم درباره fail2ban صحبت کنیم. fail2ban یه سیستم امنیتیه که کمک می‌کنه اتکر نتونه به سرور رو هک کنه. امروز در دنیای اینترنت و شبکه افراد زیادی هستند که پکت‌های زیادی رو به سمت سرورها ارسال می‌کنند؛ پکت‌هایی که به قصد هک کردن سرور ارسال می‌شن. البته نه اینکه یه نفر پای سرور نشسته باشه و کلید اینتر رو بزنه و بخواد سرور من رو قطع کنه.نه! ربات‌های بسیار زیادی توسعه داده ‌شده‌‌ن که پکت‌هایی با حجم بسیار بالا رو به صورت ddos به سرورهای لینکوسی و ویندوزی ارسال می‌کنند. یعنی این پکت‌ها به سمت یه سرور لینوکسی ارسال می‌شه با ده تا کاراکتر. انواع و اقسام پسوردها رو پشت سر هم امتحان می‌کنه تا رمز بشکنه و بتونه وارد سرور بشه. fail2ban کمک می‌کنه که اتکر نتونه این کار رو انجام بده. در واقع ابزارپیشرفته‌ای در حیطه امنیت لینوکس حساب می‌شه.

اول وارد پنل ابر زس می‌شیم و به سرور مورد نظرمون لاگین می‌کنیم. مثلا سیستم من Obuntu1804 هست و برای نصب نیازه که این عبارت رو تایپ کنیم: Apt install fail2ban

اگر هم سرور ما Redhat base هست مثل Distribution centos ، باید بزنیم: Yum install fail2ban.

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

برای جلوگیری از این فایل باید وارد کانفیگ‌فایل مربوطه بشیم. کانفیگ‌فایلی که مربوط به Fail2ban است روی etcfail2ban هست. وقتی CD کنه توی etcfail2ban یک LS می‌گیریم ببینیم داخلش چی داریم. دایرکتوری‌های مختلفی وجود داره ولی مهم‌ترین فایل ما jail.conf هست که ما این فایل اصلی رو نباید کانفیگ کنیم و طبق استانداردهای لینوکس باید یک کپی ازش داشته باشیم. یه کپی ازش می‌گیریم و این کانفیگ‌فایل اصلی fail2ban هست که می‌تونه به وب‌سرور یا سرورهای Voip وصل بشه و هرکسی قصد داره یه سرویسی رو هک کنه می‌تونیم کاری بکنیم که fail2ban به اون سرور لینوکسی ما وصل بشه و از طریق سرویس لینوکسی ما یک سری لاگ‌فایل‌ها رو می‌خونه و چک می‌کنه و هوشمندانه تشخیص می‌ده داره اتک می‌شه و IP مبدا رو پیدا می‌کنه و قلع و قمع می‌کنه و نمی‌ذاره با اون IP اتک اتفاق بی‌افته. یک مثال بزنیم:

 من Section یا قسمت SSH رو سرچ می‌کنم روی فایل. میام زیر Section SSH که سه خط داره. می‌گه من می‌خوام پورت SSH بررسی کنم. می‌خوام این Section رو enabled کنم. می‌نویسم:

Enabled=true

می‌گم این Section کار بکنه و اگر کسی خواست ssh رو هک بکنه نتونه. یه مولفه داره به اسم Findtime. یک Findtime براش ست می‌کنم. به این صورت می‌نویسم:

Findtime=4w
بعدا توضیح می‌دم به چه دلیل هست

یک Bantime هم ست می‌کنیم:

Bantime=1d

یک مورد دیگه رو هم ست می‌کنم

Maxretry=3

اگر کسی در بازه 4 هفته‌ای بیاد تلاش بکنه به سمت سرویس ssh و سه بار رمز رو اشتباه بزنه IP source به مدت یک روز بلاک می‌شه. این خیلی خوبه و باعث می‌شه که امکان شکستن پسورد سرور ما کاهش پیدا کنه.

طبق معمول میایم این کانفیگ‌ فایل رو سیو می‌کنیم.  یک بار با استفاده از این کد سرویس fail2ban رو ری‌استارت می‌کنیم

Systemctl restart fail2ban

Fail2ban ما ری‌استارت شد و اکتیو و رانینگ است. حالا اتکر رو ران می‌کنیم و تلاش می‌کنه پسوردهای مختلف رو وارد کنه. دفعه چهارم فیلتر می‌شه.

 

...
...