Добавить заблокированные IP-адреса с помощью .NET Framework

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

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


person Community    schedule 28.11.2011    source источник


Ответы (2)


Большое спасибо за ссылки. Мне удалось добиться этого, используя следующий код. Вам все равно потребуется получить объект 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);
    }
}
person Community    schedule 30.11.2011

Некоторое время назад я тоже искал подобное решение. В конце концов, мы выбрали немного другой способ решения наших проблем, но все же я помню, что был API для брандмауэра Windows. К сожалению, у меня нет сохраненных URL, но вы можете погуглить "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

ИЗМЕНИТЬ Аналогичный вопрос: Какие у меня есть варианты добавления и удаления политик IPSec на Windows Server с C #?

Удачи!

person Volodymyr Usarskyy    schedule 28.11.2011