Một cổng RDP trả lời cả internet sẽ nhận các lần đoán mật khẩu chỉ vài phút sau khi server khởi động. Mật khẩu dài sẽ trụ được, nhưng mỗi lần đoán vẫn là một lần đăng nhập, làm đầy nhật ký sự kiện và cho lỗ hổng RDP tiếp theo một đối tượng để khai thác. Năm bước sẽ khắc phục điều đó. Mỗi bước là một lệnh PowerShell, và chúng tôi đã chạy tất cả trên image Windows Server 2022 của mình trước khi đăng.
Mở PowerShell với quyền quản trị qua RDP (cách kết nối) và làm theo thứ tự. Để bước 4 sau cùng: đó là bước duy nhất có thể khóa bạn ở ngoài.
1. Mật khẩu dài và duy nhất
Nếu bạn vẫn dùng mật khẩu của lần đăng nhập đầu, hãy đổi trong trang quản lý sang một mật khẩu dài (từ 20 ký tự, lấy từ trình quản lý mật khẩu). Mọi bước dưới đây đều giả định bản thân mật khẩu không thể đoán được.
2. Bật xác thực ở cấp mạng (NLA)
Với NLA, Windows kiểm tra thông tin đăng nhập của bạn trước khi tạo phiên và vẽ màn hình đăng nhập. Các kết nối chưa xác thực không bao giờ chạm tới mã desktop, nơi từng có những lỗi RDP nổi tiếng nhất. Kiểm tra trạng thái hiện tại:
(Get-CimInstance -Namespace root/cimv2/TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired
1 nghĩa là NLA đang bật. Nếu bạn thấy 0, hãy bật nó:
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
Các ứng dụng Remote Desktop hiện nay cho Windows, macOS và Linux (xfreerdp) đều hỗ trợ NLA. Lần kết nối tiếp theo sẽ hỏi mật khẩu trước khi hiện màn hình từ xa.
3. Khóa tài khoản sau các lần thử thất bại
Bản cài mặc định của Windows Server 2022 không bao giờ khóa tài khoản, dù có bao nhiêu mật khẩu sai. Trên các máy chủ cài từ image của chúng tôi kể từ ngày 24 tháng 10 năm 2026, giới hạn bên dưới đã được đặt sẵn; với máy chủ cũ hơn, hãy tự đặt:
net accounts /lockoutthreshold:5 /lockoutwindow:15 /lockoutduration:15
net accounts
Năm mật khẩu sai trong 15 phút sẽ khóa tài khoản trong 15 phút. Chúng tôi đã thử: sau năm lần thất bại, cả người dùng thường lẫn Administrator tích hợp đều bị khóa. Khóa tự mở, nên một buổi sáng gõ nhầm nhiều chỉ làm bạn mất mười lăm phút, không mất server.
4. Chỉ cho phép RDP từ địa chỉ IP của bạn
Bước này loại gần hết nhiễu. Quy tắc của Windows Firewall nhận một danh sách địa chỉ từ xa; hãy điền địa chỉ của bạn. Xem IP công khai hiện tại trên bất kỳ trang "IP của tôi là gì" nào, rồi:
$myIp = '203.0.113.10' # your public IP; several: '203.0.113.10','198.51.100.0/24'
Get-NetFirewallPortFilter | Where-Object LocalPort -eq 3389 | Get-NetFirewallRule | Set-NetFirewallRule -RemoteAddress $myIp
Lệnh này tìm mọi quy tắc vào trên cổng 3389, không chỉ nhóm tích hợp "Remote Desktop". Điều đó quan trọng: các máy chủ cài từ image của chúng tôi trước ngày 24 tháng 10 năm 2026 có thêm quy tắc tên "EQVPS RDP 3389" mở cổng cho tất cả, và phần mềm khác cũng có thể thêm quy tắc riêng. Nếu bạn chỉ giới hạn nhóm tích hợp, quy tắc như vậy vẫn giữ cổng mở. Chính chúng tôi đã mắc lỗi đó khi thử. Kiểm tra kết quả:
Get-NetFirewallPortFilter | Where-Object LocalPort -eq 3389 | Get-NetFirewallRule |
Select-Object DisplayName, @{n='Remote';e={($_ | Get-NetFirewallAddressFilter).RemoteAddress}}
Mỗi dòng phải hiện địa chỉ của bạn. Trong lần thử của chúng tôi, kết nối từ bất kỳ địa chỉ nào khác đều không có phản hồi, còn địa chỉ được phép thì vào được.
Trên gói NAT cũng vậy. Việc chuyển tiếp từ cổng riêng của bạn giữ nguyên địa chỉ thật, nên hãy cho phép IP công khai của chính bạn.
Nếu IP của bạn đổi, RDP cũng ngừng trả lời bạn. Mở bảng điều khiển trình duyệt từ trang quản lý (không đi qua RDP hay tường lửa), đăng nhập và chạy lệnh với địa chỉ mới. Để gỡ hẳn danh sách, dùng -RemoteAddress Any.
5. Xem ai đang cố vào
Đăng nhập thất bại là sự kiện 4625 trong nhật ký Security. Lệnh này hiện tên tài khoản và địa chỉ của từng lần thử:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20 |
Select-Object TimeCreated, @{n='User';e={$_.Properties[5].Value}}, @{n='SourceIP';e={$_.Properties[19].Value}}
Trước khi có danh sách IP, hãy chờ một dòng liên tục các tên Administrator, admin, user từ những địa chỉ lạ. Sau đó, danh sách sẽ im lặng.
Những việc không đáng làm
- Đổi cổng RDP. Trên gói có IPv4 riêng, việc này chỉ giảm nhiễu nhật ký; trình quét nhanh chóng tìm ra cổng mới. Trên gói NAT, nó làm hỏng truy cập vì chuyển tiếp đi tới 3389.
- Tắt tường lửa "cho chạy được". Nếu RDP ngừng trả lời sau khi đổi quy tắc, hãy sửa quy tắc từ bảng điều khiển trình duyệt.
Luôn cập nhật
Những sự cố RDP nghiêm trọng nhất đến từ lỗi giao thức, không phải mật khẩu. Windows Server 2022 nhận cập nhật bảo mật đến ngày 14 tháng 10 năm 2031, nên hãy để Windows Update bật và khởi động lại khi được yêu cầu.
Image là Windows Server 2022 với giấy phép của chính bạn (BYOL hoạt động thế nào). Các gói bắt đầu từ Windows-Small: 4 vCPU, 4 GB RAM, 50 GB, $11/tháng với NAT. Có IPv4 riêng, Windows Small-IP giá $28/tháng. Cả bốn gói đều có trên trang Windows VPS. Để có SSH bên cạnh RDP, xem OpenSSH trên Windows Server.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.