EQVPS

Cách cấu hình Windows Firewall trên VPS: mở cổng, chỉ cho phép một IP, xem cái gì bị chặn

Mở một cổng trên Windows Server 2022, giới hạn nó cho địa chỉ IP của riêng bạn, bật ping, ghi lại các kết nối bị chặn và sao lưu quy tắc, tất cả chỉ với vài lệnh PowerShell. Chúng tôi thử từng quy tắc từ một máy thứ hai để chắc chắn nó thực sự mở hoặc đóng cổng.

Windows Server được giao với tường lửa đã bật, và đó là mặc định đúng: mọi thứ cố kết nối từ bên ngoài đều bị từ chối, trừ khi có quy tắc cho qua. Bạn sẽ phải thay đổi khi chạy thứ của riêng mình, như một ứng dụng web trên cổng 8080 hay một dịch vụ chỉ văn phòng của bạn được truy cập. Hướng dẫn này làm mọi thứ bằng PowerShell trên Windows Server 2022. Chúng tôi đã thử từng quy tắc trên image của mình và kiểm tra từ một máy thứ hai, nên bạn biết nó thực sự mở hoặc đóng cổng.

Mở PowerShell với quyền quản trị. Nếu chưa làm, hãy bảo vệ RDP trước: hướng dẫn đó nói về việc giới hạn chính Remote Desktop.

1. Xem cái gì đang bật

Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory

Trên máy chủ mới của chúng tôi, cả ba hồ sơ (Domain, Private, Public) đều bật, và card mạng nằm trong Public. DefaultInboundAction hiện NotConfigured, tức hành vi mặc định của Windows: chặn chiều vào, cho phép chiều ra. Vì vậy, quy tắc có tác dụng là quy tắc của hồ sơ Public.

Để xem cái gì được phép đi vào:

Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
    Group-Object DisplayGroup | Sort-Object Count -Descending |
    Select-Object Count, Name -First 8

Chúng tôi đếm được 54 quy tắc chiều vào đang bật. Phần lớn thuộc về chính Windows (Core Networking, Cast to Device, mDNS), cộng ba quy tắc của Remote Desktop. Ping không nằm trong số đó.

2. Mở một cổng

Giả sử ứng dụng của bạn lắng nghe trên cổng TCP 8080:

