文章目录
- 一、日志介绍
- 1.为什么要使用日志
- 2.分析日志的意义
- 3.常见的中间件
- 4.日志的关键点
- 二、apache日志
- 1.日志存放位置
- windows系统
- Linux系统
- 2.访问日志介绍
- 3.错误日志介绍
- 4.查看日志时经常使用的命令
- 三、IIS日志
- 四、日志分析工具
- 五、Windows日志
- 1.Windows事件日志
- (1)应用程序日志
- (2)系统日志
- (3)安全日志
- 事件级别
- 事件ID介绍
- 2.Windows事件日志分析
- (1)RDP协议远程登录
- (2)登陆爆破实例
- 攻击链还原实战
- 六、Linux日志
- 1.内核及系统日志
- 2.用户日志
- 认证日志(分布因发行版而异)
- 登录追踪三剑客
- 3.程序日志
- 常见日志文件
- 比较重要的几个日志
- 结语
一、日志介绍
1.为什么要使用日志
日志是系统运行的数字黑匣子,记录硬件、软件和用户行为的时序数据,核心价值包括:
- 故障排查:快速定位服务崩溃、资源瓶颈(如内存泄漏记录)
- 安全审计:追踪异常登录、恶意攻击(如暴力破解、SQL注入)
- 性能优化:分析请求响应时间、流量峰值
- 合规要求:满足GDPR等法规的数据操作留痕
2.分析日志的意义
将原始数据转化为可行动洞察:
- 趋势预测:通过历史日志预测资源使用趋势(如磁盘空间告警)
- 攻击溯源:结合IP、行为链还原攻击路径
- 体验优化:分析404错误率提升用户留存
3.常见的中间件
中间件 | 日志文件 | 核心内容 |
---|---|---|
Apache | access_log | 请求URL、状态码、响应时间 |
MySQL | error.log | 慢查询、连接异常 |
Kafka | server.log | 生产者/消费者状态 |
4.日志的关键点
- 结构化存储:采用JSON或键值对格式(如Nginx的
log_format
) - 日志分级:区分DEBUG(开发)和ERROR(告警)
- 敏感信息脱敏:自动屏蔽密码、Token等字段
二、apache日志
1.日志存放位置
windows系统
(1)打开phpstudy,选择httpd。
(2)删除方框内前面两个#号,保存退出,并重启phpstudy。
(3)在phpstudy的安装目录下,可以找到apache的日志文件。
Linux系统
默认安装的情况下,在/var/log/apache2/下。
2.访问日志介绍
192.168.1.100 - - [11/Jun/2025:14:30:22 +0800] "GET /index.html HTTP/1.1" 200 1234
%h
:客户端IP%t
:请求时间%r
:请求方法及URL%>s
:HTTP状态码(200成功,404未找到)
3.错误日志介绍
日志级别 | 严重性 | 说明与典型应用场景 |
---|---|---|
DEBUG | 最低 | 开发调试细节:记录详细开发信息(如请求头解析) |
INFO | 低 | 正常操作记录:记录常规事件(如服务启动完成) |
NOTICE | 中等 | 需关注的事件:重要但非错误的状态(如重定向) |
WARN | 中高 | 潜在问题警告:可能出现问题的操作(如磁盘空间不足、超时连接) |
ERROR | 高 | 功能故障:服务无法正常运作(如模块加载失败、服务无法启动) |
CRIT | 严重 | 严重错误:关键组件失效(如硬件故障、核心服务崩溃) |
ALERT | 危急 | 需立即干预:系统部分不可用(如主存储损坏) |
EMERG | 最高 | 系统不可用:整个系统崩溃(如操作系统宕机) |
4.查看日志时经常使用的命令
# TOP 10访问IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10# 抓取500错误
grep " 500 " access.log# 实时监控错误
tail -f error.log | grep -E 'ERROR|CRIT'
三、IIS日志
- 日志路径: C:\inetpub\logs\LogFiles\W3SVC1\;
- 关键字段:
c-ip:客户端IP
cs-method:HTTP方法
sc-status:状态码(如401未授权); - 安全分析: 筛选sc-status=401可发现暴力破解尝试。
四、日志分析工具
工具 | 适用场景 | 核心优势 |
---|---|---|
Log Parser | Windows日志分析 | SQL语法查询 |
GoAccess | Web服务器实时监控 | 终端可视化报表 |
ELK Stack | 大规模日志聚合 | 支持机器学习分析 |
五、Windows日志
1.Windows事件日志
(1)应用程序日志
- 记录内容:所有第三方软件运行事件
- 典型事件:
- 程序崩溃(.NET运行时错误)
- 服务启动/停止(如SQL Server服务异常)
- 软件安装更新记录
- 文件路径:
C:\Windows\System32\winevt\Logs\Application.evtx
(2)系统日志
- 记录内容:操作系统核心组件活动
- 关键事件:
- 驱动加载失败(事件ID 219)
- 系统启动/关机记录(事件ID 12/13)
- 磁盘空间不足警告(事件ID 201)
- 文件路径:
C:\Windows\System32\winevt\Logs\System.evtx
(3)安全日志
- 记录内容:所有安全相关操作
- 监控重点:
- 用户登录/注销
- 权限变更
- 账户管理操作
- 启用方法:
组策略 →计算机配置\Windows设置\安全设置\本地策略\审核策略
- 文件路径:
C:\Windows\System32\winevt\Logs\Security.evtx
事件级别
级别 | 含义 | 典型场景 |
---|---|---|
信息 | 常规操作记录 | 服务成功启动 |
警告 | 潜在问题 | 磁盘空间低于阈值 |
错误 | 功能故障 | 驱动加载失败 |
成功审核 | 安全操作成功 | 管理员登录成功 |
失败审核 | 安全操作被拒绝 | 密码错误导致登录失败 |
事件ID介绍
事件ID | 含义 | 攻击关联性 | 日志字段示例 |
---|---|---|---|
4624 | 登录成功 | 正常访问/攻击者成功入侵 | 登录类型:10 (RDP远程登录) |
4625 | 登录失败 | 暴力破解主要指标 | 状态码:0xC000006A (密码错误) |
4634 | 账户注销 | 攻击者清除痕迹 | 会话ID:12345 |
4647 | 用户主动注销 | 正常退出/攻击者中断连接 | 账户:Administrator |
4672 | 管理员特权分配 | 提权行为关键证据 | 特殊权限:SeDebugPrivilege |
4720 | 用户账号创建 | 后门账户建立 | 新账户:hacker$ |
4726 | 用户账号删除 | 攻击者清除痕迹 | 目标账户:TestUser |
2.Windows事件日志分析
(1)RDP协议远程登录
通过登录类型字段识别不同登录方式:
# 查询所有RDP登录记录(登录类型=10)
Get-WinEvent -LogName Security |
Where-Object {$_.Id -eq 4624 -and $_.Properties[8].Value -eq 10} |
Format-List TimeCreated,Message
关键字段解析:
源网络地址
:客户端IP登录进程
:User32
(常规登录)或tsv
(终端服务)身份验证包
:Negotiate
(NTLM)或Kerberos
(2)登陆爆破实例
攻击特征:同一IP在短时间内触发大量4625事件
检测脚本:
# 检测近1小时RDP爆破行为
$StartTime = (Get-Date).AddHours(-1)
Get-WinEvent -FilterHashtable @{LogName='Security'ID=4625StartTime=$StartTime
} | Group-Object -Property @{Expression={$_.Properties[18].Value} # 提取IP地址
} -NoElement |
Where-Object {$_.Count -gt 5} |
Sort-Object Count -Descending
防御响应流程:
- 锁定攻击IP:
New-NetFirewallRule -DisplayName "BlockAttacker" -RemoteAddress 192.168.1.100 -Direction Inbound -Action Block
- 检查可疑账户:
Get-WinEvent -LogName Security -ID 4720,4726 -MaxEvents 20
- 排查后门:
net user # 检查新增账户 net localgroup administrators # 检查权限提升
攻击链还原实战
某次入侵事件的时间线重建:
sequenceDiagram攻击者->>+服务器: 暴力破解RDP密码(事件ID 4625)服务器-->>-攻击者: 登录失败攻击者->>+服务器: 成功登录(事件ID 4624)服务器-->>-攻击者: 管理员权限攻击者->>服务器: 创建隐藏账户(事件ID 4720)攻击者->>服务器: 添加管理员权限(事件ID 4672)攻击者->>服务器: 清除日志(事件ID 1102)
六、Linux日志
1.内核及系统日志
Linux内核和系统服务日志是系统健康的晴雨表,主要分布在:
日志文件 | 作用描述 | 关键信息 |
---|---|---|
/var/log/messages | 系统级综合日志(通用消息) | 内核消息、服务启动/停止记录 |
/var/log/syslog | 系统活动总览(Debian系专用) | 认证日志、cron任务执行记录 |
/var/log/kern.log | 内核专属日志 | 硬件检测、驱动加载异常 |
/var/log/boot.log | 系统启动过程 | 各服务初始化状态及耗时 |
dmesg | 实时内核环缓冲区(内存中) | 硬件热插拔事件、USB设备识别 |
诊断示例(排查硬件故障):
# 查看最近10条内核错误
grep -i "error" /var/log/kern.log | tail -n 10# 检测USB设备异常
dmesg | grep -i "usb"
2.用户日志
用户行为日志是入侵检测的关键证据链:
认证日志(分布因发行版而异)
发行版 | 日志路径 | 记录内容 |
---|---|---|
RHEL/CentOS | /var/log/secure | SSH登录、sudo提权操作 |
Debian/Ubuntu | /var/log/auth.log | PAM认证、密码修改事件 |
登录追踪三剑客
日志文件 | 命令工具 | 作用描述 |
---|---|---|
/var/run/utmp | who | 当前登录用户实时快照 |
/var/log/wtmp | last | 历史登录记录完整追溯 |
/var/log/btmp | lastb | 失败登录尝试详细记录 |
关键操作:
# 查看最近5次失败登录
lastb -a -n 5# 检测异常登录地点(非办公IP)
last | grep -v "192.168.1"
3.程序日志
应用程序日志位置取决于安装方式:
程序类型 | 日志路径示例 | 监控要点 |
---|---|---|
APT包管理器 | /var/log/apt/history.log | 软件安装/删除记录 |
Cron计划任务 | /var/log/cron | 任务执行状态及输出 |
Docker容器 | /var/lib/docker/containers/*/*.log | 容器标准输出/错误流 |
常见日志文件
一台Linux不是所有的日志文件都有
比较重要的几个日志
场景 | 命令 | 日志文件 |
---|---|---|
当前登录用户 | w | /var/run/utmp |
历史登录记录 | last | /var/log/wtmp |
失败登录 | lastb | /var/log/btmp |
用户历史命令 | history | ~/.bash_history |
实时认证监控 | tail -f /var/log/auth.log | /var/log/auth.log |
内核错误 | dmesg -T | grep -i error | /var/log/kern.log |
结语
日志是系统的“数字足迹”,从tail -f实时监控到ELK大规模分析,合理运用日志工具可构建从运维到安全的完整防线。防御建议:
- 关键服务开启详细日志(如Apache的LogLevel warn → LogLevel info);
- 定期备份并加密存储日志(防攻击者篡改);
- 设置日志告警阈值(如1分钟内5次登录失败自动封锁IP)。