কম্পিউটার

পাওয়ারশেল এবং উইন্ডোজ ফায়ারওয়াল নিয়মগুলির সাথে RDP ব্রুট ফোর্স সুরক্ষা

উইন্ডোজ ফায়ারওয়ালে স্বয়ংক্রিয়ভাবে (ব্ল্যাকলিস্ট) আইপি অ্যাড্রেসগুলিকে ব্লক করার জন্য একটি সাধারণ পাওয়ারশেল স্ক্রিপ্ট লিখতে আমার ধারণা আছে, যার উপর আরডিপি ব্রুট-ফোর্স প্রচেষ্টা বা ক্রমাগত আরডিপি আক্রমণ সনাক্ত করা হয়। ধারণাটি নিম্নরূপ:PowerShell স্ক্রিপ্ট সিস্টেম ইভেন্ট লগ বিশ্লেষণ করে এবং যদি গত তিন ঘন্টায় একই IP ঠিকানা থেকে RDP-এর মাধ্যমে প্রমাণীকরণের জন্য 5টির বেশি ব্যর্থ প্রচেষ্টা করা হয়, তাহলে IP ঠিকানাটি স্বয়ংক্রিয়ভাবে Windows ফায়ারওয়াল ব্লকিং নিয়মে যুক্ত হয়ে যায়। .

সুতরাং, একটি ছোট অফিস নেটওয়ার্ক আছে. এটি অ্যাক্সেস করার জন্য, একটি RDP পোর্ট NAT-এর মাধ্যমে একটি অফিস কম্পিউটারে ইন্টারনেট গেটওয়ের মাধ্যমে লিনাক্স চালানোর মাধ্যমে ফরোয়ার্ড করা হয় (TCP 15221 বাইরে থেকে উত্তর দিচ্ছে, এবং ডিফল্ট RDP পোর্ট 3389 ভিতরে ফরোয়ার্ড করা হয়েছে)। সময়ে সময়ে, RDP-এর মাধ্যমে কম্পিউটারে প্রমাণীকরণের ব্যর্থ প্রচেষ্টার কারণে পরিচিত ব্যবহারকারী অ্যাকাউন্টগুলি ডোমেন পাসওয়ার্ড নীতি দ্বারা লক করা হয়। আমাদের কাজ হল স্বয়ংক্রিয়ভাবে আমাদের RDP সার্ভারকে জবরদস্তি করতে ব্যবহৃত IP ঠিকানাগুলিকে ব্লক করা৷

প্রথমত, নির্দিষ্ট আইপি ঠিকানাগুলি থেকে অন্তর্মুখী RDP সংযোগগুলি ব্লক করতে কম্পিউটারে একটি ফায়ারওয়াল নিয়ম তৈরি করুন:

New-NetFirewallRule -DisplayName "BlockRDPBruteForce" –RemoteAddress 1.1.1.1 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Block

পাওয়ারশেল এবং উইন্ডোজ ফায়ারওয়াল নিয়মগুলির সাথে RDP ব্রুট ফোর্স সুরক্ষা

আমরা এই নিয়ম ফায়ারওয়ালে আরও আইপি ঠিকানাগুলি যোগ করব, যার উপর আরডিপি ব্রুট-ফোর্স প্রচেষ্টা সনাক্ত করা হয়েছে।

আপনি একটি অতিরিক্ত অনুমোদিত নিয়ম লিখতে পারেন যাতে PowerShell স্ক্রিপ্ট আপনার প্রয়োজনীয় আইপি ঠিকানা বা সাবনেটগুলিকে ব্লক না করে।

