一、Windwos日志

1. 分类

  • 事件日志
  • IIS日志
  • FTP日志
  • 数据库日志
  • 邮件服务日志

2. 事件日志

(1). 介绍

a. 概念
  • 特定的数据结构存储内容,内容包括系统、安全、应用程序的记录
b. 元素
  • 9种,分别是:日期/事件、事件类型、用户类型、计算机、事件ID、来源、类别、描述、数据
c. 存放位置
  • C:\Windows\system32\winevt\logs\

    Windows日志存放位置

d. 打开方式
  • win + R => 运行窗口输入eventvwr.msc

(2). 分析要点

Windows事件日志分析流程

(3). 分类

a. 应用日志
①概念
  • 包括应用程序系统程序记录的事件,主要记录程序运行方面的事件
②日志位置
  • %SystemRoot%\System32\Winevt\Logs\Application.evtx
b. 系统日志
①概念
  • 记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据对是错误等
②日志位置
  • %SystemRoot%\System32\Winevt\Logs\System.evtx
c. 安全日志
①概念
  • 包含安全性相关的时间,如用户权限变更、登录及注销,文件、文件夹访问,打印等信息
②日志位置
  • %SystemRoot%\System32\Winevt\Logs\Security.evtx
d. 转发事件

(4). 事件级别

  • 总共有5个事件级别

    Windows事件级别

(5). 事件ID

a. 定义
  • Windows的日志以事件ID来表示具体发生的动作行为
  • 查询网址:https://docs.microsoft.com/en-us/windows/security/threat-protection/ , 搜索event + id进行查询
b. 常见事件ID

| 事件ID | 说明 |
| ——– | ——————– |
| 4634 | 注销成功 |
| 4624 | 账号成功登录 |
| 4625 | 账号登录失败 |
| 4720 | 创建用户 |
| 4726 | 删除用户 |
| 4672 | 使用超级用户登录 |
| 4647 | 用户启动的注销 |

c. 登录类型

| 类型ID | 描述 | 说明 | 典型情况 |
| —— | ———- | ————————– | ————————————————– |
| 2 | 本地交互式 | 用户在本地登录 | 使用域、本地账户登录 |
| 3 | 网络方式 | 从网络访问主机 | 访问共享文件夹 |
| 4 | 批处理 | 作为批处理登录 | 指定计划任务时指定的某个具体账户来运行 |
| 5 | 服务 | 以服务方式登录 | 在指定服务器运行时以本地系统账户、具体某个账户运行 |
| 8 | 网络明文 | 密码在网络上明文传输 | FTP登录 |
| 10 | 远程交互 | 通过中断服务、远程桌面访问 | 本地mstsc客户端远程登录 |

(6). 常见事件日志分析

a. 用户登录/注销
  • 判断哪个用户尝试进行登录,分析被控制用户的使用情况

    登录成功日志

    特殊登录日志

b. 远程访问(RDP)
c. 无线网络接入
①相关概念
  • 分析系统访问过那些关联的无线网络、VPN
  • 日志位置:Microsoft-Windows-NetworkProfile-Operational
  • 从vista及2008引入了WLAN-AutoConfig日志
②事件ID

| 事件ID | 说明 |
| —— | ———- |
| 10000 | 网络已连接 |
| 10001 | 网络已断开 |

d. USB移动介质

移动介质安装日志

①相关概念
  • 分析那些硬件设备什么时候安装到系统中
②事件ID

| 事件ID | 说明 |
| ———– | ————————– |
| 20001&20003 | 即插即用驱动安装(系统日志) |
| 4663 | 移动设备访问成功(安全日志) |
| 4656 | 移动设备访问失败(安全日志) |

③日志位置

| 描述 | 位置 |
| ————- | ———————————- |
| 注册表 | UserPnP/DeviceInstall |
| WinXP/Win2003 | c:\\Windows\Setupapi.log |
| Win7以上 | c:\\Windows\INF\setupapi.dev.log |

(7). 分析工具

a. Microsoft LogParser
  • https://www.microsoft.com/en-us/download/details.aspx?id=24659
  • 通过Win+R运行窗口打开
①语法
  • -i:指定文件类型
  • -o:输出方式
  • EXTRACT_TOKEN()函数
②使用
LogParser.exe -i:EVT -o:DATAGRID "SELECT * FROM C:\security.evtx where EventID=4624"

LogParser日志分析工具使用结果

b. Event Log Explorer
  • https://event-log-explorer.en.softonic.com/

3. IIS日志

4. FTP日志

5. 数据库日志

6. 邮件服务日志

二、Linux日志

1. 分类

  • 默认日志位置:/var/log

    Linux日志位置

(1). 内核及系统日志

  • 由系统服务rsyslog统一管理,日志格式基本相似,默认日志守护进程为rsyslog
a. 系统日志
  • 主要程序:/sbin/rsyslog
  • 主配置文件:/etc/rsyrslog.conf/etc/rsyslog.d

Linux系统日志

b. 内核日志

(2). 用户日志

  • 记录系统用户登录及退出系统的相关信息

(3). 程序日志

  • 由相应的应用程序进行独立管理,如:web服务、ftp服务

2. 日志信息

(1). 优先级

Linux系统日志优先级

(2). 日志类型

Linux日志类型1

Linux日志类型2

3. 常见日志

(1). 日志文件

Linux常见日志文件

(2). 分类

a. 用户最后一次信息
①默认日志位置
  • /var/log/lastlog
②命令查看
lastlog

Linux用户最后一次登录信息

b. 登录用户信息
①默认日志位置
  • /var/log/utmp
②命令查看
who     #访问utmp记录,显示当前正在登陆的用户信息
w       #显示的信息更详细

Linux登录用户信息

c. 所有登录用户信息
①默认日志位置
  • /var/log/wtmp
②命令查看
last        #显示自文件第一次创建以来所有登录过的用户
ac          #统计登录的总时长
ac [用户名]        #统计某用户登录的总时长

Linux显示所有登录过的用户

d. 登录失败
①默认日志位置
  • /var/log/btmp
②命令查看
lastb       #记录登录失败的用户名、时间以及远程IP地址

Linux查找登录失败信息

e. 系统日志信息
①默认日志位置
  • /var/log/messages
②命令查看
  • 查看入侵用户的企图成功入侵的信息,具体包括:时间、地点、任务、事件等等
#记录内核信息、各种服务的公共消息、报错信息等
egrep -ri 'error|warn' /var/log/messages

Linux查看系统日志信息

f. 安全日志
①默认日志位置
  • /var/log/secure
②命令查看
  • 记录安全相关的信息,比如哪些用户登录服务器的相关信息,sshd会将失败登录的信息记录在这里
  • 如果该文件很大,说明有人在破解root用户密码
cat /var/log/secure

Linux查看安全日志信息

g. 系统启动日志
①默认日志位置
  • /var/log/boot.log
②命令查看
  • 可以查看服务启动成功或失败相关信息
cat /var/log/boot.log

4. 分析技巧

  • 默认日志位置:/var/log/secure

  • 定位有多少IP在爆破主机的root账号

    grep "Failed password for root" /var/log/secure | awk '{print $11}'|sort|uniq -c|sort -nr|more
    

    Linux定位有多少IP在爆破root账号

  • 定位有哪些IP在爆破

    grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | uniq -c
    

    Linux定位有哪些IP在爆破

  • 爆破用户名字典是什么

    grep "Failed password" /var/log/secure | perl -e 'while($_=<>){/for.(.*?) from/; print "$1\n";}' | uniq -c | sort -nr
    

    Linux定位爆破用户字典

  • 定位有多少IP在爆破成功主机的root账号

    grep "Accepted" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
  • 定位有哪些IP在爆破成功

    grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
    

三、中间件日志分析

1. 关键点

  1. 对访问时间进行统计,可以得到服务器在某些时间段的访问情况
  2. 对IP进行统计,可以得到用户的分布情况
  3. 对请求URL的统计,可以得到网站页面关注情况
  4. 对错误请求的统计,可以更正有问题的页面

2. Apache

(1). 日志格式

a. 默认存放位置

| 系统 | 存放位置 |
| ——- | —————————- |
| Windows | Apache安装目录的logs子目录中 |
| Linux | /usr/local/apache/logs |

b. 日志类型
①访问日志
②错误日志
③传输日志
④Cookie日志

(2). 访问日志

  • access_log,记录所有对apache服务器进行请求的访问
a. 格式

Apache访问日志格式

(3). 错误日志

  • error_log,记录了服务器运行期间遇到的各种错误(至少warn等级)
a. 格式

Apache错误日志格式

(4). 日志分析

  1. 查看IP

    cat access_log | awk '{print $1}'
    
  2. 显示访问前10位的IP地址,便于查找攻击源

    cat access_log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
    
  3. 显示指定时间以后的日志

    cat access_log | awk '$4>="[1/Jan/2020:00:00:00]"'
    
  4. 查看某一时间内的IP连接情况

    grep "2020:05" access_log | awk '{print $4}' | sort | uniq -c | sort -nr
    
  5. 查看指定的IP做了什么

    cat access_log | grep 192.168.108.1 | awk '{print $1"\t"$8"\t"$11}' | sort | uniq -c | sort -nr | more
    
  6. 查看最近访问量最高的文件

    cat access_log | tail -n 10000 | awk '{print $7}' | sort | uniq -c | sort -nr | more
    

四、数据库日志分析

  • /var/run/mysqld/

1. 错误日志

  • 定位mysql启动和运行中的一些问题

(1). 命令查看

#进入mysql命令行
show global variables like '%log_error%';

(2). 配置文件查看

#查找配置文件
cat my.cnf

2. 查询日志

  • 记录增删改查信息,默认关闭

(1). 命令查看

#进入mysql命令行
show variables like '%general_log%';

(2). 开启查询日志

#mysql命令行中
set global general_log = on;

3. 慢查询日志

  • 记录时间超过10s的查询语句,精确到毫秒

(1). 命令查看

#mysql命令行中
show global variables like '%slow%';

(2). 格式

  • 用户、查询耗时、sql语句、结果集数量

4. 二进制日志

  • 也叫做变更日志,主要用于记录修改数据、有可能改变数据的mysql语句,以事件的形式保存

(1). 命令查看

#mysql命令行中
show variables like 'log_bin';

#查看某条bin-log语句
#语法
show binlog events [int 'log_file'] [from position] [limit,[offset],row_count]

#实例
show binlog events in 'mysql-bin.000001' from 106 limit 4\G;
show binlog events;

数据库二进制查询

(2). 配置文件查看

#出现以下内容
server-id = 1
log-bin = mysql-bin     #开启二进制日志