VPS Windows mặc định còn nhiều lỗ hổng bảo mật. Thực hiện ngay các bước sau khi nhận VPS để tránh bị hack, brute force RDP hoặc mã hóa dữ liệu (ransomware).
Bước 1: Đổi mật khẩu Administrator mạnh
Nhấn Ctrl + Alt + Del → Change a password, hoặc dùng PowerShell:
net user Administrator "MatKhauMoi@2024!"
Mật khẩu mạnh cần có: chữ hoa, chữ thường, số, ký tự đặc biệt, tối thiểu 12 ký tự.
Bước 2: Đổi port RDP khỏi 3389 mặc định
Port 3389 bị scan liên tục bởi bot tự động. Đổi sang port khác:
# Đổi sang port 13389 (hoặc port bất kỳ 1024-65535)
$newPort = 13389
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name PortNumber -Value $newPort
# Mở port mới trên Firewall
New-NetFirewallRule -DisplayName "RDP Custom Port" -Direction Inbound -Protocol TCP -LocalPort $newPort -Action Allow
# Xóa rule RDP cũ (port 3389)
Remove-NetFirewallRule -DisplayName "Remote Desktop*" -ErrorAction SilentlyContinue
# Restart Remote Desktop service
Restart-Service TermService -Force
Sau khi đổi, kết nối bằng: IP:13389
Bước 3: Giới hạn IP được phép RDP
Chỉ cho phép IP của bạn kết nối RDP:
# Thay 1.2.3.4 bằng IP thật của bạn
New-NetFirewallRule -DisplayName "RDP Allow My IP" -Direction Inbound -Protocol TCP -LocalPort 13389 -RemoteAddress "1.2.3.4" -Action Allow
New-NetFirewallRule -DisplayName "RDP Block Others" -Direction Inbound -Protocol TCP -LocalPort 13389 -Action Block
Bước 4: Bật Windows Firewall và cấu hình cơ bản
# Bật Firewall cho tất cả profile
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
# Chặn ping từ ngoài (tùy chọn)
Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request*)" -Enabled False
# Xem các rule đang active
Get-NetFirewallRule | Where-Object {$_.Enabled -eq "True" -and $_.Direction -eq "Inbound"} | Select-Object DisplayName,Action | Format-Table
Bước 5: Bật Account Lockout (chặn brute force)
Tự động khóa tài khoản sau khi nhập sai password nhiều lần:
# Mở Local Security Policy
secpol.msc
Vào Account Policies → Account Lockout Policy:
- Account lockout threshold: 5 (khóa sau 5 lần sai)
- Account lockout duration: 30 (khóa 30 phút)
- Reset account lockout counter after: 30
Hoặc dùng PowerShell:
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30
Bước 6: Tắt tài khoản Guest
net user guest /active:no
Bước 7: Bật Windows Update tự động
Set-Service -Name wuauserv -StartupType Automatic
Start-Service wuauserv
# Cấu hình tự động download và cài update
$AUSettings = (New-Object -com "Microsoft.Update.AutoUpdate").Settings
$AUSettings.NotificationLevel = 4 # Auto download and install
$AUSettings.Save()
Bước 8: Tắt các tính năng dễ bị khai thác
# Tắt SMBv1 (lỗ hổng WannaCry)
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
# Tắt NetBIOS over TCP/IP
$adapters = Get-WmiObject Win32_NetworkAdapterConfiguration
foreach ($adapter in $adapters) {
$adapter.SetTcpipNetbios(2) # 2 = Disable
}
# Tắt LLMNR
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name EnableMulticast -Value 0
Bước 9: Kiểm tra login bất thường
# Xem 20 lần login gần nhất
Get-EventLog -LogName Security -InstanceId 4624 -Newest 20 | Select-Object TimeGenerated, Message | Format-List
# Xem login thất bại
Get-EventLog -LogName Security -InstanceId 4625 -Newest 20 | Select-Object TimeGenerated, Message | Format-List
# Đếm số lần login thất bại theo IP
Get-EventLog -LogName Security -InstanceId 4625 -Newest 1000 | ForEach-Object {
$_.Message -match "Source Network Address:\s+(\S+)" | Out-Null
$Matches[1]
} | Group-Object | Sort-Object Count -Descending | Select-Object -First 10
Bước 10: Cài Windows Malicious Software Removal Tool
# Chạy scan malware
MRT /F:Y
Checklist bảo mật Windows VPS:
-
Đổi password Administrator mạnh
-
Đổi port RDP khỏi 3389
-
Bật Windows Firewall
-
Bật Account Lockout Policy
-
Tắt SMBv1
-
Bật Windows Update
-
Tắt tài khoản Guest
-
Giới hạn IP được phép RDP (nếu có thể)