কম্পিউটার

PowerShell এর সাথে Windows এ সক্রিয় TCP/IP সংযোগ পরীক্ষা করা হচ্ছে

অনেক প্রশাসক সাধারণত netstat ব্যবহার করেন কনসোল টুল বা গ্রাফিক TCPView সক্রিয় TCP/IP সংযোগ সম্পর্কে তথ্য প্রদর্শন করতে এবং উইন্ডোজে TCP পোর্ট খুলতে। netstat এর পরিবর্তে, আপনি Get-NetTCPConnection ব্যবহার করতে পারেন Windows-এ সক্রিয় নেটওয়ার্ক সংযোগ, TCP পোর্ট খুলতে এবং TCP/IP প্রোটোকল ব্যবহার করে চলমান প্রসেস সম্পর্কে তথ্য পেতে PowerShell-এ cmdlet। PowerShell তথ্য পেতে জটিল স্ক্রিপ্ট লেখা সহজ করে তোলে এবং খোলা TCP পোর্ট, প্রক্রিয়া এবং প্রতিষ্ঠিত নেটওয়ার্ক সংযোগগুলি নিরীক্ষণ করে।

Get-NetTCPConnection চালানোর চেষ্টা করুন কোনো অপশন ছাড়াই কমান্ড।

PowerShell এর সাথে Windows এ সক্রিয় TCP/IP সংযোগ পরীক্ষা করা হচ্ছে

নেটস্ট্যাটের মতো, কমান্ডটি স্থানীয় এবং দূরবর্তী আইপি ঠিকানা, পোর্ট, সংযোগ অবস্থার সাথে সমস্ত সক্রিয় সংযোগের তালিকা প্রদর্শন করেছে (শুনুন , ইন্টারনেট প্রতিষ্ঠিত , সময় অপেক্ষা , বাউন্ড , ক্লোজ ওয়েট , সিঙ্ক রিসিভড , SynSent ), এবং প্রসেস আইডি (PID) যা এই TCP সংযোগ ব্যবহার করছে।

আপনি আপনার স্থানীয় কম্পিউটারে খোলা (শ্রবণ) পোর্টগুলির একটি তালিকা প্রদর্শন করতে পারেন:

Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress, LocalPort, RemoteAddress, RemotePort, State | Sort-Object LocalPort |ft

PowerShell এর সাথে Windows এ সক্রিয় TCP/IP সংযোগ পরীক্ষা করা হচ্ছে

Get-NetUDPEndpoint cmdlet ব্যবহার করা হয় UDP পোর্ট সম্পর্কে তথ্য পেতে।

আপনি শুধুমাত্র বহিরাগত (ইন্টারনেট) সংযোগ প্রদর্শন করতে পারেন:

Get-NetTCPConnection -AppliedSetting Internet

আপনি দূরবর্তী হোস্টের DNS নাম এবং TCP সংযোগের জন্য প্রক্রিয়ার নাম প্রদর্শন করতে পারেন:

