עבודה מרחוק במשרד. RDP, Port Knocking, Mikrotik: פשוט ומאובטח

בשל מגיפת וירוס קוביד-19 וההסגר הכללי במדינות רבות, הדרך היחידה של חברות רבות להמשיך לעבוד היא גישה מרחוק למקומות עבודה דרך האינטרנט. יש הרבה שיטות בטוחות יחסית לעבודה מרחוק – אך בהתחשב בהיקף הבעיה, יש צורך בשיטה פשוטה עבור כל משתמש להתחבר מרחוק למשרד וללא צורך בהגדרות נוספות, הסברים, התייעצויות מייגעות והנחיות ארוכות. שיטה זו אהובה על מנהלים רבים RDP (Remote Desktop Protocol). חיבור ישיר למקום העבודה באמצעות RDP פותר את הבעיה שלנו באופן אידיאלי, למעט זבוב אחד גדול - שמירה על יציאת RDP פתוחה לאינטרנט היא מאוד לא בטוחה. לכן, להלן אני מציע שיטת הגנה פשוטה אך אמינה.עבודה מרחוק במשרד. RDP, Port Knocking, Mikrotik: פשוט ומאובטח

מכיוון שלעתים קרובות אני נתקל בארגונים קטנים שבהם מכשירי Mikrotik משמשים כגישה לאינטרנט, להלן יוצג כיצד ליישם זאת על Mikrotik, אך שיטת הגנת Port Knocking מיושמת בקלות במכשירים ברמה גבוהה יותר עם הגדרות נתב קלט וחומת אש דומות .

בקצרה על Port Knocking. ההגנה החיצונית האידיאלית של רשת המחוברת לאינטרנט היא כאשר כל המשאבים והיציאות סגורים מבחוץ על ידי חומת אש. ולמרות שנתב עם חומת אש מוגדרת כזו לא מגיב בשום צורה לחבילות שמגיעות מבחוץ, הוא מקשיב להן. לכן, אתה יכול להגדיר את הנתב כך שכאשר מתקבל רצף מסוים (קוד) של מנות רשת ביציאות שונות, הוא (הנתב) עבור ה-IP שממנו הגיעו החבילות, מנתק גישה למשאבים מסוימים (יציאות, פרוטוקולים, וכו.).

עכשיו לעסקים. לא אעשה תיאור מפורט של הגדרות חומת האש במיקרוטיק - האינטרנט מלא במקורות איכותיים לכך. באופן אידיאלי, חומת האש חוסמת את כל החבילות הנכנסות, אבל

/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

מעביר את הכללים שלנו במעלה שרשרת העיבוד של חומת האש, מכיוון שככל הנראה כבר יוגדרו לנו כללי הכחשה שונים שימנעו את אלה שיצרנו לאחרונה לפעול. הכלל הראשון במיקרוטיק מתחיל מאפס, אבל במכשיר שלי האפס היה תפוס על ידי כלל מובנה ואי אפשר היה להזיז אותו - העברתי אותו ל-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 - אנו לוקחים כתובת זו ממערכת ה-DDNS של Mikrotik לאחר הפעלתה ב-Mikrotik שלנו: עבור לתפריט IP-> ענן - סמן את התיבה DDNS Enabled , לחץ על החל והעתק את שם ה-dns של הנתב שלנו. אבל זה נחוץ רק כאשר ה-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

מבין ההגדרות המעניינות כאן הוא use ​​multimon: i: 1 - זה כולל שימוש במספר מוניטורים - חלקם צריכים את זה, אבל הם עצמם לא יחשבו להפעיל אותו.

סוג חיבור: i: 6 ו-networkautodetect: i: 0 - מכיוון שרוב האינטרנט הוא מעל 10 Mbps, אז הפעל את סוג חיבור 6 (רשת מקומית 10 Mbps ומעלה) וכבה את networkautodetect, כי אם כברירת מחדל (אוטומטי) , אז אפילו חביון רשת קטן נדיר מגדיר את ההפעלה שלנו למהירות איטית למשך זמן רב, מה שעלול ליצור עיכובים ניכרים בעבודה, במיוחד בתוכניות גרפיקה.

השבת טפט: 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 ... פורט לפי אותו היגיון , ובמקרה זה חדירה ישירה לרשת שלך תהיה כמעט בלתי אפשרית.

קבצים ריקים ליצירת חיבור מרחוק ל-RDP.

מקור: www.habr.com

הוספת תגובה