তারপরে আপনাকে আইপি ঠিকানাগুলির তালিকা সংগ্রহ করতে হবে, যার উপর উইন্ডোজ ইভেন্ট লগ থেকে গত 3 ঘন্টা ধরে 5টির বেশি ব্যর্থ প্রমাণীকরণ প্রচেষ্টা সনাক্ত করা হয়েছে। এটি করতে, EventID 4625 দিয়ে ইভেন্টগুলি খুঁজুন৷ (অ্যাক্সেসের ব্যর্থ চেষ্টা — একটি অ্যাকাউন্ট লগ ইন করতে ব্যর্থ হয়েছে এবং LogonType =3 , নিরাপত্তা লগে RDP ইভেন্ট লগ ফরেনসিক নিবন্ধটি দেখুন। আপনি যে ইভেন্টগুলি পেয়েছেন তাতে, সংযোগ করার চেষ্টা করছেন এমন ব্যবহারকারীর IP ঠিকানা খুঁজুন এবং নিশ্চিত করুন যে এটি ইভেন্ট লগে 5 বারের বেশি উপস্থিত হয়েছে৷

আমি গত 3 ঘন্টার ইভেন্টের তালিকা থেকে আক্রমণকারীদের আইপি ঠিকানা নির্বাচন করতে নিম্নলিখিত পাওয়ারশেল কোডটি ব্যবহার করছি (আপনি সময়কাল পরিবর্তন করতে পারেন):

$Last_n_Hours = [DateTime]::Now.AddHours(-3)
$badRDPlogons = Get-EventLog -LogName 'Security' -after $Last_n_Hours -InstanceId 4625 | ?{$_.Message -match 'logon type:\s+(3)\s'} | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$getip = $badRDPlogons | group-object -property IpAddress | where {$_.Count -gt 5} | Select -property Name
নির্বাচন করুন

পাওয়া IP ঠিকানাগুলির তালিকা প্রদর্শন করতে, ব্যবহার করুন:$getip

এখন আগে তৈরি করা ফায়ারওয়াল নিয়ম BlockRDPBruteForce-এ আক্রমণকারীদের সমস্ত পাওয়া আইপি ঠিকানা যোগ করুন। উইন্ডোজ ফায়ারওয়াল পরিচালনা করতে, আমরা অন্তর্নির্মিত PowerShell মডিউল NetSecurity ব্যবহার করব৷ প্রথমত, বর্তমানে ব্লক করা আইপি ঠিকানার তালিকা পান এবং এতে নতুন যোগ করুন।

$log = "C:\ps\rdp_blocked_ip.txt"
$current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter ).RemoteAddress
foreach ($ip in $getip)
{
$current_ips += $ip.name
(Get-Date).ToString() + ' ' + $ip.name + ' The IP address has been blocked due to ' + ($badRDPlogons | where {$_.IpAddress -eq $ip.name}).count + ' attempts for 2 hours'>> $log # writing the IP blocking event to the log file
}
Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $current_ips

পাওয়ারশেল এবং উইন্ডোজ ফায়ারওয়াল নিয়মগুলির সাথে RDP ব্রুট ফোর্স সুরক্ষা

উইন্ডোজ ডিফেন্ডার ফায়ারওয়ালের ব্লকিং নিয়মে নতুন আইপি ঠিকানা যোগ করা হয়েছে তা নিশ্চিত করুন।

পাওয়ারশেল এবং উইন্ডোজ ফায়ারওয়াল নিয়মগুলির সাথে RDP ব্রুট ফোর্স সুরক্ষা

এখন আপনাকে এই PowerShell কোডটি c:\ps\block_rdp_attack.ps1 ফাইলে কপি করতে হবে এবং প্রতি 2 ঘন্টা চালানোর জন্য এটি আপনার টাস্ক শিডিউলারে যোগ করুন, উদাহরণস্বরূপ।

আপনি একটি PowerShell স্ক্রিপ্ট ব্যবহার করে বা ম্যানুয়ালি একটি শিডিউলার টাস্ক তৈরি করতে পারেন:

$repeat = (New-TimeSpan -Hours 2)
$duration = ([timeSpan]::maxvalue)
$Trigger= New-ScheduledTaskTrigger -Once -At (Get-Date).Date -RepetitionInterval $repeat -RepetitionDuration $duration
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\block_rdp_attack.ps1"
Register-ScheduledTask -TaskName "BlockRDPBruteForce_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

অথবা লগে EventID 4625 উপস্থিত হলে আপনি আপনার PowerShell স্ক্রিপ্ট চালাতে পারেন (ব্লগপোস্ট উইন্ডোজ ইভেন্ট ট্রিগার চেক করুন), যাতে আপনি আরও দ্রুত একটি RDP ব্রুট-ফোর্স আক্রমণের প্রতিক্রিয়া জানাবেন।

আপনি আপনার প্রয়োজন অনুসারে এই স্ক্রিপ্টটি পরিবর্তন করতে পারেন এবং RDP আক্রমণগুলিকে ব্লক করতে ব্যবহার করতে পারেন৷


  1. PowerShell দিয়ে এক্সেল ফাইলে ডেটা পড়ুন এবং লিখুন

  2. উইন্ডোজ 10 এ ফায়ারওয়াল এবং নেটওয়ার্ক সুরক্ষা এলাকা কিভাবে লুকাবেন?

  3. Windows 10 ফায়ারওয়াল নিয়ম ও সেটিংস সামঞ্জস্য করুন

  4. ভিজ্যুয়াল স্টুডিও কোড সহ উইন্ডোজ 10 এবং উইন্ডোজ 11 এ পাওয়ারশেল স্ক্রিপ্ট কীভাবে তৈরি করবেন