Get-NetTCPConnection -State Established |Select-Object -Property LocalAddress, LocalPort,@{name='RemoteHostName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},RemoteAddress, RemotePort, State,@{name='ProcessName';expression={(Get-Process -Id $_.OwningProcess). Path}},OffloadState,CreationTime |ft

এই পাওয়ারশেল স্ক্রিপ্টটি সমস্ত হোস্ট আইপি ঠিকানাগুলিকে ডিএনএস নাম এবং সমস্ত সংযোগের জন্য নির্দিষ্ট প্রক্রিয়ার নামগুলির সমাধান করেছে৷

PowerShell এর সাথে Windows এ সক্রিয় TCP/IP সংযোগ পরীক্ষা করা হচ্ছে

একটি প্যারেন্ট প্রসেস পিআইডির নামে, আপনি নেটওয়ার্ক ব্যবহার করছে এমন সম্পর্কিত উইন্ডোজ পরিষেবাগুলির তালিকা প্রদর্শন করতে পারেন:

Get-WmiObject Win32_Service | Where-Object -Property ProcessId -In (Get-NetTCPConnection).OwningProcess | Where-Object -Property State -eq Running | Format-Table ProcessId, Name, Caption, StartMode, State, Status, PathName

আপনি শুধুমাত্র নির্দিষ্ট প্রক্রিয়া দ্বারা সূচিত নেটওয়ার্ক সংযোগ দেখতে পারেন. এটি করতে, আপনি নিম্নলিখিত PowerShell স্ক্রিপ্ট ব্যবহার করতে পারেন:

$TrackProcessName = "*chrome*"
$EstablishedConnections = Get-NetTCPConnection -State Established |Select-Object -Property LocalAddress, LocalPort,@{name='RemoteHostName';expression={(Resolve-DnsName $_.RemoteAddress).NameHost}},RemoteAddress, RemotePort, State,@{name='ProcessName';expression={(Get-Process -Id $_.OwningProcess). Path}}, OffloadState,CreationTime
Foreach ($Connection in $EstablishedConnections)
{
If ($Connection.ProcessName -like $TrackProcessName)
{
$Connection|ft
}
}

আপনি বিভিন্ন পরিস্থিতিতে Get-NetTCPConnection cmdlet ব্যবহার করতে পারেন। উদাহরণস্বরূপ, নির্দিষ্ট আইপি ঠিকানা থেকে নির্দিষ্ট স্থানীয় পোর্টে সংযোগ স্থাপন করা হয়েছে কিনা তা ট্র্যাক করতে আপনি একটি সাধারণ PowerShell স্ক্রিপ্ট তৈরি করতে পারেন এবং প্রশাসকের কাছে একটি পপ-আপ বিজ্ঞপ্তি প্রদর্শন করতে পারেন৷

নিম্নলিখিত উদাহরণে, একটি PowerShell স্ক্রিপ্ট চেক করে যে নির্দিষ্ট আইপি ঠিকানা থেকে একটি সংযোগ ডিফল্ট RDP পোর্ট 3389 এ উপস্থিত হয় কিনা। সংযোগটি উপস্থিত হলে, স্ক্রিপ্টটি একটি পপ-আপ বিজ্ঞপ্তি প্রদর্শন করবে এবং সংযোগের তারিখ এবং সময় লগ করবে টেক্সট ফাইল:

$SourceIP = “192.168.13.125”
$TargetPort =”3389”
$log = "C:\PS\rdp_connection_log.txt"
$EstablishedConnections = Get-NetTCPConnection -State Established
Foreach ($Connection in $EstablishedConnections)
{
If (($Connection.RemoteAddress -eq $SourceIP) -and ($Connection.LocalPort -eq $TargetPort))
{
Add-Type -AssemblyName System.Windows.Forms
$global:balmsg = New-Object System.Windows.Forms.NotifyIcon
$path = (Get-Process -id $pid).Path
$balmsg.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
$balmsg.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Warning
$balmsg.BalloonTipText = "New RDP connection to your computer from $($Connection.RemoteAddress)"
$balmsg.BalloonTipTitle = "New RDP connection from ($Connection.RemoteAddress)"
$balmsg.Visible = $true
$balmsg.ShowBalloonTip(10000)
(Get-Date).ToString() + ' ' + $Connection.RemoteAddress + ' an RDP connection is established ' >> $log
}
}

PowerShell এর সাথে Windows এ সক্রিয় TCP/IP সংযোগ পরীক্ষা করা হচ্ছে

একইভাবে, আপনি SSH, SMB, FTP, SMTP ইত্যাদির মতো নেটওয়ার্ক সংযোগগুলি নিরীক্ষণ এবং লগ করতে পারেন৷ এই PowerShell স্ক্রিপ্টটি একটি Windows পরিষেবাতে রূপান্তরিত হতে পারে যা স্বয়ংক্রিয়ভাবে শুরু হবে৷

আপনি স্ক্রিপ্টটি একসাথে ব্যবহার করতে পারেন যা আমরা আগে আলোচনা করেছি:পাওয়ারশেলের সাথে আরডিপি ব্রুট ফোর্স অ্যাটাক সুরক্ষা।

আপনি PowerShell রিমোটিং cmdlets (Enter-PSSession এবং Invoke-Command) ব্যবহার করে দূরবর্তী কম্পিউটারে খোলা TCP পোর্ট এবং সংযোগের একটি তালিকা পেতে পারেন।

Invoke-Command -ComputerName be-dc01 {Get-NetTCPConnection -State Established}

Get-NetTCPConnection cmdlet (পাশাপাশি Test-NetConnection) Windows-এ নেটওয়ার্ক সংযোগগুলি ট্র্যাক এবং নির্ণয় করতে খুব কার্যকর হতে পারে৷


  1. PowerShell দিয়ে VMWare-এ Windows VM টেমপ্লেট আপডেট করা হচ্ছে

  2. PowerShell দিয়ে উইন্ডোজ প্রসেস পরিচালনা করা

  3. পাওয়ারশেল বা ওয়েভটুটিল ব্যবহার করে কীভাবে উইন্ডোজ ইভেন্ট লগ সাফ করবেন

  4. Windows PowerShell স্ক্রিপ্টের মাধ্যমে আপনার উৎপাদনশীলতা বৃদ্ধি করুন