Cách thiết lập Rule trên Firewall để chặn IP Remote Access vào Windows Server

Hướng dẫn cấu hình Windows Firewall

Chặn kết nối Inbound không được phép và chỉ cho phép
các IP/Subnet tin cậy truy cập dịch vụ cần thiết

1. Mục đích

Tài liệu này hướng dẫn cấu hình Windows Defender Firewall
nhằm hạn chế các kết nối từ bên ngoài vào Windows Server.

  • Chặn kết nối Inbound mặc định.
  • Chỉ cho phép các IP/Subnet tin cậy truy cập dịch vụ cần thiết.
  • Giới hạn truy cập vào port được chỉ định.
  • Kiểm tra Firewall Rule sau khi cấu hình.
  • Không công khai địa chỉ IP thực tế trong tài liệu.
Lưu ý bảo mật:
Các địa chỉ IP thật không được hiển thị trong tài liệu.
Thay vào đó, tài liệu sử dụng các placeholder như
TRUSTED_SUBNET_1,
TRUSTED_SUBNET_2
TRUSTED_SUBNET_3.

2. Mô hình hoạt động

                    INTERNET
                        |
          +-------------+-------------+
          |                           |
   IP/Subnet được phép         IP không được phép
          |                           |
          v                           v
   +--------------+             +--------------+
   | Windows      |             | Windows      |
   | Server       |             | Server       |
   |              |             |              |
   | TCP PORT     |             | Firewall     |
   | ALLOW        |             | BLOCK        |
   +--------------+             +--------------+
Nguồn kết nối Port Kết quả
TRUSTED_SUBNET_1 PORT_CUSTOM ALLOW
TRUSTED_SUBNET_2 PORT_CUSTOM ALLOW
TRUSTED_SUBNET_3 PORT_CUSTOM ALLOW
IP khác PORT_CUSTOM BLOCK
IP bất kỳ Port khác BLOCK

3. Truy cập Server thông qua KVM

Trước khi thay đổi cấu hình Firewall, cần đảm bảo Server
có thể truy cập thông qua KVM Console.

KVM cho phép truy cập trực tiếp vào Server trong trường hợp:

  • Firewall cấu hình sai.
  • RDP bị mất kết nối.
  • IP quản trị bị chặn nhầm.
  • Port Remote Desktop cấu hình không chính xác.
Khuyến nghị:
Luôn đảm bảo có quyền truy cập KVM hoặc Console trước khi
thực hiện thay đổi lớn đối với Windows Firewall.

4. Chặn kết nối Inbound mặc định

Mở PowerShell với quyền Administrator
và chạy:

Set-NetFirewallProfile `
    -Profile Domain,Private,Public `
    -DefaultInboundAction Block

Kiểm tra cấu hình

Get-NetFirewallProfile |
    Format-Table Name,Enabled,DefaultInboundAction

Kết quả mong muốn:

Name     Enabled DefaultInboundAction
----     ------- --------------------
Domain   True    Block
Private  True    Block
Public   True    Block

5. Tạo Firewall Rule cho IP được phép

Giả sử hệ thống có các subnet tin cậy:

  • TRUSTED_SUBNET_1
  • TRUSTED_SUBNET_2
  • TRUSTED_SUBNET_3

Dịch vụ cần cho phép truy cập sử dụng port:
PORT_CUSTOM

New-NetFirewallRule `
    -DisplayName "Allow Trusted IPs - Custom Service" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort PORT_CUSTOM `
    -RemoteAddress "TRUSTED_SUBNET_1","TRUSTED_SUBNET_2","TRUSTED_SUBNET_3" `
    -Action Allow `
    -Profile Any
Lưu ý:
Khi triển khai thực tế, thay các placeholder bằng
IP/Subnet và port thực tế của hệ thống.

6. Kiểm tra Firewall Rule

Kiểm tra Rule có tồn tại và đang được Enable:

Get-NetFirewallRule `
    -DisplayName "Allow Trusted IPs - Custom Service" |
    Format-List DisplayName,Enabled,Direction,Action,Profile

Kết quả cần có:

DisplayName : Allow Trusted IPs - Custom Service
Enabled     : True
Direction   : Inbound
Action      : Allow
Profile     : Any

7. Kiểm tra Port

Get-NetFirewallRule `
    -DisplayName "Allow Trusted IPs - Custom Service" |
    Get-NetFirewallPortFilter |
    Format-List Protocol,LocalPort,RemotePort

