更安全的服务器:Windows账号权限修改监控

系统入侵首先从账号权限修改开始,常见的操作有,给自己开新账号,修改已有账号权限,如:提升guest账号为管理员等,如果手工去检查账号的变化,不仅繁琐,而且会遗漏,因为有经验的黑客操作后,会清除事件日志。

理想的方式是,只要服务器账号权限发生改变,就即时通知相关人员。

在.net中,提供了EventLog对象,我们可以利用EventLog的EntryWrittenEvent事件来监控账号相关的操作。

static AutoResetEvent signal;

void Listen() {
    EventLog log 
= new EventLog();
    
    
// 和安全相关的系统事件
    log.Log = "Security";

    
// 监听EventLog写入事件
    log.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten);
    log.EnableRaisingEvents 
= true;

    
// 等待
    signal = new AutoResetEvent(false);
    signal.WaitOne();
}

public void OnEntryWritten(object source, EntryWrittenEventArgs e) {
   
// 监听所有系统管理事件
    if (e.Entry.CategoryNumber == 7) {
        EventLogEntry entry 
= e.Entry;
       
string userName = entry.UserName;
        
long eventID = entry.InstanceId;
        DateTime dateAdded 
= entry.TimeGenerated;
        
string message = entry.Message;

        
// 测试:写入到文本文件,实际使用时可以发邮件,或记到数据库
        
// File.AppendAllText("c:\\event.txt", string.Format("\r\nEventID:{0}\r\nTime:{1}\r\n{2}\r\n\r\n", eventID, dateAdded.ToString(), message));
    }
}


为了让这儿的监控程序在后台执行,还可以包装成服务,包装成服务的例子程序,从这儿下载:

posted on 2011-06-01 18:28 ji yang 阅读(...) 评论(...) 编辑 收藏

导航

公告

统计