ฉันจะรับที่อยู่ IP ของไคลเอ็นต์เดสก์ท็อประยะไกลได้อย่างไร และฉันจะเรียกคำสั่งเชลล์บนการเชื่อมต่อ RDP ได้อย่างไร


23

มีวิธีการกำหนดที่อยู่ IP ของไคลเอนต์เดสก์ท็อประยะไกลโดยใช้ PowerShell (หรือวิธีอื่น) บนเซิร์ฟเวอร์หรือไม่ (Windows Server 2008 R2 x64 คือสิ่งที่ฉันใช้)

แก้ไข: ฉันพบว่าฉันสามารถ gred ststout ของ netstat เพื่อดึงข้อมูลที่เป็นไปได้มากดังนั้นฉันจะเรียกสคริปต์ / คำสั่งเชลล์เมื่อลูกค้าเชื่อมต่อได้อย่างไร


ภายในบริบทอะไร สคริปต์นี้จะทำงานในฐานะผู้ใช้ผู้ดูแลระบบหรือบุคคลอื่นหรือไม่
Zoredache

สิ่งนี้อยู่ใน LAN, WAN หรืออินเทอร์เน็ตหรือไม่
Zapto

ฉันเปิด RDP ไว้บนอินเทอร์เน็ตดังนั้นฉันจึงรู้ว่า IP ใดเป็นของฉัน ฉันไม่แน่ใจว่าใครจะทำงานภายใต้ฉันเดาว่าอะไรที่ทำให้ฉันสามารถดึงข้อมูลนั้นได้
chaz

ฉันทำการค้นหาและโพสต์นี้ ( serverfault.com/questions/314386/listing-users-using-rdp ) ดูเหมือนจะใกล้เคียงกับสิ่งที่คุณต้องการมาก ฉันแค่มีความเชี่ยวชาญไม่เพียงพอใน Powershell ที่จะทำให้เป้าหมาย / ผลตอบแทนและ IP
Skawt

ประเภทของเหตุการณ์นั้นและข้อมูลที่ให้ไว้ก็ยังไม่ให้ IP ระยะไกลกับฉันสิ่งที่ใกล้เคียงที่สุดที่ให้ฉันในบันทึกเหตุการณ์คือ 'คอมพิวเตอร์'
chaz

คำตอบ:


21

จากพรอมต์คำสั่งคุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อรับรายการของ IP ระยะไกลที่เชื่อมต่อกับ RDP (พอร์ต 3389)

netstat -n | find ":3389" | find "ESTABLISHED"

ฉันแน่ใจว่านี่เป็นสคริปต์ใน powershell (หรือแม้แต่ไฟล์แบตช์เก่าแบบธรรมดา) พรุ่งนี้ฉันจะยกตัวอย่างถ้าคุณสนใจ


ฉันใช้สิ่งนี้ก่อนที่มันจะทำงานได้อย่างมีประสิทธิภาพมากตอนนี้ฉันแค่ต้องการหาวิธีที่จะทริกเกอร์สคริปต์เมื่อไคลเอนต์ RDP เชื่อมต่อ
chaz

12

เอาล่ะฉันเข้าใจแล้วว่าtask schedulerแอปพลิเคชันที่มาพร้อมกับ windows นั้นสามารถกำหนดให้ฉันสามารถเรียกใช้สคริปต์แบบแบตช์ซึ่งจะถูกเรียกใช้เมื่อมีการสร้างเหตุการณ์ในบันทึกเหตุการณ์ ผ่าน UI ที่คุณเลือกประเภทเหตุการณ์แหล่งที่มาของเหตุการณ์และรหัสเหตุการณ์ซึ่งในกรณีนี้ฉันใช้ 4264 (และใช่จะรวบรวมประเภทการเข้าสู่ระบบทั้งหมด) ที่นี่ฉันใช้สคริปต์แบทช์ง่าย ๆ แทน:

SET logfile="rdp_ip_logs.log"
date /T>>%logfile%
time /T>>%logfile%
netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%

นอกจากนี้ฉันพบตัวอย่างที่มีประโยชน์สุด ๆ เกี่ยวกับวิธีการสมัคร / ฟังการเขียนเหตุการณ์ใน. NET: http://msdn.microsoft.com/en-us/library/bb552514(v=vs.90).aspx I ' ฉันจะใช้สิ่งนั้นแทนเพื่อเขียนเหตุการณ์บางอย่างไปยังฐานข้อมูลสำหรับการตรวจสอบผ่านเว็บ

ข้อเสียเปรียบเพียงอย่างเดียวของโซลูชันนี้คือถ้าคุณเปิดใช้งานบริการเดสก์ท็อประยะไกลและมีการเชื่อมต่อหลายคนคุณจะไม่สามารถแยกความแตกต่างระหว่างพวกเขาในเอาต์พุต netstat


1
ที่จริงแล้วมันเป็นคำตอบที่สง่างามเมื่อคุณรวมมันเข้าด้วยกัน ฉันไม่ได้ตระหนักถึงการทำงานของตัวกำหนดตารางเวลาที่ปรับปรุงแล้วเช่นกัน เยี่ยมมาก!
John Homer

สำหรับตัวกำหนดตารางเวลาเวอร์ชันเก่าคุณสามารถทำได้ด้วยไฟล์แบทช์และสคริปต์evtmon.vbs
Scott R

5

หากคุณไม่จำเป็นต้องเขียนสคริปต์คุณสามารถดูในบันทึกเหตุการณ์ความปลอดภัยสำหรับรหัสเหตุการณ์ 4624 จะมีบรรทัด:

ที่อยู่เครือข่ายต้นทาง: 192.168.xxx.xxx


4264 ใช้สำหรับการเข้าสู่ระบบและมีประโยชน์สำหรับการบันทึกการเข้าสู่ระบบประเภทตัวควบคุมโดเมนที่ใช้งานอยู่ ฉันต้องการ IP ปัจจุบันของไคลเอนต์การเชื่อมต่อ RDP ซึ่งบัญชีที่เข้าสู่ระบบนั้นไม่เกี่ยวข้องและฉันเชื่อว่าสามารถกู้คืนได้โดยผ่านการ grepping / piping ststout ของ netstat ฉันหมายถึงตอนนี้ถ้ามีวิธีที่จะกระตุ้นการเรียกใช้งานคำสั่ง shell-command / script / program บนการเชื่อมต่อ RDP นั่นจะยอดเยี่ยมมาก
chaz

ที่จริงแล้ว 4624 (พิมพ์ผิด) ถูกต้องมีหลายประเภทการเข้าสู่ระบบที่แสดงใน ID เหตุการณ์นั้น
chaz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.