zoukankan      html  css  js  c++  java
  • POWERSHELL 计划任务的创建,收集DC中失败的登录信息并邮件通知

    (注:本文参考以下前辈文章修改而来,源文章连接: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

    2、修改powershell执行策略

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

    可参考说明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

    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)创建计划任

    StartAllprogramsadministrativetoolsTaskScheduler,在右边选择CreatebasicTask…

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    bat %n 判断传入的参数值和使用注意
    git ls-remote url,判断 url 是否存在
    bat 读取 ini 文件
    bat 提示窗口,带换行
    python .pth 文件 和 site 模块
    python Pillow 图片处理模块,好强大有没有
    Python 获取 exe 的 icon 并且保存
    git 判断路径是否是 git 仓库
    Python 去除字符串中的空行
    Android平台程序崩溃的类型及原因列举
  • 原文地址:https://www.cnblogs.com/xred/p/8420901.html
Copyright © 2011-2022 走看看