Добавить заблокированные IP-адреса с помощью .NET Framework - PullRequest
1 голос
/ 28 ноября 2011

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

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

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Большое спасибо за ссылки. Я смог добиться этого, используя следующий код. Вам все еще нужно получить объект 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 голосов
/ 28 ноября 2011

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

  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 Аналогичный вопрос: Какие есть варианты добавления и удаления политик IPSec на Windows Server с C #?

Удачи!

...