New-NetFirewallRule -DisplayName 'Web app 8080' -Direction Inbound `
    -Protocol TCP -LocalPort 8080 -Action Allow

Quy tắc có hiệu lực ngay khi được tạo. Từ máy thứ hai của chúng tôi, cổng 8080 chuyển từ bị chặn sang mở, còn cổng 8081, nơi cũng có một chương trình đang lắng nghe, vẫn bị chặn. Quy tắc không có -Profile áp dụng cho mọi hồ sơ, kể cả Public.

Với một dải hoặc danh sách, dùng -LocalPort 8000-8010 hoặc -LocalPort 80,443. Với UDP, đổi -Protocol.

3. Chỉ cho phép một số địa chỉ

Phần lớn dịch vụ không cần nhận kết nối từ cả internet. Giới hạn quy tắc cho những địa chỉ cần kết nối:

Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10, 198.51.100.0/24

Chúng tôi thử cả hai trường hợp. Với một địa chỉ lạ trong -RemoteAddress, máy thử của chúng tôi không kết nối được nữa. Khi thêm địa chỉ của chính nó, nó kết nối được. Dùng cùng tham số đó trên các quy tắc Remote Desktop để chỉ văn phòng của bạn dùng được RDP. Nếu IP ở nhà bạn hay đổi, hãy cân nhắc kỹ trước khi làm vậy với RDP.

4. Bật ping

Mặc định Windows không trả lời ping. Quy tắc có sẵn nhưng đang tắt:

Enable-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)'

Sau đó máy chủ của chúng tôi trả lời ping ngay. Các công cụ giám sát kiểm tra trạng thái bằng ping cần điều này. Để tắt lại, dùng Disable-NetFirewallRule với cùng tên.

5. Ghi lại những gì bị chặn

Khi có thứ không kết nối được mà bạn không rõ vì sao, hãy để tường lửa ghi lại những gì nó loại bỏ:

Set-NetFirewallProfile -Profile Public -LogBlocked True -LogMaxSizeKilobytes 4096
Get-Content C:\Windows\System32\LogFiles\Firewall\pfirewall.log -Tail 20

Mỗi lần thử bị chặn trở thành một dòng như sau:

2026-10-25 02:07:25 DROP TCP 198.51.100.7 203.0.113.25 43386 445 60 S 2112839481 0 64240 - - - RECEIVE 4

Đọc như sau: ngày giờ, hành động, giao thức, địa chỉ nguồn, địa chỉ máy chủ của bạn, cổng nguồn, cổng đích. Hãy kiên nhẫn: Windows ghi nhật ký theo lô, và các dòng thử nghiệm của chúng tôi xuất hiện khoảng một phút sau các lần thử. Giới hạn 4 MB giữ cho tệp không phình mãi.

6. Sao lưu và dọn dẹp

Trước một thay đổi lớn, lưu toàn bộ quy tắc vào một tệp:

netsh advfirewall export C:\fw-backup.wfw

Bản xuất của chúng tôi nặng 148 KB. netsh advfirewall import C:\fw-backup.wfw khôi phục chính xác bộ quy tắc đó và thay thế những gì đang có. Xóa theo tên một quy tắc bạn không còn cần:

Remove-NetFirewallRule -DisplayName 'Web app 8080'

Nếu bạn tự khóa mình ở ngoài

Nếu một quy tắc cắt mất Remote Desktop của chính bạn, hãy mở console trong trang quản lý. Nó không đi qua RDP, nên bạn có thể đăng nhập và chạy Remove-NetFirewallRule hoặc Set-NetFirewallRule để hoàn tác.

NAT hay IP riêng

Trên các gói NAT, internet đến máy chủ của bạn qua một cổng riêng duy nhất, dẫn tới Remote Desktop. Các cổng khác vẫn không truy cập được từ bên ngoài, dù bạn cho phép gì trong Windows Firewall. Để phục vụ website hoặc nhận kết nối trên cổng khác, bạn cần IPv4 riêng: Windows Small-IP (4 vCPU, 4 GB, 50 GB, $28/tháng) cho bạn một IP mở mọi cổng, và khi đó Windows Firewall là bên quyết định. Windows-Small giá $11/tháng với NAT. Cả bốn gói Windows có trên trang Windows VPS, thanh toán bằng USDT, USDC hoặc ETH trên mạng Base, Ethereum hoặc Polygon.

FAQ

Windows Firewall có bật sẵn trên VPS Windows không?

Có. Trên image Windows Server 2022 của chúng tôi, cả ba hồ sơ đều bật, card mạng nằm trong hồ sơ Public, và kết nối đến bị chặn trừ khi có quy tắc cho phép. Kết nối đi được cho phép.

Vì sao máy chủ Windows của tôi không trả lời ping?

Windows chặn ping theo mặc định: quy tắc File and Printer Sharing (Echo Request - ICMPv4-In) có sẵn nhưng đang tắt. Bật nó bằng một lệnh PowerShell và máy chủ trả lời ngay.

Tôi đã mở cổng trong Windows Firewall nhưng từ internet vẫn đóng. Vì sao?

Trên gói NAT, chỉ cổng riêng của bạn đến được máy chủ, và cổng đó dẫn tới Remote Desktop. Các cổng khác không truy cập được từ internet, dù tường lửa nói gì. Muốn chạy website hay dịch vụ khác trên Windows, hãy dùng gói có IPv4 riêng.

Nếu tôi tự khóa mình khỏi RDP bằng một quy tắc tường lửa thì sao?

Mở bảng điều khiển console trong trang quản lý. Nó hoạt động không cần RDP, nên bạn có thể đăng nhập từ đó và sửa hoặc xóa quy tắc. Trước khi giới hạn RDP cho một IP, hãy chắc chắn địa chỉ của bạn không thay đổi.

Làm sao xem tường lửa đang chặn gì?

Bật ghi nhật ký kết nối bị loại bỏ cho hồ sơ Public. Khi đó Windows ghi mọi lần thử bị chặn vào pfirewall.log. Trong thử nghiệm của chúng tôi, các dòng xuất hiện sau khoảng một phút, vì Windows ghi nhật ký theo lô.

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.