一、应用场景说明
当我们的一台windows服务器中毒,变成别人肉鸡,不断向外请示非法网站或攻击其它服务器。
要彻底清除相关木马或病毒往往需要的时间比较长,比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。
其实这就是一个白名单效果,即除了指定充许的程序或端口,其它的一律禁止服务器外发。
PS:已经中毒的情况下,建议使用非80(http)和非443(https)端口,可以在前面加一个反代实现,如nginx
二、windwos defender优先级
windwos 的默认防火墙windwos defender的介绍这里不详说了,还是是说一下windwos defender入站规则的规则优先级
在许多情况下,应用程序在网络中运行需要允许特定类型的入站流量。 在配置入站异常时,管理员应记住以下规则优先行为:
- 显式定义的允许规则优先于默认阻止设置
- 显式阻止规则优先于任何冲突的允许规则
- 更具体的规则优先于不太具体的规则,除非存在如 2 中所述的显式阻止规则。 例如,如果规则 1 的参数包含 IP 地址范围,而规则 2 的参数包括单个 IP 主机地址,则规则 2 优先
由于 1 和 2,在设计一组策略时,应确保没有其他可能无意重叠的显式阻止规则,从而阻止希望允许的流量流。
三、实验前相关工作
3.1 实验环境说明
一台windows server 2016的云主机经常攻击别人的服务器,被管理人员告之需要清除完病毒这台服务器才可以上网。
服务器上安装了PHPStudy8.1的nginx和php来跑php网站,为了方便安装了向日葵远程桌面。
3.2 实验要求
在告诉服务器中毒的时候管理人员一时找不出相关病毒,而网站又不能停用。
故临时的解决办法是
1.备份相关数据和代码(不是今天主题,略过)
2.把nginx的80端口改为非80,如8080(主要是防止直接webshell,有条件购买云端支持webshell查杀的工具),再在前面加一个反代,保证网站能正常访问(不是今天主题,略过)
3.开启windwos defender防火墙禁止服务器向外发包,只充许访问8080端口和向日葵远程工具能上网,其它一律禁止
3.3 实现思路(白名单)
只充许访问8080端口和向日葵远程工具能上网,其它一律禁止,那么就是白名单规则
我们可以在windows防火墙的
- 出站规则做成白名单,充许向日葵应用程序出站
(向日葵支行需要连接他们的服务器使用的是TCP 443端口,如果我们使用端口的话那么服务器就能使用web上网了,我们暂时不充许的)
2.入站规则做成白名单(默认),充许访问网站phpstudy的8080端口
(因为第一个包是其它电脑请求我们网站的,所以只需要入站规则上做即可,出站一般不需要)
PS:
白名单 :默认阻止,除了指定放行
黑名单 :默认放行,除了指定禁止
四、实验操作
4.1 打开windwos defender自带的防火墙
4.2 修改windows防火墙出站规则为白名单
从上面图中可以看出Windows入站连接默认使用的是白名单,而出站则使用的是黑名单。
这个不是我们需要的,所以要修改为白名单,操作如下:
附:下图的域配置、专用配置、公用配置主要是指网络类型,出站都改为阻止
PS:下面是查看网络类型的方法:
一般局域网使用专用网络,不安全的使用公用网络
修改后如下图所示:
4.3 配置出站规则
向日葵因为需要主动连接服务器,使用网络连接查看工具,如微软官网的TCPView得知向日葵使用的是TCP 443(http)端口
因不让服务器上网,所以不能基于端口配置,是基于程序放行。
向日葵在安装的时候默认以程序方式放行了
4.4 配置入站规则——放行外部访问网站
开启防火墙后,入站规则变成白名单,其它电脑不能访问,我在这里把端口改为了8080,在入站规则中允许8080端口即可
4.5 测试效果
打开浏览器是不能上网,打开向日葵能获取到“设备识别码”,则表示成功,如下图所示: