更安全的服务器:Windows账号权限修改监控
系统入侵首先从账号权限修改开始,常见的操作有,给自己开新账号,修改已有账号权限,如:提升guest账号为管理员等,如果手工去检查账号的变化,不仅繁琐,而且会遗漏,因为有经验的黑客操作后,会清除事件日志。
理想的方式是,只要服务器账号权限发生改变,就即时通知相关人员。
在.net中,提供了EventLog对象,我们可以利用EventLog的EntryWrittenEvent事件来监控账号相关的操作。
为了让这儿的监控程序在后台执行,还可以包装成服务,包装成服务的例子程序,从这儿下载:
理想的方式是,只要服务器账号权限发生改变,就即时通知相关人员。
在.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));
}
}
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));
}
}
为了让这儿的监控程序在后台执行,还可以包装成服务,包装成服务的例子程序,从这儿下载: