系统常规日志
/var/log/syslog (或者在一些系统上是 /var/log/messages) 是一个包含各种系统事件的通用日志文件。它通常是系统管理员和安全分析师在排查问题或调查安全事件时的首选资源。
/var/log/syslog 记录的信息非常广泛,包括但不限于:
- 系统启动和关机信息: 记录系统启动和关机过程中的关键事件。
- 硬件事件: 例如设备连接、驱动加载失败等。
- 邮件服务器信息: 例如邮件发送和接收的记录。
- 系统守护进程信息: 例如 cron、syslogd 等守护进程的运行状态和错误信息。
- 认证相关信息: 虽然
/var/log/auth.log更专注于认证事件,但/var/log/syslog也可能包含一些认证相关的消息,尤其是在 auth.log 未配置或不可用时。 - 应用程序日志: 一些应用程序会将日志信息写入 syslog,而不是单独的日志文件。
- 内核消息: 虽然
/var/log/kern.log更专注于内核消息,但/var/log/syslog也可能包含一些内核相关的消息,尤其是在 kern.log 未配置或不可用时。 - 其他系统事件: 例如网络连接、文件系统错误、服务启动失败等。
syslog 的重要性:
- 集中式日志记录: syslog 提供了一个集中式的位置来存储各种系统事件,方便管理员进行监控和管理。
- 故障排除: 当系统出现问题时,syslog 是一个重要的信息来源,可以帮助管理员快速定位问题所在。
- 安全审计: syslog 中记录的安全相关事件可以用于安全审计和入侵检测。
- 系统监控: 通过监控 syslog 中的事件,可以及时发现系统异常并采取相应的措施。
登录日志
Linux用户登录信息放在三个文件中:
1、/var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;
2、/var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;
3、/var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。
这三个文件都是二进制数据文件,并且三个文件结构完全相同,是由/usr/include/bits/utmp.h文件定义了这三个文件的结构体。
默认情况下文件的日志信息会通过logrotate日志管理工具定期清理。logrotate的配置文件是/etc/logrotate.conf,此处是logrotate的缺省设置,通常不需要对它进行修改。日志文件的轮循压缩等设置存放在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下,它会覆盖缺省设置。
如果不想记录相关信息,则可以直接将相关文件删除即可。如果系统不存在该文件,则需要在此路径touch一个文件就可以继续记录相关信息了。
| 特征 | /var/log/wtmp | /var/log/btmp | /var/log/utmp |
|---|---|---|---|
| 内容 | 用户登录/注销历史 | 失败的登录尝试 | 当前登录的用户 |
| 格式 | 二进制 | 二进制 | 二进制 |
| 查看工具 | last | lastb | w, who, users |
| 用途 | 追踪用户登录活动 | 调查失败登录 | 查看当前登录用户 |
此外:
如果想禁用who命令,则只需要将utmp的可读权限去掉就行,这样非root用户就不能用此命令了;如果是btmp文件,手工创建的话注意权限必须为600,否则不能正确写入信息。
认证日志
- 目的: 记录认证事件,包括成功和失败的登录、sudo 命令以及其他安全相关的活动。
- 位置:
/var/log/auth.log(Debian/Ubuntu) 或/var/log/secure(Red Hat/CentOS/Fedora)。 - 内容:
- 用户登录 (SSH、控制台等)
- sudo 命令使用
- 认证失败 (密码错误、无效用户)
- 用户帐户更改 (密码更改、组修改)
- SSH 密钥使用
- 查看:
less /var/log/auth.log、grep "sshd" /var/log/auth.log(过滤 SSH 事件)、journalctl -u sshd(用于 systemd 系统)。 - 重要性: 对安全审计和调查未经授权的访问尝试至关重要。
内核日志
- 目的: 记录来自 Linux 内核的消息,提供有关硬件和驱动程序问题的见解。
- 位置:
/var/log/kern.log(传统的 syslog) 或通过dmesg命令访问。 - 内容:
- 设备检测和初始化
- 驱动程序加载和错误
- 系统资源分配
- 内核警告和错误
- 模块加载/卸载
- 查看:
less /var/log/kern.log、dmesg、dmesg | grep "error"(过滤错误信息)、journalctl -k(用于 systemd 系统)。 - 重要性: 对于诊断硬件问题、驱动程序冲突和内核相关错误至关重要。