前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WannaCry肆虐,Ansible如何一招制敌

WannaCry肆虐,Ansible如何一招制敌

作者头像
魏新宇
发布2018-03-22 15:47:46
1.3K0
发布2018-03-22 15:47:46
举报

概述.

5月12日,全球突发的比特币勒索病毒(WannaCry)疯狂袭击公共和商业系统事件!英国各地超过40家医院遭到大范围网络黑客攻击,国家医疗服务系统(NHS)陷入一片混乱。中国多个高校校园网也集体沦陷。

WannaCry正是利用了过时的SMBv1协议中的一个漏洞,而SMBv1协议在Windows中默认是开启的。

使用Ansible快速关闭SMBv1协议.

虽然大多数企业都使用Linux服务器,但是仍然有很多企业中可能有成千上百台Windows服务器,如何实现快速批量关闭Windows服务器的SMBv1协议?

答案是Ansible!

Ansible核心模块win_regedit支持对Windows注册表key的添加、修改和删除,另一个核心模块win_reg_stat支持对注册表key的状态的检查。使用ansible playbook可实现批量对Windows服务器的管理配置操作。

Ansible如何管理Windows客户端请参考文档末尾的附录。

以下为关闭和检查SMBv1协议的Playbook示例:

以下为hosts的Inventory文件,客户端为Windows 2012 R2

Playbook执行结果如下:

以上Playbook的执行,发生了一个changed,表示在目标机器上发生了一次修改类的操作。

可以通过Windows注册表查看SMBv1协议的值:

附录:

配置Windows被Ansible管理

从1.7版本开始,Ansible也开始支持Windows机器的管理。不过是通过本机的PowerShell来实现远程管理,而不是SSH。使用Python的 “winrm”模块来和远程Windows主机交互。

在管理的过程中,Ansible无需在远程Win主机上安装任何额外的软件,仍然使用 agentless(非c/s架构)。

1、Ansible安装winrm模块

Ansible需要管理Windows,需要在Ansible上安装winrm模块。

模块下载地址:http://github.com/diyan/pywinrm/archive/master.zip

该模块在安装的过程中可能还依赖一些其他的模块,如果在环境允许的情况下可以让Ansible管理端连接互联网自动下载依赖,否则需要手动下载。

安装方法如下:

2、配置Windows PowerShell

为了Ansible能管理Windows机器,须开启并配置远程Windows机器上PowerShell。

推荐使用脚本自动化配置,脚本下载地址: https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

:Windows 7和Server 2008 R2系统因为 Windows Management Framework3.0的BUG,必须安装 hotfixhttp://support.microsoft.com/kb/2842230 来避免内存溢出(OOM)和堆栈异常。新安装的 Server 2008 R2 系统没有升级到最新版本的均存在这个问题。Windows8.1 and Server 2012 R2 不受影响是因为他们自身默认使用的是 WindowsManagement Framework 4.0。

以下所有操作都必须使用administrator账号执行。

下载脚本后,将脚本拷贝至远程Windows机器上,运行方法有两种:

方法一:直接在脚本上点击右键,选择“使用PowerShell运行”

方法二:在PowerShell命令行里运行

注:可能有些机器的PowerShell在运行脚本的时候会出现以下错误:

这种情况是因为PowerShell的执行策略被设置为Restricted,该策略禁止运行任何脚本,将执行策略修改为RemoteSigned即可,检查及修改方法如下:

多数 Ansible Windows 模块需要PowerShell 3.0 或更高版本,同时也需要在其基础上运行安装脚本。需要注意的是 PowerShell3.0 只在 Windows 7 SP1,WindowsServer 2008 SP1,和更新的windows发布版才被支持。

如需更新到PowerShell 3.0,可以使用以下的连接来下载脚本进行更新:

https://github.com/cchurch/ansible/blob/devel/examples/scripts/upgrade_to_ps3.ps1

3、连接测试

创建一个Inventory文件,内容如下:

参数说明:

ansible_ssh_user表示远程windows机器上的用户

ansible_ssh_pass表示ansible_ssh_user对应用户的密码

ansible_ssh_port表示连接PowerShell使用的端口,这里是5986

ansible_connection表示连接windows的类型,这里不能使用ssh

测试,使用ping模块测试连通性,windows使用的是win_ping

失败,因为使用的是自签名证书,所以需要添加以下参数来忽略错误:

再次测试,成功:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大魏分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Ansible快速关闭SMBv1协议.
  • 附录:
  • 配置Windows被Ansible管理
    • 1、Ansible安装winrm模块
      • 2、配置Windows PowerShell
        • 3、连接测试
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档