【玄机】第一章 应急响应-Linux日志分析

首先我们了解一下什么是linux日志分析

1. Linux 日志的作用

  • 故障排查:通过日志可以快速定位系统或应用程序的错误。

  • 性能监控:分析日志可以了解系统的资源使用情况(如 CPU、内存、磁盘等)。

  • 安全审计:日志记录了用户登录、文件访问、网络连接等活动,可用于检测异常行为。

  • 合规性检查:某些行业或法规要求记录和保留日志,以满足合规性要求。


2. Linux 日志文件的常见位置

  • 系统日志

    • /var/log/messages:通用系统日志(适用于大多数 Linux 发行版)。

    • /var/log/syslog:系统日志(适用于 Debian/Ubuntu)。

    • /var/log/dmesg:内核启动日志。

    • /var/log/boot.log:系统启动日志。

  • 用户登录日志

    • /var/log/auth.log 或 /var/log/secure:记录用户登录、认证和授权信息。

  • 应用程序日志

    • /var/log/apache2/access.log 和 /var/log/apache2/error.log:Apache Web 服务器日志。

    • /var/log/mysql/error.log:MySQL 数据库日志。

  • 服务日志

    • /var/log/cron:定时任务日志。

    • /var/log/maillog:邮件服务日志。

3. 日志分析工具

  • 命令行工具

    • cat:查看日志文件内容。

    • tail:查看日志文件的最后几行(常用于实时监控日志)。

      tail -f /var/log/syslog
    • grep:搜索日志中的关键字。

      grep "error" /var/log/messages
    • awk:提取和格式化日志内容。

      awk '/error/ {print $1, $2, $5}' /var/log/messages
    • sed:编辑和过滤日志内容。

      sed -n '/error/p' /var/log/messages
  • 高级工具

    • journalctl:查看和管理 systemd 日志。

      journalctl -u nginx.service
    • logrotate:日志轮转工具,用于管理日志文件的大小和保留时间。

    • rsyslog 或 syslog-ng:日志管理服务,支持日志的集中存储和远程传输。

  • 图形化工具

    • Logwatch:生成日志摘要报告。

    • ELK Stack(Elasticsearch, Logstash, Kibana):用于日志的集中存储、分析和可视化。

    • Graylog:开源的日志管理平台。


4. 日志分析的关键步骤

  1. 收集日志

    • 确定需要分析的日志文件。

    • 使用工具(如 rsyslog)将日志集中存储。

  2. 过滤和提取

    • 使用 grepawk 等工具提取关键信息。

    • 例如,查找错误日志:

      grep -i "error" /var/log/syslog
  3. 分析和统计

    • 统计日志中的事件频率。

    • 例如,统计每小时登录次数:

      awk '/Failed password/ {print $1, $2}' /var/log/auth.log | uniq -c
  4. 可视化

    • 使用工具(如 Kibana)将日志数据可视化,生成图表和仪表盘。

  5. 告警和响应

    • 设置日志监控规则,发现异常时触发告警。

    • 例如,检测多次登录失败:

      grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

5. 日志分析的常见场景

  • 系统故障排查

    • 查找系统崩溃或服务停止的原因。

    • 例如,检查内核日志:

      dmesg | grep -i "error"
  • 性能问题分析

    • 分析系统资源使用情况。

    • 例如,查找高 CPU 使用率的进程:

      grep "CPU usage" /var/log/syslog
  • 安全事件检测

    • 检测异常登录或攻击行为。

    • 例如,查找暴力破解登录尝试:

      grep "Failed password" /var/log/auth.log
  • 应用程序调试

    • 查找应用程序的错误日志。

    • 例如,查找 Apache 错误日志:

      tail -n 50 /var/log/apache2/error.log

6. 日志分析的最佳实践

  • 定期轮转日志:使用 logrotate 防止日志文件过大。

  • 集中存储日志:将多台服务器的日志集中存储,便于统一分析。

  • 设置日志级别:根据需求调整日志级别(如 debuginfoerror)。

  • 监控关键日志:设置实时监控和告警,及时发现异常。

  • 保护日志安全:限制日志文件的访问权限,防止篡改或泄露

 接下来我们来做第一题

启动环境后用xhsell连接

进来后先查找一下日志在哪里

一般都在/var/log里面

当然也可以用find工具来进行定位,不过要先退出刀根目录下

登录保存的日志是auth.log

有两个,我们先查看第一个,可以看到是我们登录的信息

为什么会有auth.log.1文件

auth.log.1 当auth.log达到一定的大小的时候。系统就会给他重命名成auth.og.1,又会重新创建一个auth.log的日志文件,日志轮转,有策略,比如一天轮转一次,当日志文件达到一定大小的时候进行轮转,或者是保留一定数量的轮转文件,还有可能存在auth.log.2等等

所以我们重点查看auth.log.1文件

可以看到很多条信息,这里的信息还是偏少的可以直接查找,因为题目提到了root用户,那么直接找root用户的登录记录就好。当然可以直接用命名进行筛选

1.手工查找

2.命令查找

