کار از راه دور در دفتر. RDP، Port Knocking، Mikrotik: ساده و امن

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

از آنجایی که من اغلب با سازمان‌های کوچکی برخورد می‌کنم که از دستگاه‌های میکروتیک به عنوان دسترسی به اینترنت استفاده می‌شود، در زیر نحوه پیاده‌سازی این کار در میکروتیک نشان داده می‌شود، اما روش حفاظت از Port Knocking به راحتی در سایر دستگاه‌های کلاس بالاتر با تنظیمات روتر ورودی و فایروال مشابه پیاده‌سازی می‌شود. .

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

حالا به تجارت. من شرح مفصلی از تنظیمات فایروال در Mikrotik انجام نمی دهم - اینترنت پر از منابع با کیفیت بالا برای این کار است. در حالت ایده آل، فایروال تمام بسته های ورودی را مسدود می کند، اما

/ip firewall filter
add action=accept chain=input comment="established and related accept" connection-state=established,related

به ترافیک ورودی از اتصالات ایجاد شده مرتبط اجازه می دهد.
اکنون Port Knocking را در Mikrotik راه اندازی می کنیم:

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
move [/ip firewall filter find comment=RemoteRules] 1
/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

اکنون با جزئیات بیشتر:

دو قانون اول

/ip firewall filter
add action=drop chain=input dst-port=19000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules
add action=drop chain=input dst-port=16000 protocol=tcp src-address-list="Black_scanners" comment=RemoteRules

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

قانون سوم:

add action=add-src-to-address-list address-list="remote_port_1" address-list-timeout=1m chain=input dst-port=19000 protocol=tcp comment=RemoteRules

ip را به لیست هاست هایی اضافه می کند که اولین ضربه درست را در پورت صحیح ایجاد کرده اند (19000).
چهار قانون بعدی عبارتند از:

add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=19001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=18999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=16001 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules
add action=add-src-to-address-list address-list="Black_scanners" address-list-timeout=60m chain=input dst-port=15999 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

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

قانون بعدی:

add action=add-src-to-address-list address-list="allow_remote_users" address-list-timeout=1m chain=input dst-port=16000 protocol=tcp src-address-list="remote_port_1" comment=RemoteRules

ip را به مدت 1 دقیقه در لیست مجاز قرار می دهد (برای برقراری ارتباط کافی است) ، زیرا دومین ضربه صحیح روی پورت مورد نظر انجام شد (16000).

دستور بعدی:

move [/ip firewall filter find comment=RemoteRules] 1

قوانین ما را در زنجیره پردازش فایروال بالا می برد، زیرا به احتمال زیاد ما قبلاً قوانین انکار متفاوتی را پیکربندی کرده ایم که از کارکرد قوانین جدید ایجاد شده ما جلوگیری می کند. اولین قانون در میکروتیک از صفر شروع می شود، اما در دستگاه من صفر توسط یک قانون داخلی اشغال شده بود و انتقال آن غیرممکن بود - من آن را به 1 منتقل کردم. بنابراین، ما به تنظیمات خود نگاه می کنیم - جایی که می توانید آن را منتقل کنید. و عدد مورد نظر را مشخص کنید.

تنظیمات بعدی:

/ip firewall nat
add action=dst-nat chain=dstnat comment="remote_rdp_to_33" src-address-list="allow_remote_users" dst-port=33890 in-interface-list=WAN protocol=tcp to-addresses=192.168.1.33 to-ports=3389

پورت 33890 را که به طور دلخواه انتخاب شده است به پورت RDP معمولی 3389 و IP رایانه یا سرور پایانه مورد نیاز ما ارسال می کند. ما چنین قوانینی را برای همه منابع داخلی لازم ایجاد می کنیم، ترجیحاً پورت های خارجی غیر استاندارد (و متفاوت) را تنظیم می کنیم. طبیعتا ip منابع داخلی باید یا ثابت باشد یا روی سرور DHCP ثابت باشد.

اکنون Mikrotik ما پیکربندی شده است و ما به یک روش ساده نیاز داریم تا کاربر به RDP داخلی ما متصل شود. از آنجایی که ما عمدتاً کاربران ویندوز داریم، یک فایل bat ساده ایجاد می کنیم و نام آن را StartRDP.bat می گذاریم:

1.htm
1.rdp

به ترتیب 1.htm حاوی کد زیر است:

<img src="http://my_router.sn.mynetname.net:19000/1.jpg">
нажмите обновить страницу для повторного захода по RDP
<img src="http://my_router.sn.mynetname.net:16000/2.jpg">

این شامل دو پیوند به تصاویر خیالی است که در my_router.sn.mynetname.net قرار دارند - ما این آدرس را پس از فعال کردن آن در Mikrotik خود از سیستم Mikrotik DDNS دریافت می کنیم: به منوی IP-> Cloud بروید - کادر تأیید DDNS Enabled را علامت بزنید. روی Apply کلیک کنید و نام dns روتر ما را کپی کنید. اما این تنها زمانی ضروری است که ip خارجی روتر پویا باشد یا از پیکربندی با چندین ارائه دهنده اینترنت استفاده شود.