Cần xác nhận:

Protocol  : TCP
LocalPort : PORT_CUSTOM

8. Kiểm tra IP được phép

Get-NetFirewallRule `
    -DisplayName "Allow Trusted IPs - Custom Service" |
    Get-NetFirewallAddressFilter |
    Format-List RemoteAddress
Khuyến nghị:
Khi chụp ảnh màn hình hoặc chia sẻ kết quả ra bên ngoài,
cần che hoặc thay thế IP thật bằng placeholder.

9. Kiểm tra dịch vụ đang Listen

Firewall Rule chỉ cho phép kết nối. Dịch vụ trên Server
vẫn phải thực sự Listen trên port tương ứng.

Get-NetTCPConnection `
    -LocalPort PORT_CUSTOM `
    -State Listen

Hoặc:

netstat -ano | findstr ":PORT_CUSTOM"

Kết quả mong muốn:

TCP    0.0.0.0:PORT_CUSTOM    0.0.0.0:0    LISTENING

10. Kiểm tra kết nối

10.1. Từ IP được phép

Test-NetConnection SERVER_IP -Port PORT_CUSTOM

Kết quả mong muốn:

TcpTestSucceeded : True

10.2. Từ IP không được phép

Test-NetConnection SERVER_IP -Port PORT_CUSTOM

Kết quả mong muốn:

TcpTestSucceeded : False
Nếu IP được phép kết nối thành công và IP không được phép
bị từ chối, Firewall Rule đang hoạt động theo đúng thiết kế.

11. Kiểm tra các Firewall Rule Allow khác

Việc đặt Default Inbound Action là Block không tự động
vô hiệu hóa các Firewall Rule Allow đang tồn tại.

Kiểm tra các Rule Inbound đang được phép:

Get-NetFirewallRule `
    -Direction Inbound `
    -Action Allow `
    -Enabled True |
    Select-Object DisplayName,Profile |
    Format-Table -AutoSize
Cảnh báo:
Không nên vô hiệu hóa toàn bộ các Firewall Rule Allow
trên Production Server nếu chưa kiểm tra kỹ.
Có thể làm gián đoạn các dịch vụ đang hoạt động.

12. Khuyến nghị bảo mật

  • Sử dụng nguyên tắc Default Deny.
  • Chỉ mở các port thực sự cần thiết.
  • Giới hạn nguồn truy cập bằng IP Allowlist.
  • Tắt các Firewall Rule không sử dụng.
  • Sử dụng VPN cho truy cập quản trị nếu có thể.
  • Bật MFA cho tài khoản quản trị.
  • Giám sát Windows Event Logs.
  • Giám sát các lần đăng nhập thất bại.
  • Duy trì quyền truy cập KVM hoặc Console dự phòng.

13. Checklist nghiệm thu

  • Windows Firewall đang được Enable.
  • Default Inbound Action là Block.
  • Firewall Rule cần thiết đang Enabled.
  • Rule có Direction là Inbound.
  • Rule có Action là Allow.
  • Rule giới hạn đúng port.
  • Rule giới hạn đúng IP/Subnet.
  • Dịch vụ đang Listen trên port tương ứng.
  • IP được phép có thể kết nối.
  • IP không được phép bị chặn.
  • Có quyền truy cập KVM để xử lý sự cố.
  • IP thật không xuất hiện trong tài liệu chia sẻ.

14. Kết luận

Giải pháp được khuyến nghị là sử dụng mô hình
Default Deny: mặc định chặn các kết nối
Inbound, sau đó chỉ tạo các Firewall Rule Allow cho
dịch vụ và nguồn truy cập thực sự cần thiết.

Trong các tài liệu được chia sẻ bên ngoài, không nên công khai
IP thật của Server hoặc các IP Allowlist. Thay vào đó, sử dụng
các placeholder như:

  • SERVER_IP
  • TRUSTED_SUBNET_1
  • TRUSTED_SUBNET_2
  • TRUSTED_SUBNET_3
  • PORT_CUSTOM
Kết quả cuối cùng:
Chỉ các nguồn truy cập được cấp quyền mới có thể kết nối
đến dịch vụ được chỉ định; các nguồn khác sẽ bị Windows Firewall
từ chối theo chính sách Inbound mặc định.
Windows Server Security Guide · Windows Defender Firewall