آموزش ایمن سازی SSH با استفاده از Port Knocking (در لینوکس)

ممکن است در ابتدای مطالعه مقاله این سوال برای شما پیش بیاید که SSH چیست و چه کاربردهایی دارد. بنابراین، با توضیح مختصری در مورد مفهوم SSH و پروتکل شروع می کنیم. SSH در واقع یک پروتکل امن برای اتصال از راه دور به کامپیوتر یا سرور است. پس چرا به بی خطر بودن آن اشاره می کنیم؟

Port Knocking در واقع یک لایه دفاعی با مکانیزم احراز هویت در لینوکس است که کاربران مجاز را شناسایی می کند و با استفاده از پورت های بسته و ترتیب صحیح Port Knocking به آنها اجازه دسترسی به سرور را می دهد. در این روش تمام پورت های سرور (حتی آنهایی که در حال استفاده هستند) بسته می شوند و در صورت ارسال درخواست اتصال با ترتیب صحیح Port Knocking، فایروال قوانین خود را به صورت پویا و لحظه ای تغییر می دهد و با باز کردن پورت خاص می دهد. در این مقاله روش ایجاد امنیت SSH از طریق Port Knocking در اوبونتو و دبیان توضیح داده شده است.

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

با نصب SSH جای خالی پروتکل امن را پر می کنیم. پس از خرید سرور مجازی لینوکس، بهترین پروتکل برای اتصال به آن SSH است. حال باید چه کار کنیم تا SSH ایمن تر شود؟ راه های مختلفی برای ایجاد امنیت SSH وجود دارد که در این مقاله به توضیح روش SSH Port Knocking در اوبونتو و دبیان می پردازیم.

نحوه ی ایمن کردن SSH از طریق Port Knocking؟

حال پس از نصب پروتکل SSH باید امنیت بیشتری در هنگام استفاده از آن ایجاد کنیم. یک راه هوشمند ایجاد امنیت SSH از طریق Port Knocking در اوبونتو است.

پورت پیش فرضی که اتصال پروتکل SSH روی آن تنظیم شده است پورت ۲۲ است. در روش Port Knocking معمولاً همه پورت ها در دسترس نیستند و روشی برای باز کردن یک پورت خاص برای اتصال در نظر گرفته می شود. فرض کنید سه دکمه داریم که با فشردن آنها به ترتیب صحیح درگاه ورودی باز می شود و اگر ترتیب فشار دادن حتی یکی از آنها درست نباشد درگاه بسته می ماند.

به طور کلی در روش Port Knocking سیگنالی تعریف می کنیم که ترتیب صحیح اتصال به پورت ها (یا فشردن صحیح دکمه ها) باشد تا زمانی که فایروال این سیگنال را دریافت کرد، پورت مورد نظر را برای اتصال در دسترس قرار دهد. اساساً تمام پورت های اتصال به سرور دور از دسترس هستند و دیده نمی شوند و تلاش برای ورود ناموفق خواهد بود. اما ما نوعی تلاش برای ورود به فایروال را به عنوان سیگنالی برای باز کردن یک پورت تعریف می کنیم.

و بدین ترتیب IP مورد نظر از طریق SSH به سرور دسترسی خواهد داشت. در این مقاله که بخشی از سری آموزش های نحوه اتصال به سرور مجازی لینوکس است، به شما آموزش می دهیم که خودتان از طریق Port Knocking، پروسه ایمن سازی SSH در اوبونتو را طی کرده و سیگنال Port Knocking برای پروتکل SSH ایجاد کنید.

مزایای ایمن سازی SSH در اوبونتو و دبیان با روش Port Knocking چیست؟

Port Knocking یک راه بسیار ساده، ارزان و در عین حال هوشمند برای ایمن سازی SSH است. مهمترین مزیت SSH Port Knocking این است که همه پورت ها از اسکنر پورت ایمن هستند و به عنوان “غیرقابل دسترسی” شناخته می شوند. مزیت دوم کاهش قابل توجه مصرف پهنای باند و اشغال توسط حملاتی مانند Brute-Force است.

