(注:本文参考以下前辈文章修改而来,源文章连接:http://itadmindev.blogspot.hk/2011/07/powershell-ad-dc-failed-logins-report.html

原脚本只用于收集统计AD,过去一天时内,EventID为4625帐户登录失败的IP、主机名及登录次数。

EventID对应的内容可参考以下内容:http://support.microsoft.com/kb/947226/zh-cn

我现在依需求,修改为需要收集过去一天内,ID为4771:Kerberos预身份验证失败的信息,主要是指AD中认证失败的账号、客户端,并发邮件通知到指邮箱。

1、启用DC的Audit功能

修改GPO,针对DefaultDomainControllerPolicy,启用Auditaccountlogonevents/Auditlogonevents

p_w_picpath

2、修改powershell执行策略

因为默认PowerShell策略是不能执行未经签名的PS1,当我们直接调用时,会出现如下错误:

p_w_picpath

可参考说明KB:

http://technet.microsoft.com/zh-CN/library/hh847748.aspx

http://technet.microsoft.com/zh-cn/library/ee176949.aspx

而我们自已修改编辑的PS脚本是未经认证的,所以需要修改策略,方法如下:

1)先查看当前的执行策略:Get-ExecutionPolicy

显示为:Restricted,即只能执行经注册的PS脚本。

2)修改执行策略为Remotesigned:Set-Exectionpolicyremotesigned

然后输入”Y”确认修改。

3)再次查看当前执行策略:Get-ExecutionPolicy,

已显示为:RemoteSigned

p_w_picpath

3、下载、修改PowerShell代码

附件PS中,请自行修改以下内容:

1)DCName

PS脚本中第25行括号中为你现有DC名,如果有多台,请手动修改为你实际的DC名称,如:DC001,DC002

$DCs=@("dc001",”dc002”)

2)SMTP设置部分

PS脚本中第134-136行修改为发件人、收件人的邮件地址和内部SMTP服务器的主机名或是IP地址:如下:

From="support@sysmicro.cn"

To="johnson@sysmicro.cn"

SmtpServer="mail.sysmicro.cn"

以上PS脚本修改好后,先手动执行,确保能正常后执行,没有错误后,保存为*.ps1文件,以方便随时调用!

4、将PowerShell加入到计划任务中,自动运行。

如果需要设定每天固定时间运行,将前一天认证失败的信息邮件方式通知指定人员,则可以用创建计划任务的方式,指定固定时间运行,具体方法可以参考:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler-to-run-a-windows-powershell-script.aspx

1)创建计划任

Start\Allprograms\administrativetools\TaskScheduler,在右边选择CreatebasicTask…

p_w_picpath

2)在创建的任务名称中,输入你相要的名称,如:ADFailedLogonReport,然后下一步:

p_w_picpath

3)任务运行时间,选择Daily,然后下一步;

p_w_picpath

4)选择每天运行的时间,依你需求,定义好后,下一步:

p_w_picpath

5)在Action选项中,选择:StartProgram,然后下一步:

p_w_picpath

6)在Program/Script,点击Browse,选择刚才第3步中保存的.PS1文件,然后在修改为:Powershell–file”D:\Script\AD_DCs_Failed_Login_Report_4771_51cto.ps1”,然后下一步:

p_w_picpath

7)在弹出的TaskScheduler中选择“Yes”

p_w_picpath

8)在Finish中勾选:OpenthepropertiesdialogfortaskwhenIclickfinish,然后点击完成

p_w_picpath

9)完成后,可以预览任务属性,在General中,选择:Runwhetheruserisloggedonornot,即用户是否登录时,都执行此任务,点击OK后完成退出!

p_w_picpath

说明:以上以上方法供大家参考,大家可以修改需要的EventID查询你想要的信息!

经在我所在的工作环境中测试,效果不错,如果过去一天中,没有失败的认证,收到的邮件为一个空白的表,如下:

p_w_picpath

如果过去一天中,有失败的认证,则能显示具体的IP、账号、失败的次数,管理员刚可依此信息对相应IP地址的电脑、账号进行检查,以排除安全隐患!

p_w_picpath