cat /var/log/auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
  1. cat /var/log/auth.log.1

    • 读取并显示 auth.log.1 文件的内容。

  2. grep -a "Failed password for root"

    • 从文件内容中筛选出包含 "Failed password for root" 的行,这些行表示尝试以 root 用户身份登录失败的记录。

  3. awk '{print $11}'

    • 使用 awk 提取每行的第 11 个字段。假设日志格式为标准格式,第 11 个字段通常是尝试登录的 IP 地址。

  4. sort

    • 对提取的 IP 地址进行排序,以便后续的 uniq 命令可以正确统计重复项。

  5. uniq -c

    • 统计每个唯一 IP 地址的出现次数。-c 选项会在每行前显示该 IP 地址出现的次数。

  6. sort -nr

    • 对统计结果进行数字逆序排序(-n 表示按数字排序,-r 表示逆序),以便最频繁尝试的 IP 地址排在最前面。

  7. more

    • 分页显示结果,方便查看。

 第一题的答案就出来了,按照题目要求用‘,’隔开,从小到大

flag{192.168.200.2,192.168.200.31,192.168.200.32}

第二题

爆破成功的IP

那么我们就得先理解怎么看成功

一样可以手工查找或者命名查找

手工查找

这里就不一个一个找了直接用命令了

命令查找

将第一题的命令中"Failed password for root"改成Accepted password就可以了

cat /var/log/auth.log.1 | grep -a 'Accepted password'

这样就得到了第二题的答案了

flag{192.168.200.2}

第三题

不就是让我们查找看一共爆破了多少用户,这里就不手工查找了直接命令查找比较快

cat auth.log.1 | grep -a "Failed password" |perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
  1. cat auth.log.1:读取 auth.log.1 文件的内容。

  2. grep -a "Failed password":筛选出包含 "Failed password" 的行。

  3. perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'

    • 使用 perl 脚本逐行处理输入。

    • 正则表达式 /for(.*?) from/ 匹配 "for" 和 "from" 之间的内容(通常是用户名)。

    • 打印匹配到的用户名。

  4. uniq -c:统计每个唯一用户名的出现次数。

  5. sort -nr:按出现次数逆序排序。

得到第三题的答案,按顺序排列下来写

flag{user,hello,root,test3,test2,test1}

第四题

那么我们直接用命名查看

这里注意了题目说的是成功登录的IP一共爆破了多少次,而不是成功了多少次。我也是踩了个坑

cat /var/log/auth.log.1 | grep -a 'Accepted password for root'

这样子看到两天肯定是错的

我们直接用第一题的命名来查看就好了

cat auth.log.1 | grep -a "Failed password for root" | awk '{print $11}' | sort | uniq -c | sort -nr | more
  1. uniq -c

    • 统计每个唯一 IP 地址的出现次数。-c 选项会在每行前显示该 IP 地址出现的次数。

第四题的答案是

flag{4}

第五题

后门用户是指在系统中被恶意创建或修改的用户账户,目的是为了绕过正常的安全检查和控制,以便攻击者可以随时访问系统。这种用户通常是由黑客或恶意软件创建的,用于在未来的攻击中保持对系统的访问权限。

新类型的题目,不过都大差不差

步骤1:找到日志文件

找到登录的日志文件一般都是 /var/log/auth.log 或是备份文件如 /var/log/auth.log.1

步骤2:查找新建用户

用 grep 命令搜索与创建用户的关键字,如 new user

cat /var/log/auth.log.1 | grep -a "new user"

步骤3:分析执行上下文

查找到新用户后看一下是否由合法用户执行,或有没有可疑的远程登录记录。

grep "Accepted" /var/log/auth.log.1

步骤4:进一步确认

结合其他日志文件,如 /var/log/syslog,查看是否有异常的命令执行或系统变更。

这里我们用命令查找一下新建用户就好

 

cat /var/log/auth.log.1 | grep -a 'new user'

看到有两条信息

登录成功的IP只有192.168.200.2,那么第二条信息肯定就不是了

第五题的答案

flag{test2}

### Linux应急处理 第一章 内容 #### 1. 环境介绍 在进行Linux应急响应时,首先要确认当前系统的环境。对于Debian系统而言,可以通过命令`lsb_release -a`来查看发行版的具体信息[^1]。 ```bash root@ip-10-0-10-2:~# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster ``` #### 2. 日志分析基础 日志文件是应急响应中的重要资源之一,在Linux系统中尤其如此。除了常见的syslog外,还存在专门用于记录认证事件的日志文件——`/var/log/auth.log`。此文件不仅限于保存用户的登录尝试情况,还包括了更多类型的账户活动详情[^2]。 为了防止因二进制数据导致的错误输出,在使用工具如`grep`读取这些特殊格式的日志条目时应加上选项`-a`以确保正常解析文本内容: ```bash cat /var/log/auth.log | grep -a "关键词" ``` #### 3. 安全审计案例研究 针对特定场景下的安全审查工作,比如检测是否存在暴力破解攻击行为,则可以利用shell脚本组合多个命令实现自动化统计功能。例如计算某个时间段内成功登陆次数最多的IP地址及其对应的访问频率: ```bash cat /var/log/auth.log* | grep -a "Accepted" | awk '{print $11}' | sort -nr | uniq -c ``` 上述指令将会筛选出所有成功的SSH连接请求,并按照远程主机名或公网IPv4地址分组计数显示出来[^4]。 #### 4. 实战练习提示 当面对实际问题时,可能会遇到各种意外状况,像之前提到过的由于未正确设置参数而引起的程序异常终止等问题都属于常见挑战的一部分。因此建议读者多加实践并熟悉常用调试技巧,以便能够在真实环境中快速定位并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值