网站一旦出现频繁被恶意爬虫扫描、强制破解或DDoS攻击时,IP访问控制成为守护安全的第一道防线。下面基于Windows Server 2022与IIS 10环境,系统解析从单个IP封禁到批量IP段拦截的六大实战方法,涵盖图形界面操作、配置文件修改、防火墙规则及自动化脚本,助力您构建灵活高效的访问控制体系。
一、IIS管理器图形化封禁(适合新手)
打开IIS管理器右键点击目标网站 → 选择 「IP地址和域限制」 → 进入功能设置页。添加拒绝规则封禁单个IP是点击右侧 「添加拒绝条目」 → 输入IP地址(如192.168.1.100)→ 确认。封禁IP段使用CIDR格式(如192.168.1.0/24封禁整个C类地址)→ 生效范围包括192.168.1.1至192.168.1.254。
若需放行特定IP,点击 「添加允许条目」 → 优先级高于拒绝规则。这种操作直观,实时生效,无需重启服务。不足在于不支持复杂条件(如时间段限制),批量操作效率低。
二、web.config文件手动配置(精准控制)
配置文件修改定位网站根目录下的 web.config 文件,若不存在则新建。在 <system.webServer> 节点下添加以下内容:
xml
<security>
<ipSecurity allowUnlisted="true">
<! 封禁单个IP >
<add ipAddress="192.168.1.100" allowed="false" />
<! 封禁IP段 >
<add ipAddress="192.168.2.0" subnetMask="255.255.255.0" allowed="false" />
<! 允许特定IP >
<add ipAddress="203.0.113.5" allowed="true" />
</ipSecurity>
</security>
保存文件 → IIS自动应用配置(或手动重启站点)。
关键参数说明
allowUnlisted:设置为true时,未列出的IP默认允许访问。
subnetMask:子网掩码,与IP地址配合定义范围(如192.168.2.0/24对应掩码255.255.255.0)。
三、Windows防火墙高级封禁(底层拦截)
创建入站规则,打开 高级安全Windows防火墙 → 选择 「入站规则」 → 点击 「新建规则」。规则类型选择「自定义」 → 「所有程序」。
协议和端口中协议类型是TCP,本地端口:80,443(HTTP/HTTPS)。作用域 → 远程IP地址添加要阻止的IP或范围(如192.168.3.1192.168.3.100)。
操作选择 「阻止连接」 → 完成规则命名并启用。这种是在系统层面拦截,不依赖IIS,防御更彻底,但是错误配置可能导致合法流量被阻,需严格测试。
四、PowerShell脚本批量管理(高效运维)
批量导入IP黑名单,创建IP列表文件(block_ips.txt),每行一个IP或CIDR:
192.168.4.5
10.0.0.0/24
2001:db8::/32
执行脚本自动添加规则:
powershell
加载Web管理模块
ImportModule WebAdministration
读取IP列表
$ips = GetContent Path "C:\block_ips.txt"
遍历添加规则
foreach ($ip in $ips) {
AddWebConfigurationProperty pspath "IIS:\Sites\YourSiteName" filter "system.webServer/security/ipSecurity" name "." value @{ipAddress=$ip; allowed="False"}
}
重启站点生效
RestartWebItem "IIS:\Sites\YourSiteName"
自动化优势是支持IPv4/IPv6,适应混合网络环境。可结合任务计划定期更新黑名单。
五、URL重写模块动态拦截(灵活扩展)
安装 URL重写模块(通过Web平台安装器)。在网站根目录的 web.config 中添加规则:
xml
<system.webServer>
<rewrite>
<rules>
<rule name="BlockIPs" stopProcessing="true">
<match url="." />
<conditions>
<! 封禁单个IP >
<add input="{REMOTE_ADDR}" pattern="^192\.168\.5\.100$" />
<! 封禁IP段 >
<add input="{REMOTE_ADDR}" pattern="^192\.168\.6" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Access Denied" />
</rule>
</rules>
</rewrite>
</system.webServer>
正则表达式支持更复杂的匹配逻辑(如按地理位置IP段拦截)。
六、日志分析与维护策略
验证封禁效果可以通过实时测试,使用被封禁的IP访问网站,应返回 403 Forbidden。当然也可以通过日志检查,查看IIS日志(默认位于%SystemDrive%\inetpub\logs\LogFiles),确认拦截记录:
20240520 14:30:00 192.168.1.100 GET / 80 192.168.1.200 Mozilla/5.0 403 6 1234
字段说明:scstatus=403表示请求被拒绝。
日志分析工具使用LogParser筛选高频恶意IP:
sql
SELECT COUNT() AS Hits, cip
FROM ex.log
WHERE scstatus=401 OR scstatus=403
GROUP BY cip
HAVING Hits > 100
动态解封机制结合PowerShell脚本自动释放过期封禁(如封禁24小时后解除)。
风险规避与最佳实践
白名单优先先设置允许的IP范围,再开启全局封禁,避免误封。分级管理核心后台(如/admin路径)实施严格IP限制,公开页面适度放宽。备份配置,修改前备份applicationHost.config(位于%windir%\system32\inetsrv\config)。
通过上述方法,可以合理运用IP封禁策略,不仅能提升安全性,还可降低服务器负载,保证业务稳定运行。