پورت در لینک اول: 19000 مربوط به اولین درگاهی است که باید بر روی آن ضربه بزنید، به ترتیب در دومی به دومی. بین پیوندها دستورالعمل کوتاهی وجود دارد که نشان می دهد اگر ناگهان اتصال ما به دلیل مشکلات کوتاه شبکه قطع شد، چه کاری انجام دهیم - صفحه را رفرش می کنیم، پورت RDP برای 1 دقیقه دوباره برای ما باز می شود و جلسه ما بازیابی می شود. همچنین متن بین تگ‌های img یک تاخیر میکرو برای مرورگر ایجاد می‌کند که احتمال تحویل بسته اول به پورت دوم (16000) را کاهش می‌دهد - تا کنون در دو هفته استفاده چنین موردی وجود نداشته است (30). مردم).

بعد فایل 1.rdp می آید، که می توانیم یکی را برای همه یا به طور جداگانه برای هر کاربر پیکربندی کنیم (من این کار را انجام دادم - راحت تر است که 15 دقیقه اضافی صرف کنید تا چند ساعت برای مشورت با کسانی که نمی توانند آن را بفهمند)

screen mode id:i:2
use multimon:i:1
.....
connection type:i:6
networkautodetect:i:0
.....
disable wallpaper:i:1
.....
full address:s:my_router.sn.mynetname.net:33890
.....
username:s:myuserlogin
domain:s:mydomain

یکی از تنظیمات جالب اینجا استفاده از multimon است: i: 1 - این شامل استفاده از چندین مانیتور می شود - برخی به این نیاز دارند، اما خودشان فکر نمی کنند آن را روشن کنند.

نوع اتصال: i: 6 و networkautodetect: i: 0 - چون اکثر اینترنت بالای 10 مگابیت در ثانیه است، سپس نوع اتصال 6 (شبکه محلی 10 مگابیت بر ثانیه و بالاتر) را روشن کرده و networkautodetect را خاموش کنید، زیرا اگر به طور پیش فرض (خودکار) ، سپس حتی یک تاخیر شبکه کوچک نادر به طور خودکار جلسه ما را برای مدت طولانی روی سرعت پایین تنظیم می کند که می تواند تاخیرهای قابل توجهی را در کار به خصوص در برنامه های گرافیکی ایجاد کند.

غیرفعال کردن تصویر زمینه: i: 1 - غیرفعال کردن تصویر دسکتاپ
username:s:myuserlogin - ما ورود کاربر را مشخص می کنیم، زیرا بخش قابل توجهی از کاربران ما ورود خود را نمی دانند.
domain:s:mydomain - نام دامنه یا کامپیوتر را مشخص کنید

اما اگر بخواهیم کار خود را برای ایجاد یک رویه اتصال ساده کنیم، می توانیم از PowerShell - StartRDP.ps1 نیز استفاده کنیم.

Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 19000
Test-NetConnection -ComputerName my_router.sn.mynetname.net -Port 16000
mstsc /v:my_router.sn.mynetname.net:33890

همچنین کمی در مورد مشتری RDP در ویندوز: MS راه طولانی را در بهینه سازی پروتکل و سرور و بخش های سرویس گیرنده آن پیموده است، بسیاری از ویژگی های مفید را پیاده سازی کرده است - مانند کار با سخت افزار سه بعدی، بهینه سازی وضوح صفحه نمایش برای مانیتور، چند صفحه، و غیره اما مطمئناً همه چیز در حالت سازگاری عقب اجرا می شود و اگر کلاینت ویندوز 3 باشد و رایانه از راه دور ویندوز 7 باشد، RDP با استفاده از پروتکل نسخه 10 کار می کند. اما مزیت این است که می توانید نسخه های RDP را به نسخه های جدیدتر به روز کنید - برای مثال، می توانید نسخه پروتکل را از 7.0 (ویندوز 7.0) به 7 ارتقا دهید. بنابراین برای راحتی کلاینت ها لازم است نسخه های قسمت سرور را تا حد امکان افزایش داده و همچنین لینک های ارتقا به نسخه های جدید کلاینت های پروتکل RDP را رها کنید.

در نتیجه، ما یک فناوری ساده و نسبتا امن برای اتصال از راه دور به یک رایانه شخصی یا سرور پایانه داریم. اما برای اتصال ایمن‌تر، روش Port Knocking ما می‌تواند با اضافه کردن پورت‌هایی برای بررسی، حمله با چندین مرتبه بزرگی را دشوارتر کند - می‌توانید طبق همان منطق 3,4,5,6،XNUMX،XNUMX،XNUMX ... یک پورت اضافه کنید. و در این صورت نفوذ مستقیم به شبکه شما تقریبا غیرممکن خواهد بود.

فایل های خالی برای ایجاد اتصال از راه دور به RDP.

منبع: www.habr.com

اضافه کردن نظر