作为IT工程师,识别Linux系统中的异常行为是安全运维的关键任务。以下是一套系统的方法来识别和分析日志中的异常行为:
首先需要了解Linux系统中重要的日志文件位置:
- /var/log/auth.log
或 /var/log/secure
- 认证相关日志
- /var/log/syslog
- 系统活动日志
- /var/log/kern.log
- 内核日志
- /var/log/audit/audit.log
- 审计日志(如果启用了auditd)
- /var/log/messages
- 通用系统消息
- /var/log/apt/
- 包管理日志(Debian系)
- /var/log/yum.log
- 包管理日志(RHEL系)
grep "Failed password" /var/log/auth.log
grep "session opened" /var/log/auth.log | grep -v "正常工作时间"
grep "Accepted password for root" /var/log/auth.log
grep "Invalid user" /var/log/auth.log
grep "Started" /var/log/syslog | grep -v "正常服务"
grep "sudo:" /var/log/auth.log | grep "incorrect password attempts"
grep "service" /var/log/syslog | grep "restart"
ausearch -f /etc/shadow
(需要auditd)find /etc -type f -mtime -1
(检查最近修改的文件)grep
- 文本搜索awk
- 文本处理sed
- 流编辑器tail
/head
- 查看日志首尾journalctl
- systemd日志查看#!/bin/bash
# 检查失败的SSH登录
echo "==== Failed SSH Logins ===="
grep "Failed password" /var/log/auth.log | awk '{print $9}' | sort | uniq -c | sort -nr
# 检查sudo使用情况
echo -e "\n==== Sudo Usage ===="
grep "sudo:" /var/log/auth.log | grep "COMMAND" | awk -F'COMMAND=' '{print $2}' | sort | uniq -c | sort -nr
# 检查异常进程终止
echo -e "\n==== Unexpected Process Terminations ===="
grep -i "killed process" /var/log/syslog
# 检查磁盘空间异常变化
echo -e "\n==== Disk Space Changes ===="
df -h | grep -v "tmpfs"
auditd
可以提供更详细的安全审计通过系统性地监控和分析这些日志,您可以及时发现Linux系统中的异常行为,采取相应措施保障系统安全。