2011-12-13 46 views
5

Tôi cần mở cổng cụ thể cho ứng dụng của mình.Tạo quy tắc tường lửa để mở cổng cho mỗi ứng dụng lập trình trong C#

Tôi đã thử sử dụng quy tắc INetFwAuthorizedApplication cho mỗi ứng dụng cho tất cả các cổng.

fwMgr.LocalPolicy.CurrentProfile.AuthorizedApplications.Add(app) 

Hoặc mở một cổng cho tất cả các ứng dụng bằng cách sử dụng INetFwOpenPort.

firewallManager.LocalPolicy.CurrentProfile.GloballyOpenPorts.Add(port) 

Có cách nào để lập trình chỉ mở cổng duy nhất cho mỗi ứng dụng theo chương trình không? Tôi có thể thực hiện theo cách thủ công thông qua cài đặt tường lửa.

+1

Tôi hy vọng điều này là không thể thực hiện nếu không thì đầu tư của tôi trong một phần mềm bảo mật là một sự lãng phí tiền bạc. Bạn có chắc chắn 100% thậm chí bạn cần phải mở cổng, hầu hết các ứng dụng thậm chí không yêu cầu điều này, mặc dù họ cung cấp hướng dẫn về cách làm điều đó cho người dùng của họ. Bạn có ý nghĩa gì bởi "Tôi sẽ không cần phải mở UDP hoặc nếu có thể" tuyên bố không có ý nghĩa. –

+0

Thay vì mở quá nhiều, tôi đang cố gắng hạn chế hơn. Bằng cách thêm ứng dụng của tôi vào ứng dụng AuthorizedApplications có thể nghe/giao tiếp trên tất cả các cổng cục bộ và từ xa. Tôi thực sự cần phải mở ứng dụng của tôi cho một cổng duy nhất. Khi bạn tạo quy tắc tường lửa theo cách thủ công, bạn có thể chỉ định ứng dụng và cổng cụ thể. UDP vs TCP không quá quan trọng và nó chỉ có nghĩa là tôi không phải có hai quy tắc gửi đến trên tường lửa của mình. Tôi sẽ loại bỏ nó khỏi câu hỏi của tôi vì nó là câu hỏi thứ hai thực sự. – Marek

Trả lời

5

Có câu hỏi về việc chặn các kết nối có câu trả lời với hướng dẫn tạo quy tắc tường lửa trong C#. Bạn sẽ có thể thích nghi điều này cho bất kỳ loại quy tắc tường lửa tôi tưởng tượng.

https://stackoverflow.com/a/1243026/12744

Đoạn mã sau tạo một quy tắc tường lửa chặn bất kỳ đi kết nối trên tất cả các adapter mạng của bạn:

using NetFwTypeLib; // Located in FirewallAPI.dll 
... 
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FWRule")); 
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; 
firewallRule.Description = "Used to block all internet access."; 
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; 
firewallRule.Enabled = true; 
firewallRule.InterfaceTypes = "All"; 
firewallRule.Name = "Block Internet"; 

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); 
firewallPolicy.Rules.Add(firewallRule); 
+0

Đây là những gì tôi đang tìm kiếm "INetFwRule". cảm ơn – Marek

Các vấn đề liên quan