asp.net - 动态阻止 IP 地址到 Azure 云服务
问题描述
我们有一个 Azure 云服务(经典),它是我们的 Web 应用程序。我们如何告诉服务阻止所有实例上的特定 IP?
我知道当通过 web.config 文件设置时,我们可以使用 IIS 8+ 动态 IP 限制 (DIPR) 进行阻止。 配置动态 IP 限制
2个问题是1)我们不能从应用程序中添加到总是阻止列表中,2)即使我可以让它工作,它也只会在那个实例上。
有没有办法阻止/IP 过滤来自门户的流量?它可以从我们的云服务中设置吗?
解决方案
有没有办法阻止/IP 过滤来自门户的流量?它可以从我们的云服务中设置吗?
每次您的实例启动时,它都会查看已为角色配置的端点并在防火墙中打开所需的端口。我们在代码中要做的只是禁用这些规则并创建仅限于几个 IP 地址/IP 地址范围的新规则。
该解决方案的核心是IPAddressRestrictionManager.cs
类,它解析来自 的设置ServiceConfiguration.cscfg
(您可以在部署应用程序时对其进行修改)并修改每个实例上的防火墙。
首先,您需要安装 NuGet 包:
PM> Install-Package WindowsAzure.IPAddressRestriction
如果您想将 链接IPAddressRestrictionManager
到ServiceConfiguration
您的角色,您需要将以下设置添加到您的角色:
设置的语法并不难理解:
IPAddressRestriction.Enabled = true
或者false
IPAddressRestriction.Settings
= = 或 =- (端口之间的分隔符是“;”)
最后,您需要在 WebRole/WorkerRoler.cs 中连接所有内容
public class WebRole : RoleEntryPoint
{
private IPAddressRestrictionManager restrictionManager;
public override bool OnStart()
{
RoleEnvironment.Changing += OnRoleEnvironmentChanging;
ConfigureIPAddressRestrictions();
return base.OnStart();
}
private void ConfigureIPAddressRestrictions()
{
if (restrictionManager == null)
restrictionManager = new IPAddressRestrictionManager();
restrictionManager.RemoveRestrictions();
if (restrictionManager.IsEnabledInConfiguration())
restrictionManager.ApplyFromConfiguration();
}
/// <summary>
/// Force restart of the instance.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void OnRoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
if (e.Changes.Any(o => o is RoleEnvironmentChange))
e.Cancel = true;
}
}
更多细节,你可以参考这篇文章。
推荐阅读
- java - p:InputText 防止按回车
- haskell - Haskell二叉树解析
- javascript - 无法将我的表单重定向到新的 html 页面。它转到 localhost:3000/confirm.html 而不是我希望它在新窗口中打开 confirm.html
- c++ - 跨多个对象使用地图
- angular - 如何在 Angular 中开玩笑地测试后自动调用discardPeriodicTasks?
- node.js - pusher 是否支持双向通信?如果是,那么如何在 Node.js 中实现它?
- python - ListSerializer for json on rest_framework 序列化器
- javascript - 我无法将数据插入我的数据库(mysql)
- nexus - 如何使用 ssl 在 docker 容器中安装 sonatype/nexus
- python - 使用 2 个数组在 numpy 中填充第三个数组