آذرسیس

How to setup Endless Tarpit on Ubuntu 22.04
5/5 - (1 امتیاز)
در این مقاله، نحوه راه اندازی Endless Tarpit در اوبونتو 22.04 را آموزش خواهیم داد. می توانید سرویس SSH را به گونه‌ای پیکربندی کنید که در پورت دیگری اجرا شود که این امر log های احراز هویت شما را خواناتر می‌کند.
پس از تکمیل این آموزش، می‌توانید از طریق یک پورت غیر استاندارد به سرور خود متصل شوید، در حالی که هر روباتی که سرور شما را اسکن می‌کند، متوجه می‌شود که با ضربه زدن به دری که هرگز باز نمی‌شود، وقت خود را تلف می‌کند.

با توجه به گزارش‌های احراز هویت، ممکن است با ورود ناموفق آدرس های IP که اغلب از یک گره در یک botnet ناشی می شوند مواجه شوید، در این حالت نیاز است کل وب را برای یافتن سرورهای آسیب پذیر اسکن کنید. اکثر کاربران، رمز عبور ایمن یا کلیدهای SSH دارند که از ورود هکرها به سرورشان جلوگیری می کند. با این حال، برخی از سرورها در برابر این اسکن آسیب پذیر خواهند بود. حتی اگر نتوانید جلوی این حملات را بگیرید، می توانید با استفاده از tarpit سرعت آن ها را کاهش دهید.

نحوه راه اندازی Endless Tarpit در اوبونتو 22.04

برای تکمیل این آموزش به موارد زیر نیاز دارید:
  • سرور اوبونتو با کاربری sudo non-root، فایروال و حداقل 1 گیگابایت رم
  • نصب Git روی سرور

مرحله 1 – انتقال SSH به یک پورت غیر استاندارد

در ابتدا با انتقال SSH به یک پورت غیر استاندارد، یک پورت برای Endless SSH آزاد کنید. با توجه به این که بات‌نت‌ها منابع محدودی دارند، معمولاً فقط پورت پیش‌فرض SSH را اسکن می‌کنند (پورت 22). با انتقال SSH به یک پورت غیر استاندارد، می توانید ربات را در Endless Tarpit به تله بیندازید.
با استفاده از دستور زیر، یک نسخه پشتیبان از فایل پیکربندی SSH از سرور خود تهیه کنید:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

برای بازیابی تنظیمات اصلی می توان SSH را به پورت پیش فرض برگرداند.
فایل پیکربندی SSH /etc/ssh/sshd_config را با استفاده از nano یا ویرایشگر متن دلخواه خود باز کنید:

sudo nano /etc/ssh/sshd_config

خط #Port 22 را پیدا کرده و # را حذف کنید، سپس پورت موردنظر را به یک پورت بلا استفاده در سرور خود تغییر دهید:

/etc/ssh/sshd_config
...
Port 2222
...

پورت 2222 مثالی از یک پورت معمولی بلا استفاده است. بدین ترتیب می توان هر پورتی که برای اتصالات SSH تکراری استفاده می شود را انتخاب کنید. فایل را ذخیره کرده و ببندید.
در صورتی که سرور شما از فایروال مانند ufw استفاده می کند، با استفاده از دستور زیر عمل کنید:

sudo ufw allow 2222/tcp

سپس سرویس SSH را مجددا راه اندازی کنید:

sudo systemctl restart sshd

در ادامه، با استفاده از پورت جدید به سرور خود متصل می شوید:

ssh azarsys@your_server_ip -p 2222

هشدار: جلسه SSH فعال خود را نبندید مگر اینکه تأیید کرده باشید که می توانید از SSH در پورت جدید استفاده کنید. در صورتی که نتوانید از طریق پورت جدید وصل شوید، دسترسی به سرور با بستن جلسه در ریسک خواهد بود. اگر نمی توانید با استفاده از ترمینال جداگانه به سرور خود متصل شوید، می توانید تنظیمات SSH اصلی خود را با اجرای دستورات زیر بازیابی کنید:

sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
sudo systemctl restart sshd

در صورت بروز مشکل، بررسی کنید که sshd با موفقیت راه اندازی مجدد شده است یا نه. سپس تنظیمات فایروال خود را بررسی کرده تا مطمئن شوید که پورت 2222 ترافیک tcp را می پذیرد.

پس از تأیید ایجاد اتصال جدید به پورت 2222، ترمینال اصلی خود را با خیال راحت ببندید. هنگام اتصال به سرور، همیشه باید پورت جدید را مشخص کنید، مانند:

ssh azarsys@your_server_ip -p 2222

پس از انتقال موفقیت آمیز SSH به یک پورت غیر استاندارد، نوبت به راه اندازی Endlessh می رسد.

مرحله 2 – نصب Endlessh

Endlessh بسته رسمی ندارد. می توان از Git برای کلون کردن مخزن، بسته build-essential (برای کامپایل پروژه) و بسته libc6-dev استفاده کرد.
بسته های مورد نیاز را با استفاده از دستور زیر نصب کنید:

sudo apt install build-essential libc6-dev
در ادامه با انتخاب کلید y نصب را تأیید کنید و سپس مخزن Endlessh از GitHub را در فهرست اصلی خود کلون کنید:
git clone https://github.com/do-community/endlessh

به پوشه پروژه رفته و از دستور make برای کامپایل Endlessh استفاده کنید:

cd endlessh
make

