1. 首页 > 技术教程 > 正文

日志审计:通过 dmesg 与 secure 日志排查系统隐患

日志审计:通过 dmesg 与 secure 日志排查系统隐患

服务器无缘无故卡死、SSH 连不上、进程被莫名杀掉?别急着重装系统。主机选这篇 Linux 教程直接告诉你,**用 dmesg 和 secure 日志就能快速定位 80% 的系统隐患**。老运维都懂,日志不会骗人。

日志审计:通过 dmesg 与 secure 日志排查系统隐患的图片

为什么系统日志是排查隐患的第一道防线

很多运维新手一出问题就去搜“CPU 满了怎么办”,其实第一步应该是看日志。系统日志记录了内核的每一次崩溃、硬件的每一次报错、以及所有登录尝试。**不看日志就瞎搞,等于闭着眼修车**。

dmesg:内核的“心电图”

dmesg 输出的是内核环形缓冲区的内容,主要记录硬件驱动、设备挂载、内存错误、磁盘 I/O 异常等底层事件。服务器出现不明原因的宕机、磁盘读写慢、网卡掉线,先跑 dmesg 准没错。

dmesg | tail -50

只看最后 50 行,通常最新报错在最下面

secure 日志:SSH 与认证的“黑匣子”

secure 日志(路径通常是 `/var/log/secure`)记录所有与用户认证相关的事件,包括 SSH 登录成功/失败、sudo 提权、用户切换等。**暴力破解、未授权登录、密钥失效**,全在这里现原形。

tail -100 /var/log/secure

快速查看最近 100 条认证记录

实战:用 dmesg 定位硬件与内核隐患

硬件层面的问题,比如内存条坏了、硬盘有坏道、网卡驱动崩溃,应用层日志根本看不到,但 dmesg 一抓一个准。

排查磁盘 I/O 异常与硬盘坏道

服务器响应变慢,`top` 看到 `iowait` 居高不下,先别急着优化数据库。跑一下 dmesg 看看是不是硬盘在报错。

dmesg | grep -i “error\|fail\|critical”

过滤出包含 error/fail/critical 的行,忽略大小写

如果看到类似 `Buffer I/O error on device sda` 或 `ata3.00: failed command` 的信息,基本可以断定硬盘物理层出问题了。**别犹豫,直接备份数据换盘**,软件层面救不了物理坏道。

追踪 OOM Killer 与内存泄漏

进程突然被杀掉,`top` 看内存还有剩余?很可能是 OOM Killer 误杀了进程。dmesg 会明确告诉你哪个进程被杀了,以及当时的内存压力。

dmesg | grep -i “oom\|killed”

搜索 OOM Killer 触发记录

输出像这样:`Out of memory: Killed process 12345 (nginx)`。看到这条,说明内存真的不够了。如果服务器内存明明很大,可能是某个进程有内存泄漏,**用 `pmap` 或 `smem` 追查具体进程**。

检查网卡驱动与硬件错误

网络断断续续、丢包严重,别只怀疑带宽。dmesg 里会记录网卡驱动报错,比如 `igb: eth0: Reset adapter` 或 `r8169: link down`。这类问题通常需要更新驱动或更换网卡。

dmesg | grep -i “eth\|net\|link”

过滤网络相关事件

实战:用 secure 日志揪出暴力破解与未授权访问

secure 日志是排查 SSH 安全问题的核心。**暴力破解、弱密码、异常登录**,全看它。

快速查看失败登录次数与 IP

服务器被扫了?看看 secure 日志里有多少 `Failed password` 记录。次数太多,说明你的 SSH 正在被字典攻击。

grep “Failed password” /var/log/secure | awk ‘{print $(NF-3)}’ | sort | uniq -c | sort -nr | head -10

统计每个 IP 的失败登录次数,按次数降序排列,只看前 10 个

看到某个 IP 尝试了几百上千次,直接封掉。**老鸟叮嘱:别只用 `iptables` 封,配合 `fail2ban` 自动封禁更省心**。

检查 root 账号直接登录记录

很多新手喜欢直接用 root 账号 SSH 登录,这是高危操作。secure 日志会记录每次 root 登录,包括成功和失败。

grep “Accepted password for root” /var/log/secure

查看 root 账号成功登录的记录

如果发现有非预期 IP 用 root 登录成功,**立即修改 root 密码,并禁用 root 远程登录**。修改 `/etc/ssh/sshd_config`,把 `PermitRootLogin` 改成 `no`,然后重启 sshd。

排查 sudo 提权与用户切换

怀疑有人搞小动作?看看谁在偷偷用 sudo 提权。

grep “sudo” /var/log/secure | grep “COMMAND”

查看所有 sudo 执行记录,包括谁、什么时候、执行了什么命令

如果发现某个普通用户频繁执行 `sudo su -` 或 `sudo -i`,而且不是你授权的,说明这个账号可能已经失陷了。

老鸟叮嘱:日志轮转与权限管理

千万别忽视日志文件本身的安全。**secure 日志默认只有 root 和 wheel 组成员能读**,如果发现普通用户能查看,赶紧检查 `/var/log` 目录权限。另外,日志文件会随着时间增长变得巨大,一定要配置 `logrotate` 自动切割压缩,否则磁盘被日志塞满,系统会直接宕机。

cat /etc/logrotate.d/syslog

确认 syslog 日志的轮转策略,默认通常是一周一次

FAQ

dmesg 和 secure 日志有什么区别?

dmesg 记录内核级事件(硬件、驱动、内存等),secure 日志记录用户认证事件(SSH 登录、sudo 提权等)。排查硬件问题看 dmesg,排查安全问题看 secure。

Linux SSH 连不上怎么办?

先看 secure 日志里有没有 `Failed password` 或 `Connection refused`。如果日志显示连接被拒绝,检查 sshd 是否在运行:`systemctl status sshd`。如果显示认证失败,可能是密码错误或密钥不对。

VPS 防火墙端口放行后还是访问不了是什么原因?

除了检查 `iptables` 或 `firewalld`,还要看 dmesg 里是否有网卡驱动报错。有时候是 VPS 母鸡限制了端口,或者你的服务只监听了 127.0.0.1。用 `netstat -tlnp` 确认服务监听地址。

Linux 小白可以直接用 root 账号操作吗?

不建议。用普通用户配合 sudo 更安全,因为 secure 日志会记录每次 sudo 操作。root 操作没有审计痕迹,出问题很难追查。

dmesg 日志太多,怎么看最新的?

`dmesg | tail -50` 只看最后 50 行。或者用 `dmesg –level=err,warn` 只看错误和警告级别。

BBR 开启后为什么速度没有明显提升?

先跑 `dmesg | grep bbr` 确认 BBR 模块是否加载成功。如果没加载,检查内核版本是否支持。另外,BBR 对丢包率低的线路效果明显,对高延迟但高丢包的线路效果有限。

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9417.html 商家投稿邮箱:zhujixuanblog@qq.com