وظایف باز کردن درگاه برای ورود و بستن آن پس از خروج کاربر به صورت خودکار توسط برنامه های daemon مانند knockd انجام می شود. همچنین این روش سرور را از دید مهاجمان پنهان می کند.

مراحل ایجاد امنیت SSH از طریق Port Knocking در اوبونتو و دبیان

در ادامه مقاله، گام به گام فرآیند تنظیم پورت knocking برای امنیت SSH در لینوکس اوبونتو و دبیان را شرح خواهیم داد. توجه داشته باشید که برای مخفی کردن پورت های ورودی سرور و استفاده از Port Knocking باید از طریق کاربری که دسترسی روت دارد اقدام کنید.

مرحله ۱: Knockd را روی سرور لینوکس نصب و پیکربندی کنید

هنگامی که به سرور لینوکس خود وارد شدید، از خط فرمان زیر در محیط ترمینال برای نصب knockd استفاده کنید:

$ sudo apt install knockd

پس از نصب فایل knockd.conf را با نرم افزار Text Editor مانند nano editor از طریق دستور زیر باز کنید.

sudo nano /etc/knockd.conf

حال باید ۳ پارامتر را در این فایل تغییر دهیم.

۱٫ بخش [openSSH] را در این فایل پیدا کنید. از آنجایی که ترتیب Knock بر روی پورت های ۷۰۰۰، ۸۰۰۰، ۹۰۰۰ تنظیم شده و برای همه شناخته شده و قابل سواستفاده است، آن را روی پورت های مورد نظر خود تنظیم کنید. ترتیبی که انتخاب می کنید، ترتیبی است که ما برای فایروال برای دسترسی کاربر به سرور تعریف می کنیم. همچنین می توانید پورت های بیشتری را مشخص کنید. توجه داشته باشید که ما نیازی به باز کردن این پورت ها نداریم.

۲٫ در دستور iptables پارامتر A- را به I- تغییر دهید. در حالی که همه IP های دیگر نمی توانند به سرور دسترسی داشته باشند، پس از اجرای این iptables توسط knockd، هر IP که عمل Knock را به ترتیب صحیح انجام دهد می تواند به سرور دسترسی پیدا کند.

۳٫ برای جلوگیری از باز شدن پورت پس از خروج کاربر، باید این مورد را برای فایروال تعریف کنیم. در بخش [closeSSH]، ترتیب پیش‌فرض Knock را روی مقدار دلخواه خود تنظیم کنید (مانند ۱۰۰۰۳، ۱۰۰۰۲، ۱۰۰۰۱). دنباله جدید دنباله ای خواهد بود که پس از خروج کاربر برای بستن پورت استفاده می شود.

پس از انجام موفقیت آمیز سه اقدام فوق، تغییرات را ذخیره کرده و از اپلیکیشن خارج شوید. برای مشاهده نام اصلی رابط شبکه در سرور، دستور زیر را در ترمینال اجرا کنید:

ip addr

همچنین باید فایل پیکربندی دیگری را ویرایش کنیم. دستور زیر را در ترمینال اجرا کنید:

$ sudo nano /etc/default/knockd

به دنبال خط START_KNOCKD=0 بگردید. برای فعال کردن شروع خودکار هنگام بوت کردن سیستم، پارامتر را از ۰ به ۱ تغییر دهید (START_KNOCKD=1).
به طور پیش‌فرض، knockd ترتیب knocking را از طریق رابط eth0 بررسی می‌کند، که ممکن است برای سرور شما اعمال نشود. برای تغییر این رابط، خط زیر را پیدا کنید:

#KNOCKD_OPTS="-i eth1"

حالا برای تغییر رابط eth1 به رابط پیش‌فرض سرور خود فقط لازم است که # را پاک کنید.

KNOCKD_OPTS="-i ens18"

تغییرات را ذخیره کنید و فایل را ببندید.
حالا نوبت اجرا و فعال کردن knockd daemon است. دستورات زیر را اجرا کنید:

$ sudo systemctl start knockd
$ sudo systemctl enable knockd

