1

У нас есть много машин, и это может быть довольно большой болью в заднице, когда клиент по одному из них просит заблокировать некоторые IP-адреса. Мы запускаем игровые серверы, поэтому обычно IP-адреса, которые необходимо заблокировать, могут быть любыми IP-адресами, любым портом и т. Д.Добавить заблокированные IP-адреса с использованием .NET Framework

Я хотел бы написать небольшое приложение, упрощающее добавление IP-банов на сервере 2008. Есть ли хороший способ сделайте это, будь то через IPSec или брандмауэр Windows? На некоторых машинах отключен Firewall, поэтому предпочтение будет отдаваться IPSec, но все в порядке.

ответ

3

Большое спасибо за ссылки. Я смог получить это, используя следующий код. Вам все равно необходимо получить объект FWManager для использования.

private void btnBlock_Click(object sender, EventArgs e) 
{ 
    String IP = txtAddress.Text; 
    txtAddress.Clear(); 

    if (IsAddressValid(IP)) 
    { 
     INetFwRule2 firewallRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule")); 

     firewallRule.Name = "BrutalNT: IP Access Block " + txtAddress.Text; 
     firewallRule.Description = "Block Incoming Connections from IP Address."; 
     firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; 
     firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN; 
     firewallRule.Enabled = true; 
     firewallRule.InterfaceTypes = "All"; 
     firewallRule.RemoteAddresses = txtAddress.Text; 

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

     String msg = "IP Address \"" + IP + "\" Blocked Successfully!"; 
     MessageBox.Show(msg, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
    else 
    { 
     String msg = "IP Address \"" + IP + "\" was Invalid!"; 
     MessageBox.Show(msg, "Failed", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 
} 
0

Некоторое время назад я также искал аналогичное решение. В конце мы выбираем немного другой способ решения наших проблем, но все же я помню, что был API-интерфейс для брандмауэра Windows. К сожалению, у меня нет сохраненных URL, но вы можете использовать API брандмауэра Windows C#. Здесь у вас есть несколько ссылок:

  1. (образцы в VBScript) http://msdn.microsoft.com/en-us/library/windows/desktop/aa366415%28v=vs.85%29.aspx
  2. http://social.msdn.microsoft.com/Forums/en-US/windowssecurity/thread/10c6ff4b-701b-4351-a3d8-a716d8831a66/
  3. http://blogs.msdn.com/b/securitytools/archive/2009/08/21/automating-windows-firewall-settings-with-c.aspx

EDIT Похожий вопрос: What are my options for adding and removing IPSec policies on Windows Server with C#?

Успехов!

 Смежные вопросы

  • Нет связанных вопросов^_^