با استفاده از دستور زیر Endlessh را اجرا کنید:

sudo ./endlessh -v -p 22

برای آزمایش درست کار کردن Endlessh، می‌توانید مطابق دستور زیر در پنجره ترمینال جدید یک اتصال SSH به پورت 22 با پرچم -v ایجاد کنید.

ssh azarsys@your_server_ip -v
ssh azarsys@your_server_ip -p 22 -v

هنگام اتصال جدید SSH به پورت 22 مطابق خروجی زیر، هر 10 ثانیه یک بار یک رشته از کاراکترهای تصادفی در ترمینال اتصال ظاهر می شود تا جلسه بسته شود:

Output
debug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+
debug1: kex_exchange_identification: banner line 1: n<
debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK
debug1: kex_exchange_identification: banner line 3: i+ OZ
debug1: kex_exchange_identification: banner line 4: yn
debug1: kex_exchange_identification: banner line 5: T[V\\[HUg

هنگامی که صحت اتصال به یک جلسه جدید تایید شد، می توان ترمینال جدید را بسته و در نهایت Ctrl+C را بزنید تا Endlessh در جلسه ترمینال اصلی متوقف شود.
در این مرحله Endlessh را از منبع دانلود کرده، سپس آن را پیکربندی کنید تا هنگام خروج از سیستم و راه‌اندازی مجدد سرور، پایدار بماند.

مرحله 3 – پیکربندی Endlessh

در این مرحله، Endlessh به عنوان سرویسی تنظیم می شود که پس از پایان و از طریق راه‌اندازی مجدد سیستم، باقی خواهد ماند. با استفاده از دستور زیر، آن را به پوشه /usr/local/bin منتقل کنید:
sudo mv ./endlessh /usr/local/bin/

در ادامه ممکن است با گزینه “درخواست رمز” مواجه شوید، در این صورت رمز را وارد کنید.
فایل سرویس را در پوشه /etc/systemd/system کپی کنید:

sudo cp util/endlessh.service /etc/systemd/system/

فایل سرویس با کمی تغییر در Endlessh روی پورت های زیر 1024 اجرا می شود. آن را در nano یا ویرایشگر متن دلخواه خود باز کنید:

sudo nano /etc/systemd/system/endlessh.service

سپس بخش مربوط به اجرای Endlessh در پورت های زیر 1024 را پیدا کنید.

در این مرحله، فایل را با حذف # در ابتدای خط با AmbientCapabilities=CAP_NET_BIND_SERVICE و اضافه کردن # به ابتدای خط PrivateUsers=true به روز رسانی کنید:

/etc/systemd/system/endlessh.service
...
## If you want Endlessh to bind on ports < 1024
## 1) run: 
## setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) uncomment following line
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) comment following line
#PrivateUsers=true
...

پس از ذخیره فایل، از آن خارج شوید.
در مرحله بعد، به Endlessh اجازه می‌دهید تا روی پورت‌های کمتر از 1024 اجرا شود (پورت‌های دارای امتیاز دامنه اینترنتی) این قابلیت را برای Endlessh با دستور setcap تنظیم کنید:

sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

سپس یک فایل پیکربندی برای Endlessh تعریف کنید تا بگویید از کدام پورت استفاده می کند. یک فایل پیکربندی به نام /etc/endlessh/config ایجاد کنید:

sudo mkdir /etc/endlessh
sudo nano /etc/endlessh/config

در فایل پیکربندی، پورت مورد استفاده را با نام پورت 22 تعریف کنید:

/etc/endlessh/config
Port 22
فایل را پس از ذخیره ببندید. اکنون می توانید سرویس Endlessh را مجددا راه اندازی کنید:
sudo systemctl --now enable endlessh
–now enable باعث می شود که پس از راه اندازی مجدد سرور، سرویس ادامه پیدا کند.
دستور systemctl status نشان می دهد که آیا سرویس با موفقیت شروع به اجرا شده است:
sudo systemctl status endlessh
در این صورت، خروجی زیر را مشاهده خواهید کرد:
Output
● endlessh.service - Endlessh SSH Tarpit
Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago
Docs: man:endlessh(1)
Main PID: 34007 (endlessh)
Tasks: 1 (limit: 1081)
Memory: 380.0K
CGroup: /system.slice/endlessh.service
└─34007 /usr/local/bin/endlessh
در صورت اجرا، می توانید به پورت 22 متصل شوید:
ssh azarsys@your_server_ip
tarpit در حال اجرا است، بنابراین ترمینال جدید قابلیت اتصال نخواهد داشت. به صورت دستی و با استفاده از کلیدهای ترکیبی Ctrl+C اتصال را متوقف کنید، در غیر این صورت تا ابد سرویس اجرا خواهد شد. همچنین با استفاده از دستور زیر می توانید سرویس را متوقف کنید:
sudo systemctl --now disable endlessh

از دستورالعمل های بازیابی SSH در اخطار مرحله 1 می توان برای بازیابی تنظیمات سرور اصلی استفاده کرده و با sudo systemctl مجددا سرویس را فعال کرد. هم اکنون با اطمینان خاطر از این که SSH در پورت 22 اجرا نمی‌شود، به راحتی می توانید sudo systemctl –now enable endlessh را فعال کنید بدون این که راه اندازی مجدد داشته باشید.

آذرسیس ارائه دهنده سرور مجازی لینوکس از 60 لوکیشن سرتاسر دنیا

نتیجه گیری

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *