با توجه به گزارشهای احراز هویت، ممکن است با ورود ناموفق آدرس های 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
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
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
sudo systemctl --now enable endlessh
دستور 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
ssh azarsys@your_server_ip
sudo systemctl --now disable endlessh
از دستورالعمل های بازیابی SSH در اخطار مرحله 1 می توان برای بازیابی تنظیمات سرور اصلی استفاده کرده و با sudo systemctl مجددا سرویس را فعال کرد. هم اکنون با اطمینان خاطر از این که SSH در پورت 22 اجرا نمیشود، به راحتی می توانید sudo systemctl –now enable endlessh را فعال کنید بدون این که راه اندازی مجدد داشته باشید.
آذرسیس ارائه دهنده سرور مجازی لینوکس از 60 لوکیشن سرتاسر دنیا