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.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.