العمل عن بعد في المكتب. RDP ، Port Knocking ، Mikrotik: بسيط وآمن

نظرًا لوباء فيروس covid-19 والحجر الصحي العام في العديد من البلدان ، فإن الطريقة الوحيدة للعديد من الشركات لمواصلة العمل هي الوصول عن بُعد إلى أماكن العمل عبر الإنترنت. هناك العديد من الطرق الآمنة نسبيًا للعمل عن بُعد - ولكن نظرًا لحجم المشكلة ، هناك حاجة إلى طريقة بسيطة لأي مستخدم للاتصال عن بُعد بالمكتب ودون الحاجة إلى إعدادات إضافية وتفسيرات واستشارات مملة وتعليمات طويلة. هذه الطريقة محبوبة من قبل العديد من المسؤولين RDP (بروتوكول سطح المكتب البعيد). الاتصال مباشرة بمكان العمل عبر RDP يحل مشكلتنا بشكل مثالي ، باستثناء ذبابة واحدة كبيرة في المرهم - إبقاء منفذ RDP مفتوحًا للإنترنت أمر غير آمن للغاية. لذلك ، أقترح أدناه طريقة حماية بسيطة ولكنها موثوقة.العمل عن بعد في المكتب. RDP ، Port Knocking ، Mikrotik: بسيط وآمن

نظرًا لأنني غالبًا ما أصادف مؤسسات صغيرة حيث يتم استخدام أجهزة Mikrotik للوصول إلى الإنترنت ، فسيتم توضيح كيفية تنفيذ ذلك على 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) ؛

الأمر التالي:

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

ينقل قواعدنا إلى أعلى سلسلة معالجة جدار الحماية ، نظرًا لأنه على الأرجح سيكون لدينا بالفعل قواعد رفض مختلفة تم تكوينها والتي ستمنع القواعد التي أنشأناها حديثًا من العمل. تبدأ القاعدة الأولى في Mikrotik من الصفر ، ولكن على جهازي كان الصفر مشغولاً بقاعدة مضمنة وكان من المستحيل نقلها - لقد نقلتها إلى 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 الداخلي الخاص بنا. نظرًا لأن لدينا مستخدمي Windows بشكل أساسي ، فإننا ننشئ ملف 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 DDNS بعد تمكينه في Mikrotik: انتقل إلى IP-> القائمة السحابية - حدد خانة الاختيار DDNS Enabled ، انقر فوق تطبيق وانسخ اسم نظام أسماء النطاقات الخاص بجهاز التوجيه الخاص بنا. ولكن هذا ضروري فقط عندما يكون عنوان IP الخارجي لجهاز التوجيه ديناميكيًا أو عندما يتم استخدام تكوين مع العديد من موفري الإنترنت.

المنفذ الموجود في الرابط الأول: 19000 يتوافق مع المنفذ الأول الذي تحتاج إلى النقر عليه ، في الثاني ، على التوالي ، إلى المنفذ الثاني. يوجد بين الروابط تعليمات قصيرة توضح ما يجب فعله إذا انقطع اتصالنا فجأة بسبب مشاكل الشبكة القصيرة - نقوم بتحديث الصفحة ، وإعادة فتح منفذ RDP لنا ​​لمدة دقيقة واحدة واستعادة جلستنا. أيضًا ، يشكل النص الموجود بين علامات img تأخيرًا صغيرًا للمتصفح ، مما يقلل من احتمالية تسليم الحزمة الأولى إلى المنفذ الثاني (1) - حتى الآن لم تحدث مثل هذه الحالات في أسبوعين من الاستخدام (16000) الناس).

يأتي بعد ذلك ملف 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 واكتشاف الشبكة تلقائيًا: i: 0 - نظرًا لأن غالبية الإنترنت تزيد عن 10 ميجابت في الثانية ، قم بتشغيل نوع الاتصال 6 (شبكة محلية 10 ميجابت في الثانية وما فوق) وقم بإيقاف تشغيل اكتشاف الشبكة ، لأنه إذا كان افتراضيًا (تلقائي) ، ثم حتى زمن انتقال صغير نادر للشبكة يضبط جلستنا تلقائيًا على سرعة بطيئة لفترة طويلة ، مما قد يؤدي إلى تأخيرات ملحوظة في العمل ، خاصة في برامج الرسومات.

تعطيل خلفية الشاشة: i: 1 - تعطيل صورة سطح المكتب
اسم المستخدم: 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 في Windows: لقد قطعت MS شوطًا طويلاً في تحسين البروتوكول وأجزاء الخادم والعميل الخاصة به ، ونفذت العديد من الميزات المفيدة - مثل العمل مع الأجهزة ثلاثية الأبعاد ، وتحسين دقة الشاشة لشاشتك ، والشاشات المتعددة ، وما إلى ذلك وهلم جرا. ولكن بالطبع ، يتم تنفيذ كل شيء في وضع التوافق مع الإصدارات السابقة ، وإذا كان العميل هو Windows 3 ، وكان الكمبيوتر البعيد هو Windows 7 ، فسيعمل RDP باستخدام الإصدار 10 من البروتوكول. لكن الميزة هي أنه يمكنك تحديث إصدارات RDP إلى إصدارات أحدث - على سبيل المثال ، يمكنك ترقية إصدار البروتوكول من 7.0 (Windows 7.0) إلى 7. لذلك ، من أجل راحة العملاء ، من الضروري زيادة إصدارات جزء الخادم قدر الإمكان ، وكذلك إسقاط الروابط للترقية إلى إصدارات جديدة من عملاء بروتوكول RDP.

نتيجة لذلك ، لدينا تقنية بسيطة وآمنة نسبيًا للاتصال عن بُعد بجهاز كمبيوتر يعمل أو خادم طرفي. ولكن من أجل اتصال أكثر أمانًا ، يمكن جعل طريقة Port Knocking الخاصة بنا أكثر صعوبة للهجوم بعدة أوامر من حيث الحجم ، عن طريق إضافة منافذ للتحقق - يمكنك إضافة 3,4,5,6،XNUMX،XNUMX،XNUMX ... منفذ وفقًا لنفس المنطق ، وفي هذه الحالة سيكون الاقتحام المباشر لشبكتك شبه مستحيل.

ملفات فارغة لإنشاء اتصال عن بعد بـ RDP.

المصدر: www.habr.com

إضافة تعليق