【Windows防火墙配置Windows Server服务器只允许国内IP访问】

服务器 0

Windows防火墙配置Windows Server服务器只允许国内IP访问

  • 背景: 勒索病毒事件让重视到网络安全这块,由于业务只需要为国内范围提供服务,为了减少风险想到将服务器仅限对国内开启访问权限,其它国家都将禁止访问
    • 第一时间想到 联系阿里云服务商提供解决方案 --- (无果)
  • ` 要么让你花钱买防火墙 要么你自己解决`
      • `明明轻而易举能做到事, 就是不做为!`
  • 回正题,经过搜寻解决方案,最终找到了一种可行办法
    • - 第1步 获取国内ip地址段
    • - 第2步 禁止全部ip地址访问
    • - 第3步 允许国内ip地址访问
  • `先给代码`
      • `运行上面代码不生成Windows防火墙规则`
  • `必须要运行c盘生成的ip.ps1`
      • `请注意!!! 上面的测试规则是开放所有端口`
      • `请注意!!! 上面的测试规则是开放所有端口`
      • `请注意!!! 上面的测试规则是开放所有端口`
  • 测试结果
      • 概况
      • 国内结果
      • 海外结果![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/6eaf3f40b2ff4c90ba3a714512909772.png#pic_center)
    • 由于只使用了IPv4提供服务

背景: 勒索病毒事件让重视到网络安全这块,由于业务只需要为国内范围提供服务,为了减少风险想到将服务器仅限对国内开启访问权限,其它国家都将禁止访问

由于是 Windows Server 不像宝塔直接带有防火墙功能,只能自己想办法

第一时间想到 联系阿里云服务商提供解决方案 — (无果)

在这里插入图片描述

要么让你花钱买防火墙 要么你自己解决

 云提供商的 [安全组规则] 是不提供MAC地址过滤,也不提供访问日志的 

明明轻而易举能做到事, 就是不做为!

回正题,经过搜寻解决方案,最终找到了一种可行办法

使用Windows自带防火墙,配置规则达到目标

- 第1步 获取国内ip地址段

这个网络上比较多,却存在ip地址量的不同
有6000条+的国内ip, 也有8000条+的, 最终选择了8000+的版本
网站: https://www.ipdeny.com

下载IP地址段文件
下载链接: http://www.ipdeny.com/ipblocks/data/countries/cn.zone

这里不太确定, 如果网友你发现有更好的库, 欢迎你的回复

- 第2步 禁止全部ip地址访问

防火墙这里要设置好,默认阻止不匹配的入站连接, 其实出站也能配置,可以自由发挥了
在这里插入图片描述
在这里插入图片描述

- 第3步 允许国内ip地址访问

要次大量的ip地址导入到防火墙规则也遇到了问题,可是8000多条,一个一个的加能加到什么时候呢
想到了使用PowerShell, 不过PowerShell这里还有一个坑

先给代码

$url = "https://www.ipdeny.com/ipblocks/data/countries/cn.zone" # 要访问的URL地址$response = Invoke-WebRequest -Uri $url # 发送HTTP GET请求获取网页内容$contentLines = ($response.Content | Out-String) -split "`n" # 按换行符分隔内容为多行字符串数组foreach($line in $contentLines){    if(![string]::IsNullOrWhiteSpace($line)){        $ipAddress += '"' + $line + '",' # 在每行前后添加双引号,并存入变量中    }} # 去除最后一个逗号(如果有) if($ipAddress[-1] -eq ','){     $ipAddress = $ipAddress.Substring(0,$ipAddress.Length-1) } # 输出结果# Write-Output $ipAddress$file = "c:/ip.ps1" $cmd= "New-NetFirewallRule -DisplayName ""允许国内IP地址""  -Direction Inbound -Action Allow -Protocol Any -RemoteAddress "#写入ps1文件$cmd + $ipAddress | Out-File -FilePath $file #执行命令# invoke-expression -Command $file

最后一代码 invoke-expression -Command $file PowerShell中就是无法执行成功,经过很长时间查询,也不知道原因在哪里,通过手动运行生成c:/ip.ps1却是可以的,只有分成两部操作, 总之一次性把8000+的ip地址规则配置好就行了,这样就把数据添加好了
在这里插入图片描述

运行上面代码不生成Windows防火墙规则

必须要运行c盘生成的ip.ps1

请注意!!! 上面的测试规则是开放所有端口

请注意!!! 上面的测试规则是开放所有端口

请注意!!! 上面的测试规则是开放所有端口

测试结果

阿里云网站运维检测平台
https://boce.aliyun.com/detect/ping
在这里插入图片描述

概况

在这里插入图片描述

国内结果

在这里插入图片描述

海外结果在这里插入图片描述

由于只使用了IPv4提供服务

所以这里只针对IPv4进行了配置, IPv6也是同理的

也许您对下面的内容还感兴趣: