Windows Firewall và ứng dụng nghiệp vụ ── đăng ký quy tắc nhận từ trình cài đặt
· Go Komura · Windows, Firewall, Mạng, Bảo mật, Ứng dụng nghiệp vụ, Trình cài đặt, PowerShell, Hệ thống thông tin
“Máy phát triển chạy bình thường, đưa vào khách thì máy khách không nối được máy chủ.” “Lần khởi động đầu có cảnh báo gì đó, hình như người hiện trường đã hủy.” “netstat thì cổng đang chờ, nhưng PC bên cạnh không tới được.” ── Trên hiện trường triển khai ứng dụng nghiệp vụ, kiểu hỏi “không giao tiếp được” này là quá quen. Và nguyên nhân vẫn ngồi ở hàng trên là Windows Firewall (Windows Defender Firewall).
Khó chịu ở chỗ máy phát triển không thấy vấn đề. Trên máy phát triển, lúc gỡ lỗi Visual Studio bạn tự bấm cho phép, hoặc bản thân bạn là quản trị viên, nên xuất xưởng mà không nhận ra chặn nhận mặc định. Phía khách, người thao tác là người dùng thường không có quyền quản trị viên, mạng được quản bằng GPO. Không phải “cái đáng ra chạy thì không chạy”, thực tế là “máy phát triển tình cờ đang chạy”.
Bài viết này hướng tới nhà phát triển ứng dụng nghiệp vụ tự làm, khi đối mặt “khách không giao tiếp được”, và nhân viên IT doanh nghiệp vừa và nhỏ nhận những hỏi đó. Nó nắm tối thiểu hành vi mặc định và cơ chế hồ sơ của Windows Firewall, rồi sắp xếp thiết kế quy tắc nhận, thực tế đăng ký từ trình cài đặt, quy trình khoanh vùng, và lưu ý dưới quản lý GPO/Intune, dựa trên nguồn gốc tính đến tháng 8 năm 2026.
1. Kết luận trước
- Mặc định Windows Firewall là “nhận thì chặn, gửi thì cho phép”. Lưu lượng nhận không phải hồi đáp yêu cầu bị hủy trừ khi khớp quy tắc.1
- Quy tắc nhận chỉ cần cho ứng dụng kiểu máy chủ đang chờ cổng. Ứng dụng máy khách chỉ tự kết nối đi vẫn giao tiếp được với mặc định. Hãy khoanh vùng từ đây trước.1
- Có ba hồ sơ (Domain/Private/Public). Domain tự áp khi phát hiện domain controller; Public là mặc định của mạng chưa nhận diện. Quy tắc bật/tắt theo từng hồ sơ.1
- Đừng giao vận hành thật cho hộp thoại “cảnh báo quan trọng” đó. Quản trị viên hủy thì tạo quy tắc chặn; với người dùng không có quyền quản trị viên, bấm nút nào cũng tạo quy tắc chặn. Hộp thoại không hiện lại cho đến khi xóa quy tắc đã tạo.2
- Kết luận là “quy tắc nhận của ứng dụng nghiệp vụ đăng ký từ trình cài đặt”. Bản thân Microsoft khuyến nghị đặt quy tắc trước lần khởi động đầu, và tắt thông báo nhận.2
- Thiết kế quy tắc theo quyền tối thiểu. Lấy chương trình + giao thức + cổng làm trục, giới hạn hồ sơ vào Domain/Private, thu hẹp IP từ xa vào subnet cần thiết. Đường dẫn chương trình không dùng ký tự đại diện.23
- Khoanh vùng theo thứ tự Test-NetConnection → Get-NetFirewallRule → pfirewall.log. Nhật ký firewall mặc định không ghi; chỉ khi bật ghi gói bị hủy thì mới ra.456
- Tắt toàn bộ bằng dừng dịch vụ nằm ngoài hỗ trợ. Dưới quản lý GPO/Intune, “gộp quy tắc cục bộ” có thể đã tắt, khi đó quy tắc cục bộ không có hiệu. Hãy xin IT phân phối tập trung quy tắc.12
Bản đồ tri thức của bài viết này
Mặc định Windows Firewall là chặn nhận và cho phép gửi; quy tắc nhận chỉ cần cho ứng dụng nghiệp vụ kiểu máy chủ đang chờ cổng. Ứng dụng không có quy tắc mà chờ thì hiện hộp thoại cảnh báo quan trọng, và tùy thao tác có thể nung quy tắc chặn thành nguyên nhân sự cố không giao tiếp được, nên nguyên tắc là đăng ký quy tắc nhận từ trình cài đặt. Dưới quản lý GPO/Intune, gộp quy tắc cục bộ có thể tắt, khiến quy tắc đăng ký cục bộ không được áp.
flowchart LR
accTitle: Bản đồ tri thức Windows Firewall và ứng dụng nghiệp vụ
accDescr: Sơ đồ cho thấy quan hệ Windows Firewall, quy tắc nhận, ứng dụng kiểu chờ, hộp thoại cảnh báo quan trọng, trình cài đặt và quyền quản trị viên, thu hẹp quy tắc (chỉ định chương trình, giới hạn IP từ xa), gộp quy tắc cục bộ, sự cố không giao tiếp được và lệnh khoanh vùng
windows_firewall["Windows Firewall"]
inbound_rule["Quy tắc nhận"]
listen_app["Ứng dụng nghiệp vụ kiểu chờ"]
installer["Trình cài đặt"]
network_profile["Hồ sơ mạng"]
communication_failure["Sự cố #quot;không giao tiếp được#quot;"]
firewall_notification["Hộp thoại #quot;cảnh báo quan trọng#quot;"]
exe_path_change["Đổi đường dẫn tệp thực thi"]
pfirewall_log["Nhật ký firewall (pfirewall.log)"]
group_policy["Group Policy"]
intune["Microsoft Intune"]
local_policy_merge["Gộp chính sách cục bộ"]
mpssvc["Dịch vụ firewall (MpsSvc)"]
port_rule["Quy tắc chỉ định cổng"]
over_permission["Cho phép thừa của quy tắc"]
test_netconnection["Test-NetConnection"]
get_netfirewallrule["Get-NetFirewallRule"]
unsolicited_inbound["Giao tiếp nhận chưa yêu cầu"]
netsh_advfirewall["netsh advfirewall"]
new_netfirewallrule["New-NetFirewallRule"]
admin_rights["Quyền quản trị"]
remote_ip_scope["Giới hạn IP từ xa"]
program_rule["Quy tắc chỉ định chương trình"]
mpssvc_stop["Dừng dịch vụ MpsSvc"]
firewall_disable["Tắt firewall"]
named_pipe["Named pipe"]
smb_445["SMB (TCP 445)"]
get_netconnectionprofile["Get-NetConnectionProfile"]
block_rule["Quy tắc chặn"]
notify_disable["Tắt thông báo nhận"]
service_rule["Quy tắc chỉ định dịch vụ"]
profile_limit["Giới hạn hồ sơ"]
updater_reregistration["Đăng ký lại quy tắc lúc cập nhật"]
netstat["netstat"]
listen_app -->|"yêu cầu"| inbound_rule
installer -->|"khuyến nghị cho"| inbound_rule
network_profile -.->|"có thể gây"| communication_failure
firewall_notification -.->|"có thể gây"| communication_failure
exe_path_change -.->|"có thể gây"| communication_failure
communication_failure -->|"xác minh bằng"| pfirewall_log
windows_firewall -->|"cấu hình bằng"| group_policy
windows_firewall -->|"cấu hình bằng"| intune
inbound_rule -.->|"yêu cầu"| local_policy_merge
mpssvc -->|"triển khai"| windows_firewall
windows_firewall -->|"sử dụng"| network_profile
port_rule -.->|"có thể gây"| over_permission
exe_path_change -.->|"có thể gây"| firewall_notification
firewall_notification -->|"cấu hình bằng"| group_policy
communication_failure -->|"xác minh bằng"| test_netconnection
communication_failure -->|"xác minh bằng"| get_netfirewallrule
windows_firewall -->|"ngăn chặn"| unsolicited_inbound
inbound_rule -->|"cấu hình bằng"| netsh_advfirewall
inbound_rule -->|"cấu hình bằng"| new_netfirewallrule
inbound_rule -->|"yêu cầu"| admin_rights
remote_ip_scope -->|"giảm thiểu"| over_permission
program_rule -->|"giảm thiểu"| over_permission
firewall_notification -->|"không khuyến nghị"| inbound_rule
mpssvc_stop -->|"không khuyến nghị"| firewall_disable
remote_ip_scope -->|"khuyến nghị cho"| over_permission
program_rule -->|"khuyến nghị cho"| over_permission
named_pipe -->|"sử dụng"| smb_445
network_profile -->|"xác minh bằng"| get_netconnectionprofile
firewall_notification -.->|"có thể gây"| block_rule
block_rule -->|"có thể gây"| communication_failure
notify_disable -->|"ngăn chặn"| firewall_notification
service_rule -->|"giảm thiểu"| over_permission
profile_limit -->|"giảm thiểu"| over_permission
updater_reregistration -->|"khuyến nghị cho"| exe_path_change
communication_failure -->|"xác minh bằng"| netstat
Trong sơ đồ, đường liền nét biểu thị quan hệ luôn đúng và đường nét đứt biểu thị quan hệ có điều kiện (điều kiện nằm trong phần giải thích từng quan hệ trên trang chi tiết). Danh sách đầy đủ các quan hệ (tổng 35, kèm bằng chứng và mức chắc chắn) cùng định nghĩa các khái niệm chính được tập hợp tại trang chi tiết bản đồ tri thức (bằng tiếng Nhật). Dữ liệu: JSON-LD / Turtle
2. Nắm đúng hành vi mặc định ── nhận chặn mặc định, gửi cho phép mặc định
Trước hết nắm đúng nền. Windows Firewall là firewall kiểu host bật mặc định trên mọi ấn bản, và hành vi mặc định gom trong hai dòng sau.1
- Nhận (inbound): chặn hết trừ khi là hồi đáp yêu cầu (solicited) hoặc khớp quy tắc
- Gửi (outbound): cho phép hết trừ khi khớp quy tắc
Từ hai dòng đó ra khoanh vùng quan trọng nhất với ứng dụng nghiệp vụ. Quy tắc nhận chỉ cần cho “phía chờ”.
- Ứng dụng máy khách chỉ tự kết nối tới máy chủ web nội bộ, máy chủ DB, hệ thống lõi → theo nguyên tắc không cần quy tắc. Gói về của kết nối là “hồi đáp yêu cầu” nên đi qua mặc định.
- Ứng dụng kiểu máy chủ / dịch vụ Windows mở cổng và chờ kết nối bằng TCP, gRPC, giao thức riêng, v.v. → quy tắc nhận bắt buộc.
- Ngoài ra, cấu hình dùng named pipe từ xa là ngoại lệ. Named pipe từ xa không đi cổng của ứng dụng mà đi qua SMB (TCP 445), nên cái cần không phải quy tắc của ứng dụng mà quy tắc phía chia sẻ tệp (SMB).
- Ngoại lệ là môi trường bảo mật cao đổi tường minh gửi mặc định thành chặn. Cấu hình này chỉ có ở một số tổ chức, nhưng khi đó ứng dụng máy khách cũng cần xin quy tắc gửi.2
flowchart TB
accTitle: Quy tắc nhận chỉ cần cho phía đang chờ
accDescr: Chỉ kết nối với tư cách máy khách thì quy tắc nhận theo nguyên tắc không cần; mở cổng và chờ thì đăng ký quy tắc nhận từ trình cài đặt
APP["Rà giao tiếp của ứng dụng mình"] --> Q{"Có mở cổng và<br/>chờ kết nối không?"}
Q -- "Không chờ<br/>(chỉ kết nối với tư cách máy khách)" --> C1["Quy tắc nhận theo nguyên tắc không cần<br/>gói về của kết nối đi qua như 「hồi đáp」"]
Q -- "Có chờ<br/>(kiểu máy chủ, nhận callback)" --> S1["Quy tắc nhận bắt buộc<br/>→ đăng ký từ trình cài đặt (Chương 5)"]
C1 -.-> EX["Ngoại lệ: môi trường bảo mật cao<br/>chặn gửi mặc định thì xin quy tắc gửi"]
Hình 1: Mở cổng và chờ thì quy tắc nhận bắt buộc; chỉ kết nối với tư cách máy khách theo nguyên tắc không cần quy tắc.
Trường hợp “ứng dụng đáng ra là máy khách nhưng thực ra cũng đang chờ” (nhận callback kết quả, đầu nhận thông báo từ tiến trình khác, v.v.) dễ bỏ sót. Nếu cách ứng dụng tự làm đang chờ còn mơ hồ, hãy xác nhận luôn “Cách chọn giao tiếp liên tiến trình” như sắp xếp lúc thiết kế.
2.1. Hồ sơ và “vị trí mạng”
Quy tắc được áp theo hồ sơ mạng. Có ba hồ sơ.1
| Hồ sơ | Điều kiện áp | Nơi giả định |
|---|---|---|
| Domain | PC tham gia miền AD tự áp khi phát hiện domain controller. Không đặt tay được | Mạng miền nội bộ |
| Private | Quản trị viên đặt tay trên giao diện mạng | LAN nhà / văn phòng nhỏ |
| Public | Mặc định của mạng chưa nhận diện. Được thiết kế với giả định chặt nhất | Wi-Fi công cộng, khách sạn, sân bay |
Hồ sơ đang áp kiểm bằng Get-NetConnectionProfile; chuyển Private/Public bằng Set-NetConnectionProfile.1 Tai nạn quen trên hiện trường là môi trường workgroup phía khách bị phán “Public”, nên quy tắc nhận giới hạn Domain/Private không được áp. Khi “có quy tắc mà không thông”, hãy nghi khớp hồ sơ trước khi nghi nội dung quy tắc.
2.2. Thứ tự ưu tiên quy tắc
Khi có nhiều quy tắc, đánh giá không phải danh sách thứ tự có trọng số mà theo nguyên tắc nhất quán sau.2
- Quy tắc cho phép tường minh thắng chặn mặc định
- Quy tắc chặn tường minh thắng quy tắc cho phép xung đột
- Trong phạm vi không trái hai điều trên, quy tắc cụ thể hơn thắng
Hệ quả thực tế: “chỉ cần một quy tắc chặn ở đâu đó thì sau này thêm bao nhiêu quy tắc cho phép cũng không thắng”. Như chương sau, đúng quy tắc chặn đó được hộp thoại tạo lặng lẽ.
3. Bản chất hộp thoại “cảnh báo quan trọng” ── vì sao không giao được
Khi ứng dụng lần đầu bắt đầu chờ cổng (listen), nếu không có quy tắc cho phép cho ứng dụng đó cũng không có quy tắc do quản trị viên định nghĩa, Windows hiện hộp thoại quen “Cảnh báo bảo mật Windows quan trọng” kiểu “một số tính năng của ứng dụng này bị Windows Defender Firewall chặn”. Đặc tả hành vi rõ ràng.2
- Hiện với người dùng có quyền quản trị viên: “Cho phép truy cập” tạo quy tắc cho phép. Nhưng bấm “Hủy” thì tạo quy tắc chặn. Thường là hai quy tắc, TCP và UDP.
- Hiện với người dùng không có quyền quản trị viên: chọn lựa chọn nào cũng tạo quy tắc chặn.
- Mọi trường hợp, hộp thoại không hiện lại trừ khi xóa quy tắc đã tạo, và giao tiếp cứ bị chặn.
flowchart TB
accTitle: Nhánh hộp thoại cảnh báo quan trọng
accDescr: Không có quy tắc và thông báo nhận đang bật thì hộp thoại hiện; hủy hoặc thao tác của người dùng thường tạo quy tắc chặn rồi hộp thoại không hiện lại
L["Ứng dụng bắt đầu chờ cổng"] --> Q1{"Có quy tắc khớp<br/>ứng dụng đó không?"}
Q1 -- "có" --> R1["Theo quy tắc<br/>(hộp thoại không hiện)"]
Q1 -- "không" --> Q2{"Thông báo nhận<br/>đang bật?"}
Q2 -- "tắt" --> R2["Chặn im lặng<br/>(không tạo quy tắc)"]
Q2 -- "bật" --> DLG["Hộp thoại 「cảnh báo quan trọng」"]
DLG -- "quản trị viên 「Cho phép truy cập」" --> OK["Tạo quy tắc cho phép"]
DLG -- "quản trị viên 「Hủy」" --> NG1["Tạo quy tắc chặn"]
DLG -- "người dùng không có quyền quản trị viên<br/>(thao tác nào cũng vậy)" --> NG2["Tạo quy tắc chặn"]
NG1 --> NEVER["Cho đến khi xóa quy tắc<br/>hộp thoại không hiện lại"]
NG2 --> NEVER
Hình 2: Hủy hộp thoại hoặc thao tác của người dùng thường nung quy tắc chặn; trừ khi xóa thì hộp thoại không hiện lại.
Nghĩa là hộp thoại trông như “cơ chế xin phép người dùng”, nhưng trên hiện trường ứng dụng nghiệp vụ nó làm việc như “cơ chế nung quy tắc chặn ngay lúc người dùng thường chạm”. Nếu người triển khai khởi động lần đầu bằng tài khoản quản trị viên và cho phép trên hộp thoại, quy tắc cho phép đã tạo có hiệu trên cả PC, nên người dùng thường từ hôm sau tạm giao tiếp được. Tai nạn vẫn còn ── khi người dùng thường lần đầu giẫm chỗ chờ mà kiểm lúc triển khai chưa đụng, khi hồ sơ mạng đang áp khác lúc triển khai, và khi cập nhật làm đổi đường dẫn exe (Chương 4, 5).
Bản thân Microsoft nêu rõ thực hành tốt nhất sau cho thiết bị người không phải quản trị viên dùng.2
- Đặt quy tắc cần thiết trước lần khởi động đầu của ứng dụng (trình cài đặt hoặc phân phối phía quản trị)
- Tắt thông báo nhận (tắt thông báo thì bản thân tạo quy tắc tự động lúc chạy không còn)
Tắt thông báo bằng Set-NetFirewallProfile -NotifyOnListen False, hoặc bằng Group Policy.7 “Hộp thoại hiện thì nhờ người hiện trường bấm cho phép” không phải quy trình vận hành mà là đặt chỗ tai nạn. Quy tắc nhận đăng ký lúc cài ── đó là kết luận của bài này, và khớp khuyến nghị của Microsoft.
4. Thiết kế quy tắc nhận ── chỉ định chương trình, cổng, dịch vụ
Thiết kế nội dung quy tắc sẽ đăng ký. Cách chỉ định có khoảng ba hệ, rồi quyết dùng một mình hay kết hợp.
| Cách chỉ định | Hợp khi | Điểm yếu / lưu ý |
|---|---|---|
Chỉ định chương trình (program= / -Program) |
Cổng chờ động hoặc nhiều cổng. Cấu hình bản thân ứng dụng desktop chờ | Chỉ chỉ định đường dẫn đầy đủ của exe, không ký tự đại diện2. Đổi đường dẫn khi cập nhật thì quy tắc mất đối tượng (mục 5.4) |
Chỉ định cổng (localport= / -LocalPort) |
Cổng cố định. Dễ khớp đơn xin IT và thiết lập thiết bị mạng | Cũng cho qua tiến trình khác chờ cùng cổng. Cần sổ cái số cổng |
Chỉ định dịch vụ (-Service) |
Tiến trình chờ chạy như dịch vụ Windows | Thu hẹp đối tượng bằng tên dịch vụ (tên ngắn)3. Không dùng được cho dạng khởi động exe trực tiếp |
| Kết hợp (chương trình + giao thức + cổng) | Dạng cơ bản của ứng dụng nghiệp vụ trên sản xuất | Càng nhiều điều kiện càng yếu trước đổi môi trường (đổi đường dẫn, cổng), nên hãy ghi nội dung quy tắc thành tài liệu2 |
Trên đó, chồng thêm giới hạn phạm vi. Khuyến nghị thiết kế của Microsoft cũng là “quy tắc nhận càng cụ thể càng tốt”.2
- Giới hạn hồ sơ: quy tắc nhận của ứng dụng nghiệp vụ chỉ dùng trong công ty giới hạn Domain/Private, không bật trên Public. Tránh tai nạn cổng chờ mở ra thế giới ngay lúc notebook nối Wi-Fi ngoài công ty.
- Giới hạn IP từ xa: nếu nguồn kết nối đã xác định, thu hẹp
-RemoteAddressvào subnet đó. Với mạng nhà / nhỏ, giới hạn bằng từ khóaLocalSubnetđược khuyến nghị.23 - Hướng và số quy tắc: nếu chỉ chờ TCP thì một quy tắc TCP là đủ. Đừng tạo quán tính cả TCP lẫn UDP như hộp thoại tự tạo.
“Chỉ từ đối tác cần, tới cổng cần, chỉ chương trình cần” ── thiết kế quy tắc nhận gom trong một câu quyền tối thiểu đó.
5. Thực tế đăng ký từ trình cài đặt ── netsh và New-NetFirewallRule
5.1. Tiền đề: cần quyền quản trị viên
Thêm/xóa quy tắc firewall là đổi thiết lập cả máy tính, nên cần chạy bằng quyền quản trị viên (tiến trình đã nâng).8 Trình cài đặt thường đã chạy với quyền quản trị viên, nên đặt đăng ký quy tắc vào xử lý cài là hợp lý. Nó không thành lý do chạy bản thân ứng dụng với quyền quản trị viên. Cách nghĩ ranh giới này được nói kỹ trong “Khi nào cần quyền quản trị viên”.
5.2. Đăng ký bằng netsh advfirewall
Cổ điển nhưng dễ gọi từ mọi trình cài đặt là netsh advfirewall firewall add rule.8
rem add rule vẫn thêm dù đã có quy tắc cùng tên, nên để tái chạy lúc
rem cài lại, sửa chữa, cập nhật, hãy xóa quy tắc cùng tên rồi đăng ký lại
netsh advfirewall firewall delete rule name="MyCompany OrderServer"
rem Quy tắc cho phép nhận: chỉ định chương trình + cổng + giới hạn hồ sơ
netsh advfirewall firewall add rule name="MyCompany OrderServer" dir=in action=allow program="C:\Program Files\MyCompany\OrderServer\OrderServer.exe" protocol=TCP localport=50051 profile=domain enable=yes
rem Lúc gỡ cài: xóa theo tên
netsh advfirewall firewall delete rule name="MyCompany OrderServer"
add rule không thay quy tắc cùng tên hiện có mà thêm cùng tên, nên nếu không chạy delete rule trước thì mỗi lần tái chạy quy tắc sinh sôi, và quy tắc cho phép cũ sống sót sau cập nhật đổi đường dẫn hay phạm vi (lần chạy đầu, delete rule đầu sẽ trả “không có quy tắc khớp” nhưng batch vẫn tiếp tục, nên thứ tự này không sao. Nếu trình cài đặt phán thành bại bằng mã thoát, hãy nhìn kết quả add rule ở cuối). Bạn cũng thu hẹp nguồn kết nối kiểu remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet.8 Xóa gom mọi quy tắc khớp tên, nên tên quy tắc hãy độc nhất với tiền tố công ty cho an toàn.
5.3. Đăng ký bằng PowerShell (New-NetFirewallRule)
Muốn kiểm soát mịn hơn thì dùng mô-đun NetSecurity. -DisplayName bắt buộc; -Profile chỉ định nhiều giá trị bằng dấu phẩy (không khoảng).3
# Đăng ký (chạy từ trình cài đặt ở trạng thái đã nâng). -Name là định danh độc nhất,
# nên tái chạy lúc cài lại, sửa chữa, cập nhật sẽ lỗi nếu tạo quy tắc cùng tên.
# Làm lũy đẳng bằng cách xóa quy tắc cùng tên hiện có rồi tạo lại
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue
New-NetFirewallRule -Name "MyCompany-OrderServer-In" `
-DisplayName "MyCompany OrderServer (TCP 50051 inbound)" `
-Direction Inbound -Action Allow `
-Program "C:\Program Files\MyCompany\OrderServer\OrderServer.exe" `
-Protocol TCP -LocalPort 50051 `
-Profile Domain,Private -RemoteAddress LocalSubnet
# Lúc gỡ cài: không lỗi dù không tồn tại
Remove-NetFirewallRule -Name "MyCompany-OrderServer-In" -ErrorAction SilentlyContinue
Có lý do nêu -Name tường minh. -Name là định danh độc nhất của quy tắc; bỏ thì được gán giá trị ngẫu nhiên. Tên hiển thị (-DisplayName) có thể đổi theo locale, nên khóa để kịch bản nhận diện quy tắc hãy dùng -Name — đó là hướng dẫn của Microsoft.3 Để trình gỡ cài chắc chắn chỉ xóa quy tắc của mình, hãy coi cố định -Name là bắt buộc.
5.4. Khi cập nhật làm đổi đường dẫn exe
Quy tắc chỉ định chương trình cố định đối tượng bằng đường dẫn đầy đủ. Nghĩa là đổi nơi cài hoặc tên exe khi cập nhật thì quy tắc còn đó nhưng mất đối tượng, và chờ lại bị chặn. Lúc đó exe đường dẫn mới bị coi là “ứng dụng không có quy tắc”, nên môi trường thông báo đang bật sẽ hiện lại hộp thoại Chương 3, và người dùng thường thao tác thì nung quy tắc chặn. Môi trường đã tắt thông báo theo khuyến nghị Chương 3 thì thất bại im lặng, hộp thoại cũng không hiện. Tai nạn đặc biệt dễ xảy ra với cách đặt vào thư mục mang số phiên bản, hoặc cách tự cập nhật làm chỗ đặt chạy.
flowchart TB
accTitle: Đổi đường dẫn exe khi cập nhật thì quy tắc mất đối tượng
accDescr: Quy tắc chỉ định chương trình cố định đường dẫn đầy đủ nên đổi nơi đặt thì mất đối tượng, rồi tùy thông báo nhận mà hộp thoại hiện lại hoặc chặn im lặng
V1["Đưa v1.0 vào<br/>quy tắc trỏ exe thư mục v1.0"] --> UP["Cập nhật đặt vào thư mục v1.1<br/>đường dẫn exe đang chạy đổi"]
UP --> MISS["Quy tắc đường dẫn cũ mất đối tượng<br/>(quy tắc còn đó nhưng không có hiệu)"]
MISS --> Q{"Thông báo nhận<br/>đang bật?"}
Q -- "bật" --> DLG["Hộp thoại hiện lại<br/>người dùng thường chạm thì quy tắc chặn"]
Q -- "tắt" --> SILENT["Hộp thoại cũng không hiện<br/>chặn im lặng"]
MISS -.->|"đối phó"| FIX["Cố định đường dẫn xuyên suốt cập nhật<br/>hoặc xử lý cập nhật xóa quy tắc cũ rồi đăng ký lại"]
Hình 3: Cập nhật đổi đường dẫn exe thì quy tắc cũ mất đối tượng; hãy cố định đường dẫn hoặc đăng ký lại lúc cập nhật.
Đối phó đơn giản, một trong hai:
- Cố định nơi cài, bố trí sao cho đường dẫn đầy đủ của exe không đổi xuyên suốt cập nhật
- Với cập nhật đổi đường dẫn, updater xóa quy tắc cũ rồi đăng ký lại bằng đường dẫn mới (chạy lệnh 5.2/5.3 cả trong xử lý cập nhật)
Với MSI, đăng ký quy tắc là custom action chạy sau khi đặt tệp (lúc gỡ cài thì custom action phía xóa) — đó là khuôn quen. Bộ công cụ như WiX còn phần mở rộng mô tả khai báo quy tắc firewall. Vị trí hiện thực đổi theo cách phân phối, nên xem thêm “Cách chọn cách phân phối ứng dụng Windows”. Tai nạn quen thuộc khác lúc triển khai khách — phát hiện nhầm của phần mềm diệt virus — nằm trong “Ứng phó phát hiện nhầm Microsoft Defender”.
6. Khắc phục sự cố ── luồng khoanh vùng “không giao tiếp được”
Cố định thứ tự khi nhận hỏi. Luồng tổng như sau.
flowchart TB
accTitle: Khoanh vùng không giao tiếp được
accDescr: Xác nhận lần lượt chờ phía máy chủ, khả năng tới nơi phía máy khách, khớp hồ sơ, quy tắc trên ActiveStore, rồi hủy DROP trên nhật ký
S["「Máy khách không giao tiếp được」"] --> N["Phía máy chủ: netstat -ano"]
N -- "không chờ" --> APP["Vấn đề trước firewall<br/>điều tra phía ứng dụng/dịch vụ"]
N -- "đang LISTENING" --> T["Phía máy khách: Test-NetConnection"]
T -- "TcpTestSucceeded=True" --> OTHER["Khả năng tới nơi bình thường<br/>điều tra tầng ứng dụng (xác thực, giao thức)"]
T -- "False" --> P["Phía máy chủ: Get-NetConnectionProfile<br/>xác nhận hồ sơ đang áp"]
P -- "không khớp đối tượng quy tắc" --> FIXP["Xem lại chỉ định hồ sơ của quy tắc"]
P -- "khớp" --> R["Get-NetFirewallRule -PolicyStore ActiveStore<br/>kiểm có quy tắc cho phép, có lẫn quy tắc chặn"]
R --> LOGCHK["Đo hủy (DROP) bằng pfirewall.log"]
Hình 4: Khoanh vùng tuần tự: netstat → Test-NetConnection → hồ sơ → quy tắc ActiveStore → pfirewall.log.
| Bước | Lệnh / thao tác | Việc xác nhận |
|---|---|---|
| 1. Xác nhận đang chờ (phía máy chủ) | netstat -ano |
Cổng đích có LISTENING không. Nếu không chờ thì là vấn đề trước firewall |
| 2. Xác nhận khả năng tới nơi (phía máy khách) | Test-NetConnection -ComputerName sv01 -Port 50051 |
TcpTestSucceeded có True không4 |
| 3. Xác nhận hồ sơ (phía máy chủ) | Get-NetConnectionProfile |
Hồ sơ đang áp có khớp hồ sơ đã bật quy tắc không1 |
| 4. Xác nhận quy tắc đang có hiệu (phía máy chủ) | Get-NetFirewallRule -PolicyStore ActiveStore |
Trong quy tắc “đang thật sự có hiệu” gồm cả nguồn GPO, có quy tắc cho phép đích không. Có lẫn quy tắc chặn từ hộp thoại không5 |
| 5. Xác nhận bằng nhật ký (phía máy chủ) | pfirewall.log | Gói tới cổng đích có bị hủy (DROP) không6 |
Bổ sung bước 4. Điều kiện cổng và chương trình nằm ở phía đối tượng bộ lọc chứ không phải thân quy tắc, nên truy vấn ngược từ cổng tới quy tắc đi qua bộ lọc.57
# Truy vấn ngược quy tắc liên quan cổng 50051
Get-NetFirewallPortFilter | Where-Object { $_.LocalPort -eq 50051 } | Get-NetFirewallRule
# Lần nguồn quy tắc (cục bộ hay GPO)
Get-NetFirewallRule -PolicyStore ActiveStore -TracePolicyStore |
Select-Object Name, DisplayName, PolicyStoreSourceType, PolicyStoreSource
Nhật ký firewall bước 5 (pfirewall.log) mặc định không ghi gì. Đường dẫn mặc định là %windir%\system32\logfiles\firewall\pfirewall.log, kích thước tối đa mặc định 4.096KB; chỉ khi bật một trong “ghi gói bị hủy vào nhật ký” hoặc “ghi kết nối thành công vào nhật ký” thì mới được ghi.6 Máy đơn bật như sau.6
netsh advfirewall set allprofiles logging droppedconnections enable
netsh advfirewall set allprofiles logging allowedconnections enable
Nhật ký là tệp văn bản, mỗi dòng ghi hủy (DROP) hay cho phép (ALLOW), giao thức, IP và cổng nguồn/đích, nên tại đây chốt được “SYN từ máy khách đã tới rồi bị hủy, hay bản thân chưa tới”. Ngoài ra, môi trường cấu hình nhật ký bằng chính sách đôi khi thiếu quyền ghi thư mục nhật ký (FullControl của dịch vụ mpssvc) nên tệp không được tạo; khi đó cần tạo thư mục và cấp ACL.6
Đào sâu hơn, bật chính sách kiểm toán “Filtering Platform Packet Drop” thì mỗi lần hủy ghi sự kiện Security 5152. Tuy nhiên khối lượng sự kiện rất lớn, nên Microsoft khuyên dùng sự kiện 5157 (kết nối Filtering Platform) ghi theo kết nối. Đây là công cụ chỉ bật trong lúc khoanh vùng, không dùng thường ngày.9
Cuối cùng, hãy rõ khoanh vùng không được làm. Tắt cả cục bằng dừng dịch vụ firewall (MpsSvc) nằm ngoài hỗ trợ, gây sự cố phía OS như menu Start không chạy, cập nhật ứng dụng Store thất bại. Nếu nhất định muốn tắt để kiểm, giữ dịch vụ chạy rồi tắt hồ sơ bằng Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False, xác nhận xong trả lại ngay.17 Và khi đã chốt nguyên nhân là firewall, đối phó không phải biến tắt thành vĩnh viễn mà là thêm đúng một quy tắc.
7. Lưu ý dưới quản lý tổ chức ── môi trường quy tắc cục bộ không có hiệu và cách xin
Dù trình cài đặt đăng ký quy tắc, có môi trường nó không có hiệu. Tổ chức quản firewall tập trung bằng GPO hoặc Intune (CSP) có thể tắt “gộp quy tắc cục bộ” (AllowLocalPolicyMerge) theo từng hồ sơ. Khi thiết lập này tắt, quy tắc do quản trị viên cục bộ (gồm trình cài đặt) tạo không được áp, và quy tắc của ứng dụng cần kết nối nhận bắt buộc phân phối tập trung từ GPO/CSP.2
flowchart TB
accTitle: Tắt gộp quy tắc cục bộ thì đăng ký của trình cài đặt không có hiệu
accDescr: Môi trường AllowLocalPolicyMerge tắt thì quy tắc cục bộ dù tồn tại cũng không được áp, nên chuyển sang phân phối tập trung bằng GPO hay CSP
GPOR["Quy tắc phân phối bằng GPO/Intune"] --> EFF["Tập quy tắc thật sự có hiệu<br/>(ActiveStore)"]
LOCAL["Quy tắc tạo cục bộ<br/>(gồm đăng ký của trình cài đặt)"] --> Q{"Gộp quy tắc cục bộ<br/>(AllowLocalPolicyMerge)"}
Q -- "bật (mặc định)" --> EFF
Q -- "tắt" --> DROP["Quy tắc tồn tại nhưng không được áp<br/>→ chuyển sang phân phối tập trung bằng GPO/CSP"]
Hình 5: Tắt gộp quy tắc cục bộ thì quy tắc của trình cài đặt không được áp; cần phân phối tập trung bằng GPO/CSP.
Sự chuẩn bị thực tế phía phát triển / triển khai như sau.
- Thiết kế đăng ký quy tắc của trình cài đặt theo kiểu “không thất bại” (bản thân đăng ký thành công nên không phát hiện bằng lỗi. Đưa xác nhận thông sau triển khai vào quy trình)
- Bằng bước 4 Chương 6 (
-TracePolicyStore), xác nhận nguồn quy tắc đang có hiệu là cục bộ hay GPO5 - Khi biết quy tắc cục bộ không có hiệu, chuyển sang xin phân phối quy tắc với bộ phận IT
Đơn xin hãy đưa đủ thông tin sau. Quy tắc firewall chỉ tạo được khi đủ hướng, chương trình, cổng, phạm vi, nên đây chính là “đặc tả mạng của ứng dụng nghiệp vụ”.
| Mục | Ví dụ ghi |
|---|---|
| Tên quy tắc (định danh) | MyCompany-OrderServer-In |
| Hướng | Nhận |
| Đường dẫn chương trình | C:\Program Files\MyCompany\OrderServer\OrderServer.exe |
| Giao thức / cổng | TCP 50051 |
| Dải IP từ xa | 172.16.10.0/24 (phân đoạn đặt máy khách nhận đơn) |
| Hồ sơ | Chỉ Domain |
| Mục đích / căn cứ | Nhận kết nối từ máy khách nhập đơn (tên hệ thống nghiệp vụ) |
| Điều kiện bãi bỏ | Xóa khi gỡ hệ thống này |
Nhìn từ phía IT, đơn xin có bảng này và không có khác nhau hoàn toàn về khối lượng việc. Ngược lại, “hãy mở” chỉ bằng số cổng dễ thành cho phép thừa như Chương 4. Ngoài ra, yêu cầu giao tiếp quanh chia sẻ tệp và xác thực trên môi trường miền cũng đang đổi vì siết khác firewall (bắt buộc ký, v.v.). Xem thêm “SMB signing và LDAP channel binding”.
8. Tóm tắt
- Mặc định Windows Firewall là chặn nhận, cho phép gửi. Quy tắc nhận chỉ cần cho ứng dụng kiểu máy chủ đang chờ; chỉ kết nối với tư cách máy khách thì theo nguyên tắc không cần.
- Quy tắc được áp theo hồ sơ (Domain/Private/Public). Nghi phạm số một của “có quy tắc mà không thông” là không khớp hồ sơ.
- Hộp thoại “cảnh báo quan trọng” tạo quy tắc chặn khi hủy hoặc khi người không có quyền thao tác, rồi không hiện lại. Đừng giao vận hành thật cho hộp thoại này.
- Quy tắc nhận của ứng dụng nghiệp vụ đăng ký từ trình cài đặt ── đó là nguyên tắc duy nhất. Đăng ký bằng quyền quản trị viên, hiện thực gồm cả xóa, cố định
-Name. - Quy tắc lấy chương trình + giao thức + cổng làm trục, thu hẹp bằng hồ sơ và IP từ xa. Đổi đường dẫn exe khi cập nhật thì đừng quên đăng ký lại quy tắc.
- Khoanh vùng máy móc theo thứ tự netstat → Test-NetConnection → xác nhận hồ sơ → Get-NetFirewallRule (ActiveStore) → pfirewall.log. Tắt bằng dừng dịch vụ nằm ngoài hỗ trợ.
- Dưới quản lý GPO/Intune, gộp quy tắc cục bộ có thể đã tắt. Khi đó xin IT phân phối với đủ tên quy tắc, hướng, chương trình, cổng, IP từ xa, hồ sơ.
Bài viết liên quan
- Cách chọn giao tiếp liên tiến trình trên Windows ── bảng quyết định named pipe / TCP / gRPC / bộ nhớ dùng chung / COM
- Cách chọn cách phân phối ứng dụng Windows - MSI/MSIX/ClickOnce/xcopy/cập nhật riêng
- Khi nào thật sự cần đặc quyền quản trị viên trên Windows - UAC, vùng được bảo vệ, và cách phân biệt từ thiết kế
- Khi ứng dụng Windows tự phát triển bị coi là virus ── ứng phó phát hiện nhầm Microsoft Defender và cách sống với ảnh hưởng hiệu năng
- SMB signing và LDAP channel binding ── siết nốt “nửa còn lại” của phòng thủ NTLM trên thực tế
- Cách làm và vận hành dịch vụ Windows ── từ phân biệt với Task Scheduler đến biến BackgroundService thành dịch vụ
Lĩnh vực tư vấn liên quan
KomuraSoft LLC đảm nhận thiết kế trình cài đặt ứng dụng nghiệp vụ kiểu máy chủ (gồm đăng ký/xóa quy tắc firewall), điều tra nguyên nhân “không giao tiếp được” trên môi trường khách, và sắp xếp yêu cầu mạng nhằm triển khai dưới quản lý GPO. Bắt đầu từ khoanh vùng “máy phát triển chạy nhưng khách thì không” cũng được.
- Phát triển ứng dụng Windows
- Điều tra lỗi và nguyên nhân
- Tư vấn kỹ thuật và đánh giá thiết kế
- Liên hệ với chúng tôi
Liên kết tham khảo
-
Microsoft Learn, Windows Firewall overview. Về Windows Firewall là firewall kiểu host bật mặc định trên mọi ấn bản; về hành vi mặc định “nhận thì chặn trừ hồi đáp yêu cầu hoặc khớp quy tắc, gửi thì cho phép trừ khớp quy tắc”; về ba hồ sơ (Domain=tự áp khi phát hiện domain controller, không đặt tay; Private=quản trị viên đặt tay; Public=mặc định mạng chưa nhận diện); về xác nhận/đổi danh mục mạng bằng Get-NetConnectionProfile / Set-NetConnectionProfile; về tắt bằng dừng dịch vụ firewall (MpsSvc) nằm ngoài hỗ trợ, gây menu Start dừng hoặc cập nhật ứng dụng Store thất bại; về cách tắt đúng là giữ dịch vụ chạy rồi tắt hồ sơ. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Microsoft Learn, Windows Firewall rules. Về thứ tự ưu tiên quy tắc (cho phép tường minh thắng chặn mặc định, chặn tường minh thắng cho phép, quy tắc cụ thể hơn thắng, không có thứ tự trọng số); về hộp thoại hiện khi ứng dụng bắt đầu chờ mà không có quy tắc; về người dùng quản trị viên chọn “Không” hoặc hủy thì tạo quy tắc chặn (thường hai quy tắc TCP/UDP); về người không phải quản trị viên cục bộ thì dù chọn gì cũng tạo quy tắc chặn; về hộp thoại không hiện lại và giao tiếp cứ bị chặn cho đến khi xóa quy tắc đã tạo; về việc ứng dụng hoặc trình cài đặt tự thêm quy tắc là phổ biến; về khuyến nghị đặt quy tắc trước lần khởi động đầu và tắt thông báo nhận; về quy tắc chương trình không dùng ký tự đại diện (C:*\teams.exe, v.v.) mà chỉ đường dẫn đầy đủ; về tắt gộp quy tắc cục bộ (AllowLocalPolicyMerge) theo hồ sơ được, khi tắt thì quy tắc ứng dụng cần kết nối nhận bắt buộc phân phối tập trung; về khuyến nghị quy tắc nhận càng cụ thể càng tốt và với mạng nhà/nhỏ giới hạn địa chỉ từ xa vào LocalSubnet; về chặn gửi mặc định là lựa chọn môi trường bảo mật cao nhưng không được đổi nhận mặc định thành cho phép. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13
-
Microsoft Learn, New-NetFirewallRule (NetSecurity). Về -DisplayName bắt buộc lúc tạo quy tắc; về -Name là định danh độc nhất, mặc định giá trị ngẫu nhiên, và kịch bản được hướng dẫn dùng -Name; về đặc tả từng tham số -Direction (Inbound/Outbound), -Action (Allow/Block), -Program (đường dẫn đầy đủ), -Protocol (TCP/UDP/ICMPv4/ICMPv6/số), -LocalPort, -RemoteAddress (từ khóa IP/subnet/dải/LocalSubnet, v.v.), -Service, -Profile (Any/Domain/Private/Public, nhiều giá trị bằng dấu phẩy không khoảng); về ví dụ tạo quy tắc kết hợp chỉ định chương trình + giao thức + cổng. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Test-NetConnection (NetTCPIP). Về Test-NetConnection là cmdlet hiện thông tin chẩn đoán ping, kết nối TCP, đường đi; về thử kết nối TCP tới cổng chỉ định bằng -ComputerName và -Port, kết quả trả về như TcpTestSucceeded. ↩ ↩2
-
Microsoft Learn, Get-NetFirewallRule (NetSecurity). Về -PolicyStore ActiveStore lấy quy tắc của mọi kho chính sách đang áp (tập chính sách kết quả gồm nguồn GPO); về điều kiện cổng, địa chỉ, v.v. nằm ở phía đối tượng bộ lọc chứ không phải thân quy tắc, truy vấn qua Get-NetFirewallPortFilter / Get-NetFirewallApplicationFilter; về -TracePolicyStore xác nhận nguồn quy tắc (PolicyStoreSource / PolicyStoreSourceType là Local/GroupPolicy). ↩ ↩2 ↩3 ↩4
-
Microsoft Learn, Configure Windows Firewall logging. Về đường dẫn mặc định của nhật ký là %windir%\system32\logfiles\firewall\pfirewall.log; về kích thước tối đa mặc định 4.096KB, khi đạt trần thì xóa mục cũ trước; về nhật ký không ghi cho đến khi bật một trong “gói bị hủy” hoặc “kết nối thành công”; về bật bằng netsh advfirewall set allprofiles logging droppedconnections/allowedconnections enable; về trường hợp thư mục nhật ký thiếu quyền FullControl của dịch vụ mpssvc thì tệp nhật ký không được tạo, cần tạo thư mục tay và cấp ACL. ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Learn, Manage Windows Firewall with the command line. Về cấu hình hành vi mặc định, thông báo (-NotifyOnListen False), nhật ký bằng Set-NetFirewallProfile; về ví dụ tạo quy tắc chương trình bằng New-NetFirewallRule và ví dụ xóa bằng Remove-NetFirewallRule / netsh advfirewall firewall delete rule; về mẫu ức chế lỗi khi quy tắc không tồn tại bằng -ErrorAction SilentlyContinue; về ví dụ truy vấn ngược quy tắc từ điều kiện cổng qua Get-NetFirewallPortFilter; về tắt hồ sơ bằng Set-NetFirewallProfile -Enabled False là cách tắt đúng. ↩ ↩2 ↩3
-
Microsoft Learn, Use netsh advfirewall firewall context to control Windows Firewall behavior (KB947709). Về ví dụ thêm quy tắc chương trình/cổng bằng cú pháp netsh advfirewall firewall add rule (name= / dir=in / action=allow / program= / enable=yes / remoteip= / profile= / protocol= / localport=); về ví dụ xóa bằng delete rule; về thành viên nhóm quản trị viên trên môi trường UAC bật cần chạy từ command prompt đã nâng; về thiết lập nhật ký bằng netsh advfirewall set currentprofile logging. ↩ ↩2 ↩3
-
Microsoft Learn, Audit Filtering Platform Packet Drop. Về bật tiểu mục kiểm toán “Filtering Platform Packet Drop” thì khi Windows Filtering Platform hủy gói sẽ ghi sự kiện 5152 (và 5153); về khối lượng sự kiện tiểu mục này rất lớn, nên để giám sát kết nối bị chặn thì khuyến nghị dùng sự kiện 5157 ghi theo kết nối chứ không theo gói. ↩
Bài viết liên quan
Các bài viết gần đây có cùng thẻ để tìm hiểu sâu hơn những chủ đề lân cận.
Hướng dẫn thực tế kho chứng chỉ Windows ── đưa vào kho người dùng hay kho máy tính?
Chứng chỉ máy khách nên vào kho người dùng hay kho máy tính? Bài viết này là hướng dẫn thực tế dập các tai nạn chứng chỉ quen thuộc một c...
Chính sách kiểm toán bảo mật Windows và điều tra nhật ký sự kiện trên thực tế — trở thành đội IT đọc được sự kiện 4625
Hướng dẫn thực tế để trả lời "hãy xem nhật ký đăng nhập thất bại". Bài viết này giải thích quan hệ giữa chính sách kiểm toán cơ bản và nâ...
Hướng dẫn thực tế Windows LAPS ── ngừng mật khẩu quản trị viên cục bộ dùng chung trên mọi PC
Mật khẩu quản trị viên cục bộ dùng chung trên mọi PC là mảnh đất cho tấn công Pass-the-Hash, khi một máy bị xâm nhập lan sang toàn bộ. Bà...
OneDrive "Tệp theo yêu cầu" và ứng dụng nghiệp vụ — giả định mà chỗ giữ chỗ phá vỡ và cách xử lý
CSV trên máy tính không mở được, hoặc nhập thất bại với "không tìm thấy tệp" — nguyên nhân có thể là Known Folder Move và Tệp theo yêu cầ...
Volume Shadow Copy (VSS): cơ chế và thực hành — vì sao phần mềm sao lưu copy được tệp đang dùng
Tệp đang dùng thường không copy được vì vi phạm chia sẻ — vậy phần mềm sao lưu làm thế nào? Bài viết giải thích vai trò requester, writer...
Chủ đề liên quan
Các trang này đặt chủ đề trong bối cảnh rộng hơn của dịch vụ và quyết định.
Chủ đề kỹ thuật Windows
Cổng vào phát triển Windows, điều tra lỗi và khai thác tài sản hiện có.
Dịch vụ liên quan đến chủ đề này
Bài viết liên quan trực tiếp đến các dịch vụ sau.
Phát triển ứng dụng Windows
Ứng dụng nghiệp vụ, tích hợp thiết bị và công cụ liên lạc, từ yêu cầu đến phát triển.
Câu hỏi thường gặp
Các câu hỏi thường gặp khi tư vấn về chủ đề của bài viết.
- Ứng dụng chỉ kết nối tới máy chủ với tư cách máy khách có cần quy tắc firewall không?
- Theo nguyên tắc thì không. Mặc định Windows Firewall là "nhận thì chặn, gửi thì cho phép", nên ứng dụng máy khách chỉ chủ động kết nối đi vẫn giao tiếp được với mặc định. Quy tắc nhận chỉ cần khi phía mở cổng và chờ kết nối, tức ứng dụng kiểu máy chủ. Tuy nhiên có hai ngoại lệ. Môi trường bảo mật cao đôi khi đổi gửi thành chặn mặc định, khi đó cần xin quy tắc gửi. Và nếu ứng dụng máy khách tự chờ cổng làm đầu nhận thông báo kết quả, phần đó vẫn cần quy tắc nhận.
- Cứ bấm "Cho phép truy cập" trên hộp thoại "Cảnh báo bảo mật Windows quan trọng" là xong chứ?
- Tại chỗ thì xong, nhưng không giao vận hành thật được. Hộp thoại này, nếu người dùng có quyền quản trị viên hủy, sẽ tạo quy tắc chặn. Hơn nữa, với người dùng không có quyền quản trị viên, bấm nút nào cũng tạo quy tắc chặn. Một khi quy tắc đã tạo, hộp thoại không hiện lại trừ khi xóa quy tắc, và giao tiếp cứ thất bại. Với ứng dụng nghiệp vụ mà người thao tác PC hiện trường là người dùng thường, trạng thái "ai đó hủy một lần rồi từ đó không giao tiếp được" dễ xảy ra. Microsoft cũng khuyến nghị đặt quy tắc trước lần khởi động đầu của ứng dụng.
- Quy tắc nhận nên tạo theo cổng hay theo chương trình?
- Nguyên tắc là kết hợp chứ không dùng một mình. Chỉ định chương trình thu hẹp đối tượng bằng đường dẫn đầy đủ của exe, nhưng đổi đường dẫn khi cập nhật thì quy tắc mất đối tượng (không dùng được ký tự đại diện). Chỉ định cổng làm đơn xin với IT rõ ràng, nhưng cũng cho qua tiến trình khác chờ cùng cổng. Ứng dụng nghiệp vụ trên sản xuất lấy "chương trình + giao thức + cổng" làm trục, giới hạn hồ sơ vào Domain/Private, và thu hẹp IP từ xa vào subnet nơi máy khách ở — đó là mẫu quyền tối thiểu. Chỉ khi cổng động mới dùng chỉ định chương trình đơn.
- Quy tắc trình cài đặt đã đăng ký hình như không có hiệu trên PC khách. Vì sao?
- Khả năng cao là firewall phía khách được quản tập trung bằng GPO hoặc Intune, và "gộp quy tắc cục bộ" (AllowLocalPolicyMerge) đã tắt. Khi thiết lập này tắt, quy tắc tạo cục bộ dù tồn tại trên hồ sơ cũng không được áp; chỉ còn cách phân phối tập trung từ GPO/CSP. Hãy xác nhận toàn bộ quy tắc đang có hiệu bằng Get-NetFirewallRule -PolicyStore ActiveStore, rồi xin IT phân phối quy tắc. Đơn xin đủ tên quy tắc, hướng, đường dẫn chương trình, giao thức và cổng, dải IP từ xa, hồ sơ thì thường qua một lần.
- Để khoanh vùng giao tiếp, tạm tắt firewall có được không?
- Tuyệt đối tránh tắt bằng dừng dịch vụ (MpsSvc). Đó là thao tác ngoài phạm vi hỗ trợ của Microsoft, gây sự cố phía OS như menu Start không chạy, cập nhật ứng dụng Store thất bại. Nếu nhất định muốn tắt để khoanh vùng, cách đúng là giữ dịch vụ chạy rồi tắt hồ sơ bằng Set-NetFirewallProfile -Enabled False. Dù vậy cũng giới hạn cho việc xác nhận trong vài phút "có phải firewall không", rồi trả lại ngay khi xong. Vận hành để tắt là đổi sự cố chỉ cần thêm một quy tắc lấy cả PC không phòng thủ.