برای چک کردن اینکه knockd daemon فعال شده‌ است، کامند زیر را اجرا کنید:

$ sudo systemctl status knockd

گام دوم: بستن پورت ۲۲ در SSH

در گام دوم فرآیند ایمن سازی SSH از طریق Port Knocking در اوبونتو، حالا که knockd را فعال کرده‌ایم، وظیفه باز و بسته کردن پورت‌ها و دادن دسترسی به سرور به عهده knockd است. برای امنیت بیشتر بایستی پورت ۲۲ SSH را در فایروال ببندیم. برای شروع، قوانین و وضعیت فایروال UFW را با کد زیر چک کنید:

$ sudo ufw status numbered

اگر مشاهده کردید که پورت SSH 22 در خطوط ۳ و ۹ باز است (برای مثال)، از خطوط زیر برای بستن آنها استفاده کنید:

sudo ufw delete 9

sudo ufw delete 3

توجه داشته باشید که ابتدا باید خط را با عدد بزرگتر ببندید.

پس از بستن پورت ۲۲، هر گونه تلاش برای اتصال از راه دور به سرور SSH با خطای “زمان اتصال” مواجه می شود و سرویس SSH به درخواست شما پاسخ نمی دهد.

مرحله ۳: از طریق Knock Client به سرور SSH متصل شوید

برای تکمیل مراحل تنظیم پورت knocking برای محافظت از ssh در اوبونتو و دبیان، باید نحوه پیکربندی کلاینت Knock را بیاموزید. برای این منظور Port Knocking را به ترتیبی که تعیین کرده اید انجام دهید و وارد سرور شوید. در محیط دبیان یا اوبونتو، شبح knockd را با اجرای دستور زیر نصب کنید:

$ sudo apt install knockd

بعد از اتمام نصب از طریق اجرای دستور زیر ترتیب knock را ارسال کنید.

$ knock -v server_ip knock_sequence

اکنون برای فعال کردن فایروال سرور در پورت TCP 22، دستور ضربه صحیح را از رایانه مشتری ارسال کنید.

knock -v 10.0.0.104 10001 10002 10003

از طریق knocking با ترتیب صحیح می‌توانید از طریق SSH به سرور خود وارد شوید. همچنین با انجام knocking با همان IP، با ترتیبی که برای بستن پورت تعریف کرده‌اید می‌توانید پورت را ببندید.

knock -v 10.0.0.104 10003 10002 10001

از آنجایی که knockd فقط به درخواست های knock ارسال شده به رابط اصلی شبکه پاسخ می دهد، اگر سرور چندین IP داشته باشد و شما درخواست را به یک IP ثانویه ارسال کنید، نمی توانید وارد شوید.

اکنون فرآیند ایجاد امنیت SSH از طریق Port Knocking در اوبونتو را با موفقیت به پایان رسانده اید. از این پس، knockd به طور خودکار باز و بسته شدن پورت را مدیریت می کند و به درخواست های ضربه زدن پورت پاسخ می دهد.

جمع بندی

در این مقاله نحوه ایمن سازی SSH از طریق Port Knocking در اوبونتو و دبیان را یاد گرفتید. پیشنهاد می کنیم این روش امنیتی را تنها استراتژی دفاعی سرور خود در نظر نگیرید و در کنار سایر روش های امنیتی از آن استفاده کنید.

ما به طور خلاصه یاد گرفتیم که SSH چیست و از Port Knocking در کجا استفاده می شود. همچنین نحوه عملکرد Port Knocking را یاد گرفتیم و دیدیم که با رعایت ترتیب صحیح در ارسال درخواست اتصال به پورت ها، در واقع سیگنالی را به فایروال ارسال می کنیم تا یک پورت مخصوص باز شود تا بتوانیم به سرور دسترسی داشته باشیم

آخرین نوشته ها

تماس با ما

  •  کرج، شاهین ویلا، بلوار امام خمینی ، خیابان نهم شرقی ، برج شاهین ،طبقه اول واحد2
  •  91014618
  •   info@shopingserver.net

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

reza emam

reza emam

مطالب مرتبط