API לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP
-
יצרתי לעצמי API שאני יכול ממחשב מרוחק לגשת לIP (הקבוע) של המחשב שלי ולפתוח לעצמי פורט שיחובר לפורט 3389 עבור חיבור לשולחן עבודה מרחוק.
הרעיון הוא שכל הזמן אין פורט שמופנה לRDP, ורק בעת הצורך פותחים או סוגרים את החיבור
זה נועד לתוספת אבטחה.
להלן הקוד
זה נכתב בהתאם לראוטר D-LINK 225
הרעיון הוא שעבור פתיחת פורט ניגשים לכתובת של הדף
http://31.31.31.31/openport.php?action=open
ועבור הסגירה ניגשים כך
http://31.31.31.31/openport.php
כמובן יש לשנות לכתובת הIP הנכון
וכן להשים את שם הקובץ בו שמרתם את הקוד
וכן יש לוודא ששמתם את שם המשתמש והסיסמא הנכונים של הראוטר
וכן לוודא שהמחשב המארח נמצא בכתובת 10.0.0.1 או להחליף בקוד לכתובת הנכונה
ניתן לשנות את הפורט המאזין לכל פורט אחר כמובן<?php $username = 'Admin'; $pass = 'Admin'; $header = 'Content-Type: application/x-www-form-urlencoded'. "\r\n" . 'Cookie: username=' . $username . '; password=' . $pass . ''; $opts = array('http' => array( 'method' => 'GET', 'header' => $header, 'follow_location' => false ) ); $context = stream_context_create($opts); $Login = file_get_contents('http://10.0.0.138/login.cgi?web_login_name=' . $username . '&web_login_pass=' . $pass . '&loginfo=on&loginId=Login', FALSE, $context); $form = file_get_contents('http://10.0.0.138/scvrtsrv.html', FALSE, $context); $form = explode('&sessionKey=', $form); $sessionKey = explode("'", $form[1])[0]; //print_r($sessionKey); $eStart = '5546'; //תחילת פורט נכנס $eEnd = '5546'; //סיום פורט נכנס $iStart = '3389'; $iEnd = '3389'; if (isset($_GET['action']) && $_GET['action'] == 'open') { $open = 'http://10.0.0.138/scvrtsrv.cmd?action=add&srvName=RDP&dstWanIf=ppp1.1&srvAddr=10.0.0.1&proto=1,&eStart=' . $eStart . ',&eEnd=' . $eEnd . ',&iStart=' . $iStart . ',&iEnd=' . $iEnd . ',&sessionKey=' . $sessionKey; $open2 = file_get_contents($open); print_r($open2); } else { $delete = 'http://10.0.0.138/scvrtsrv.cmd?action=remove&rmLst=10.0.0.1|' . $eStart . '|' . $eEnd . '|TCP|' . $iStart . '|' . $iEnd . ',&sessionKey=' . $sessionKey; $delete2 = file_get_contents($delete, FALSE, $context); print_r($delete2); } $LogOut = file_get_contents('http://10.0.0.138/logout.cgi', FALSE, $context);
-
@איש-ימיני אמר בAPI לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP:
@חוקר
זה דורש התקנת PHP במחשב?
וא"כ דורש גם פתיחת פורט 80?אכן
אצלי כבר מותקן בין כך -
@איש-ימיני אמר בAPI לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP:
@חוקר
זה דורש התקנת PHP במחשב?
וא"כ דורש גם פתיחת פורט 80?אכן
אצלי כבר מותקן בין כך -
עדיף פייתון, כדי ליצור קובץ נייד.
בכל אופן, הרעיון טוב.
רק סיסמא תשלב, כמובן...אני עשיתי כזה דבר להוסיף את עצמי לחומת האש בשרת אסטריסק.
רק צריך להריץ את זה בכל הפעלה וכיבוי של הראוטר...@musicode אמר בAPI לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP:
רק צריך להריץ את זה בכל הפעלה וכיבוי של הראוטר...
דהיינו כשאין לך כתובת IP יוצא קבוע?
כי אני עשיתי את זה לעצמי לטאבלט ששם אין לי IP קבוע, אך במחשב אין לי בעיות (מה גם שהמחשב נטפרי וכמעט אין מושג של שינוי IP, משא"כ הטאבלט הוא סייפטק שם בדר"כ משתנה) -
זה מאד מזכיר port knocking
-
יצרתי לעצמי API שאני יכול ממחשב מרוחק לגשת לIP (הקבוע) של המחשב שלי ולפתוח לעצמי פורט שיחובר לפורט 3389 עבור חיבור לשולחן עבודה מרחוק.
הרעיון הוא שכל הזמן אין פורט שמופנה לRDP, ורק בעת הצורך פותחים או סוגרים את החיבור
זה נועד לתוספת אבטחה.
להלן הקוד
זה נכתב בהתאם לראוטר D-LINK 225
הרעיון הוא שעבור פתיחת פורט ניגשים לכתובת של הדף
http://31.31.31.31/openport.php?action=open
ועבור הסגירה ניגשים כך
http://31.31.31.31/openport.php
כמובן יש לשנות לכתובת הIP הנכון
וכן להשים את שם הקובץ בו שמרתם את הקוד
וכן יש לוודא ששמתם את שם המשתמש והסיסמא הנכונים של הראוטר
וכן לוודא שהמחשב המארח נמצא בכתובת 10.0.0.1 או להחליף בקוד לכתובת הנכונה
ניתן לשנות את הפורט המאזין לכל פורט אחר כמובן<?php $username = 'Admin'; $pass = 'Admin'; $header = 'Content-Type: application/x-www-form-urlencoded'. "\r\n" . 'Cookie: username=' . $username . '; password=' . $pass . ''; $opts = array('http' => array( 'method' => 'GET', 'header' => $header, 'follow_location' => false ) ); $context = stream_context_create($opts); $Login = file_get_contents('http://10.0.0.138/login.cgi?web_login_name=' . $username . '&web_login_pass=' . $pass . '&loginfo=on&loginId=Login', FALSE, $context); $form = file_get_contents('http://10.0.0.138/scvrtsrv.html', FALSE, $context); $form = explode('&sessionKey=', $form); $sessionKey = explode("'", $form[1])[0]; //print_r($sessionKey); $eStart = '5546'; //תחילת פורט נכנס $eEnd = '5546'; //סיום פורט נכנס $iStart = '3389'; $iEnd = '3389'; if (isset($_GET['action']) && $_GET['action'] == 'open') { $open = 'http://10.0.0.138/scvrtsrv.cmd?action=add&srvName=RDP&dstWanIf=ppp1.1&srvAddr=10.0.0.1&proto=1,&eStart=' . $eStart . ',&eEnd=' . $eEnd . ',&iStart=' . $iStart . ',&iEnd=' . $iEnd . ',&sessionKey=' . $sessionKey; $open2 = file_get_contents($open); print_r($open2); } else { $delete = 'http://10.0.0.138/scvrtsrv.cmd?action=remove&rmLst=10.0.0.1|' . $eStart . '|' . $eEnd . '|TCP|' . $iStart . '|' . $iEnd . ',&sessionKey=' . $sessionKey; $delete2 = file_get_contents($delete, FALSE, $context); print_r($delete2); } $LogOut = file_get_contents('http://10.0.0.138/logout.cgi', FALSE, $context);
-
עדיף לחסום את הפורט במחשב עצמו, ולא בראוטר
ואז יהיה אפשר לפתוח רק ל IP שממנו בוצעה הבקשה
ולסגור אוטומטי אחרי זמן מסוים
(אפשר ב iptables לתת timeout ל rule)ככה זה יהיה יותר מאובטח
@upsilon01 אמר בAPI לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP:
(אפשר ב iptables לתת timeout ל rule)
הוא משתמש בווינדוס
-
@upsilon01 אמר בAPI לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP:
(אפשר ב iptables לתת timeout ל rule)
הוא משתמש בווינדוס