linux应急响应 (1)

news/2025/3/6 22:15:02/文章来源:https://www.cnblogs.com/guixiangyyds/p/18756625

HEAD:在检查配置文件时,应该寻找以下异常:

  • 不正常的文件权限或所有权更改
  • 不寻常的配置选项或值
  • 文件的时间戳与预期不符
  • 文件大小与预期不符
  • 不应该存在的用户或组
  • 不熟悉的命令或脚本路径

使用stat命令可以查看文件的详细信息,包括权限、大小、修改时间等

如果我们提前做了文件的md5sum,就可以通过比较文件的MD5值快速定位那些文件遭到了修改

排查开机启动项

伴随开机启动,一般生产服务器很少重启,但是为防止被控机器失联,部分木马会添加开机启动项作为复活手段

1.检查rc.local文件

rc.local是一个在许多Linux发行版中用于在系统启动时运行自定义脚本的文件

cat /etc/rc.local

2.检查init.d目录

init.d目录包含了系统启动和关机时运行的脚本

ls -l /etc/init.d

3.检查systemd服务

在较新的Linux发行版中,systemd是默认的初始化系统和服务管理器

systemctl list-unit-files
systemctl list-dependencies multi-user.target

4.检查cron任务

虽然cron任务不是开机启动项,但它们在系统运行时执行,因此也需要检查

crontab -l
ls -lR /etc/cron* /etc/crontab
cat /etc/anacrontab

扩展:

__/etc/crom.allow__存放可创建定时任务账户,一行一个账户名,已经创建的定时任务不受影响

__/etc/cron.deny__存放不可创建定时任务账户,一行一个账户名,已经创建的定时任务不受影响

相关链接

5.检查bashrc文件

用户的.bashrc文件在用户登录时运行,有时会被用来添加恶意脚本

cat ~/.bashrc

6.检查profile文件

/etc/profile和/etc/bash.bashrc等文件在用户登录时执行

cat /etc/profile
cat /etc/bash.bashrc

7.检查login和logout脚本

检查/etc/login.defs和/etc/logout.d目录,看是否有不寻常的脚本

cat /etc/login.defs
ls -l /etc/logout.d

8.检查Xsession文件

如果系统使用图形界面,Xsession文件可能会在启动图形会话时运行脚本

cat /etc/X11/Xsession

9.检查/etc/inittab(对于较老的系统)

在较老的系统中,inittab文件控制着系统的启动级别

cat /etc/inittab

10.检查/tec/rc*.d目录

在一些系统中,/etc/rc*.d目录包含启动脚本

ls -l /etc/rc*.d

11. 检查/etc/init目录(Upstart)

在一些使用Upstart的系统上,/etc/init目录包含启动配置

ls -l /etc/init

排查系统配置文件

在Linux应急响应中,系统配置文件的检查是关键步骤之一,因为这些文件可能被篡改以改变系统行为或隐藏恶意活动

1. 检查/etc/passwd和/etc/shadow

检查系统用户和密码文件

cat /etc/passwd
cat /etc/shadow

2.检查/etc/group和/etc/gshadow

检查用户组信息

cat /etc/group
cat /etc/gshadow

3.检查/etc/sudoers

检查哪些用户和组有sudo权限

cat /etc/sudoers

4. 检查/etc/hosts和/etc/hosts.allow、/etc/hosts.deny

检查本地网络配置和允许/拒绝的连接

cat /etc/hosts
cat /etc/hosts.allow
cat /etc/hosts.deny

5. 检查/etc/resolv.conf

检查DNS配置

cat /etc/resolv.conf

6. 检查/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-*

检查网络接口配置

cat /etc/network/interfaces
ls -l /etc/sysconfig/network-scripts/ifcfg-*

7. 检查/etc/ssh/sshd_config

检查ssh服务配置

cat /etc/ssh/sshd_config

8. 检查/etc/inetd.conf和/etc/xinetd.conf

检查网络守护进程服务配置

cat /etc/inetd.conf
cat /etc/xinetd.conf

9. 检查/etc/rsyslog.conf和/etc/syslog.conf

检查系统日志配置

cat /etc/rsyslog.conf
cat /etc/syslog.conf

10.检查/etc/fstab

检查文件系统挂载点

cat /etc/fstab

11.检查/etc/aliases和/etc/mail/aliases

检查邮件别名配置

cat /etc/aliases
cat /etc/mail/aliases

12.检查/etc/pam.d/目录

检查认证模块配置

ls -l /etc/pam.d/

13.检查/etc/audit/audit.rules

检查审计规则

cat /etc/audit/audit.rules

14. 检查/etc/login.defs

检查登录相关配置

cat /etc/login.defs

15. 检查/etc/securetty

检查哪些TTY允许root登录

cat /etc/securetty

16. 检查/etc/sysctl.conf

检查内核参数配置

cat /etc/sysctl.conf

17. 检查/etc/issue和/etc/issue.net

检查系统登录前的信息

cat /etc/issue
cat /etc/issue.net

排查各项资源异常

1.系统资源使用情况

  • 查看cpu使用情况

    查看实时的系统资源使用情况

    top或者htop

查看每个cpu核心的使用情况

mpstat -P ALL 1
  • 查看内存使用情况

查看内存使用情况,以MB为单位

free -m

监控虚拟内存统计信息

vmstat 1
  • 查看磁盘使用情况

查看磁盘空间使用情况

df -h

查看指定目录的磁盘使用情况

du -sh /path/to/directory
  • 查看系统负载
uptime
  • 查看网络使用情况

查看网络连接、端口监听和进程信息

netstat -tunapl

查看实时的网络流量

iftop或者nethogs

2.异常进程排查

  • 查找异常进程

查看所有进程及其资源使用情况

ps aux | less

查看CPU使用率最高的进程

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head

查看内存使用率最高的进程

ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head
  • 分析进程

跟踪进程的系统调用和信号

strace -p <pid>

查看进程打开的文件

lsof -p <pid>

3.登录日志和系统

  • 查看登录日志

查看成功的登录尝试

last

查看失败的登录尝试

lastb
  • 审计系统

查看当前的审计规则

auditctl -l

搜索最近的审计日志中的AVC(访问向量缓存)消息

ausearch -m avc -ts recent

4.文件系统检查

  • 查找异常文件

查找SUID文件

find / -type f -perm -4000

查找大于100MB的文件

find / -type f -size +100M
  • 文件完整性检查

检查RPM数据库中的文件完整性

rpm -Va

检查包的完整性(对于基于Debian的系统)

apt-get check

5.系统服务和内核模块

  • 查看启动的服务

查看正在运行的服务

systemctl list-units --type=service --state=running
  • 查看加载的内核模块

列出已加载的内核模块

lsmod

6.日志分析

  • 分析日志系统

查看最新的系统日志

journalctl -xe

查看包含“error”的系统日志

cat /var/log/syslog | grep -i error
  • 分析安全日志

查看安全相关的日志

cat /var/log/secure

7.检查网络配置

  • 查看网络配置

查看网络接口配置

ip a

查看iptables规则

iptables -L

威胁情报

1. 理解威胁情报

威胁情报是指有关已知的威胁和漏洞的信息,包括攻击者的行为、方法、工具、基础设施和意图。它通常由以下部分组成:

  • 攻击者的信息:如IP地址、域名、URLs、邮箱地址等
  • 恶意软件特征:如哈希值、签名、行为模式等
  • 漏洞信息:包括已知的漏洞及其可能的利用方式
  • 安全事件:关于其他组织遭受的攻击的信息

2. 获取威胁情报

  • 订阅威胁情报服务,如 AlienVault OTX, ThreatCrowd, VirusTotal 等

  • 加入安全社区和论坛,如 SANS Internet Storm Center, Security Stack Exchange 等

  • 关注安全博客和研究者发布的最新动态

3. 集成威胁情报到应急响应流程

  • 自动化情报收集:使用工具如 curl, wget 或专用的威胁情报API来定期获取情报
  • 情报处理:将收集到的情报进行格式化处理,以便于后续分析
  • 情报分析:分析情报与当前系统日志、网络流量等数据的关联性

4. 威胁情报平台

威胁情报平台可以查出一些域名和IP地址的信誉度,一旦发现它们存在网络攻击痕迹迅速封禁

  • 微步在线

  • virustotal

  • 安恒威胁分析平台

  • 深信服威胁情报中心

  • VenusEye威胁情报中心

  • 360威胁情报中心

  • Data Mining for Threat Intelligence

排查SSH后门

  • 检查SSH配置文件

查看SSH配置文件/etc/ssh/sshd_config,确认是否有异常的配置项

cat /etc/ssh/sshd_config
  • 检查ssh登录日志

查看SSH登录日志,通常位于/var/log/auth.log/var/log/secure,寻找异常的登录尝试或成功的登录记录

grep 'sshd' /var/log/auth.log
grep 'sshd' /var/log/secure
  • 检查ssh密钥文件

检查~/.ssh/authorized_keys文件,确认是否有未知的公钥

cat ~/.ssh/authorized_keys
  • 检查异常进程

使用ps命令检查是否有异常的SSH进程

ps aux | grep ssh
  • 检查网络连接

使用netstatss命令检查是否有异常的网络连接

netstat -tunapl | grep ssh
ss -tunapl | grep ssh

Rootkit

Rootkit是一种恶意软件,它被设计用来隐藏自己的存在和活动,同时允许未授权的用户获得对系统的管理员(root)级别的访问权限。Rootkit通常在系统被攻陷后植入,它可以修改系统的核心组件,使得攻击者能够在不被发现的情况下控制系统

1. 准备工作

  • 确保有一个干净的环境,最好是从一个可信任的Live CD启动系统,以避免rootkit在运行时干扰检测工具
  • 禁用网络连接,以防止rootkit与外界通信

2. 使用内置工具检查系统

  • pstop:检查是否有不熟悉的进程运行。
  • lsmod:检查加载的内核模块。
  • netstatss:检查网络连接和监听端口。
  • dmesg:检查内核日志消息

3. 使用专用工具检测rootkit

  • rkhunter
rkhunter --check
  • chkrootkit
chkrootkit
  • unhide:这是一个用于检测隐藏进程和端口的工具

4. 检查文件完整性

Tripwire:如果你之前安装了Tripwire并生成了基线,你可以使用它来检查文件完整性

tripwire --check

5. 重启到安全模式

如果可能,重启系统到安全模式或单用户模式,这样可以防止rootkit在启动时加载

6. 移除rootkit

  • 检测到rootkit,根据具体工具的指导移除它,可能需要删除文件、停止服务或卸载内核模块

  • 修复任何被rootkit利用的漏洞

  • 更改所有密码,特别是root用户和其他管理员账户的密码

  • 如果Warning但是没有排查出来,可将warning的命令在同版本系统内拷贝过来一份,将原有的删除

  • 如何删除隐藏的rootkit:

    • 如果知道它的名字可直接删除

    • Rootkit在内核模块里找不到,那么就存在删除不掉的可能,这时候需要将感染系统以文件挂载到其他Linux系统上进行清楚操作

7. 防御措施

  • 更新系统补丁和软件包
  • 安装和配置入侵检测系统(IDS)和入侵防御系统(IPS)
  • 实施更严格的安全策略,如使用AppArmor或SELinux

注意事项

  • 在处理rootkit时,可能会遇到它们尝试隐藏自身或干扰检测工具的情况。
  • 如果不熟悉这些工具或过程,可能需要专业的帮助。
  • 确保备份重要数据,以防在移除rootkit的过程中发生数据丢失。

排查系统日志

1.理解日志文件

Linux系统中有多种日志文件,它们通常位于__/var/log/__目录下。以下是一些常见的日志文件:

  • /var/log/messages/var/log/syslog:系统日志,包含系统级别的消息
  • /var/log/auth.log/var/log/secure:认证相关的日志,包括登录尝试和授权信息
  • /var/log/kern.log:内核日志,记录内核相关的消息
  • /var/log/cron.log:Cron作业的日志
  • /var/log/boot.log:系统启动过程中的日志

2. 查看日志文件

  • 使用catlessmoretail命令查看日志文件内容。

    bash

    tail -f /var/log/auth.log
    

    使用-f选项可以实时监控日志文件的更新。

  • 使用grep命令搜索特定的关键词或模式。

    grep "Failed password" /var/log/auth.log
    

3. 分析日志

  • 查找异常的登录尝试、失败的认证、未知的IP地址或异常的用户活动
  • 检查日志中的时间戳,以确定事件发生的时间
  • 注意日志中的错误和警告消息

4. 日志分析工具

  • ausearch:用于搜索Audit框架的日志

    ausearch -m USER_AUTH -ts recent
    
  • logwatch:一个日志分析工具,可以定期发送日志分析报告

    logwatch --range today --detail high
    

5. 日志轮转

  • 检查日志轮转配置,确保日志文件没有被不当地轮转或删除

    cat /etc/logrotate.conf
    

6. 审计和监控系统

  • 如果系统配置了审计(Audit)功能,可以使用以下命令查看审计日志

    ausearch -m avc -ts today
    

7. 保留证据

​ 在分析日志时,确保保留所有相关证据,以便进行进一步的分析或调查

注意事项

  • 日志文件可能会非常大,因此需要高效地搜索和分析
  • 确保日志文件的完整性,避免在分析过程中修改它们
  • 如果系统受到攻击,攻击者可能会尝试清除日志,因此需要检查日志文件的完整性

中间件日志排查

在Linux应急响应中,除了系统日志之外,中间件日志也是非常重要的调查对象。中间件(如Web服务器、数据库服务器等)的日志可以提供关于应用程序层和其交互的详细信息

1. 确定中间件类型

首先,需要确定系统中运行的中间件类型,常见的有:

  • Apache HTTP Server
  • Nginx
  • MySQL
  • PostgreSQL
  • MongoDB
  • Tomcat
  • JBoss
  • Redis

2. 定位中间件日志文件

不同中间件的日志文件位置可能不同,以下是一些常见中间件的日志文件位置:

  • Apache:

    • /var/log/apache2/access.log
    • /var/log/apache2/error.log
  • Nginx:

    • /var/log/nginx/access.log
    • /var/log/nginx/error.log
  • MySQL:

    • /var/log/mysql/mysql.log
    • /var/log/mysql/error.log
  • PostgreSQL:

    • /var/log/postgresql/postgresql-*.log
  • MongoDB:

    • /var/log/mongodb/mongodb.log
  • Tomcat:

    • /var/log/tomcat/catalina.out
  • JBoss:

    • /var/log/jboss/server.log
  • Redis:

    • /var/log/redis/redis-server.log

3. 查看和分析日志

  • 使用 cat,less,more,tail 等命令查看日志文件

    tail -f /var/log/nginx/access.log
    
  • 使用 grep,awk,sed等工具进行日志筛选和分析

    grep "404" /var/log/apache2/error.log
    

4. 查找异常模式

  • 查找异常的HTTP状态码(如404、500等)
  • 检查频繁的访问模式或来自同一IP地址的大量请求
  • 查找SQL注入、XSS攻击或其他Web攻击的迹象
  • 检查认证失败、权限更改或配置更改的记录

5. 使用日志分析工具

  • GoAccess:用于实时Web日志分析和报告

    goaccess /var/log/nginx/access.log -a
    
  • ELK Stack(Elasticsearch, Logstash, Kibana):用于更高级的日志管理和分析

补充

1. 配置文件检查

  • 自动化工具: 可以使用自动化工具(如 tripwire, aide)定期检查配置文件的完整性,并生成基线进行比较
  • 版本控制: 使用版本控制系统(如 git)管理配置文件,可以方便地追踪文件的修改历史和回滚到安全状态

2. 开机启动项排查

  • systemd 分析: 可以使用 systemctl status 命令查看服务的状态和依赖关系,更深入地分析启动项
  • 环境变量: 检查环境变量,如 PATH, LD_LIBRARY_PATH 等,确保没有添加恶意路径

3. 系统配置文件排查

  • 审计规则: 除了 /etc/audit/audit.rules,还需要检查 /etc/audit/rules.d/ 目录下的规则文件
  • SELinux: 如果系统启用了 SELinux,需要检查 SELinux 的状态和策略配置

4. 资源异常排查

  • 性能分析工具: 使用性能分析工具(如 perf, atop)更深入地分析系统资源的消耗情况
  • 异常网络流量: 使用网络流量分析工具(如 wireshark, tcpdump)分析异常的网络流量

5. 日志分析

  • 日志聚合: 使用日志聚合工具(如 ELK Stack, Graylog)将来自不同系统的日志集中管理,方便进行统一分析和监控
  • 日志分析工具: 使用日志分析工具(如 splunk, logstash)进行更高级的日志分析和可视化

6. 中间件日志排查

  • 特定中间件工具: 使用特定中间件的日志分析工具,例如 Apache 的 mod_log_analyzer, Nginx 的 logrotate 等
  • 应用程序日志: 除了中间件日志,还需要分析应用程序自身的日志,以获取更详细的错误信息和攻击迹象

7. 威胁情报

  • 实时情报: 获取实时威胁情报,例如使用威胁情报 API 或订阅实时警报服务
  • 情报共享: 与其他组织共享威胁情报,例如通过 ISAC (Information Sharing and Analysis Center) 或 CERT (Computer Emergency Response Team)

8. Rootkit 检测

  • 内存分析: 使用内存分析工具(如 Volatility)检测内存中的 rootkit 活动和恶意代码
  • 文件系统分析: 使用文件系统分析工具(如 The Sleuth Kit)分析文件系统的结构和内容,寻找 rootkit 隐藏的证据

9. 证据收集

  • 取证工具: 使用取证工具(如 Autopsy, The Sleuth Kit)收集和分析证据,以便进行深入调查和取证分析
  • 证据保存: 将收集到的证据进行备份和保存,确保其完整性和可追溯性

10. 漏洞管理

  • 漏洞扫描: 使用漏洞扫描工具(如 Nessus, OpenVAS)定期扫描系统漏洞,并及时进行修复
  • 补丁管理: 建立补丁管理流程,确保系统及时更新安全补丁

11. 安全意识培训

  • 安全意识培训: 定期对员工进行安全意识培训,提高员工的安全意识和防范能力

12. 应急响应计划

  • 应急响应计划: 制定详细的应急响应计划,明确应急响应流程和职责,确保能够快速有效地应对安全事件

13. 定期演练

  • 定期演练: 定期进行应急响应演练,检验应急响应计划的可行性和有效性,并及时进行改进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894846.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业二:文本查重

作业介绍这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023github https://github.com/Ryon-h/3123003446这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324这个作业的目标 完成…

上哪儿下载stable diffusion

要在本地环境中下载和安装Stable Diffusion,您可以遵循以下几种方法: 方法一:GitHub源码下载(工作流下载:https://www.mix688.com/964.html)硬件与软件环境准备:确保计算机配备至少4GB显存的NVIDIA GPU。安装Windows操作系统。准备大约10GB的硬盘空间。安装所需软件:下…

清华大学DeepSeek课程:基于DeepSeek的AI音乐词曲创作法(附视频下载)

本课程由清华大学新媒沈阳团队精心打造,旨在教授大家如何利用DeepSeek这一强大的AI工具进行音乐词曲创作。DeepSeek不仅能够帮助我们理解音乐创作的基本原理,还能激发我们的创造力。本课程由清华大学新媒沈阳团队精心打造,旨在教授大家如何利用DeepSeek这一强大的AI工具进行…

2024 年中国大学生程序设计竞赛全国邀请赛(郑州)暨第六届 CCPC 河南省大学生程序设计竞赛(Problem L. Toxel 与 PCPC II)

对于这道题我最开始是想用斜率优化dp,但是x是四次方明显不行,如果是二次方就好了,所以要换一个思路, 可以观察到如果一次性修复的x太多了,会导致时间消耗太大,这样我们还不如一个错误一个错误的修,当x=22时x的四次方就超过了200000,所以说我们最多一次修复22个bug了,值…

2025.3.3微服务架构(Dubbo)

Dubbo配置方式 1.注解: 基于注解可以快速的将程序配置,无需多余的配置信息,包含提供者和消费者。弊端是根据配置信息无法快速定位。XML:和Spring做结合,相关的Service和Reference均使用Spring集成后的。通过这样的方式可以很方便的通过几个文件进行管理整个集群配置。可以快…

数据集蒸馏论文阅读

Dataset Distillation 18年的论文,最早提出数据蒸馏的概念 理论 通常的梯度下降是小批量的 SGD,每次都需要从训练数据中选一个 minibatch 来更新。这篇文章的重点是学习到一个合成数据 \(\hat x=\{\hat x_i\}_{i=1}^M\) 和学习率 \(\hat \eta\),这样我们就可以固定梯度下降的…

数据蒸馏论文阅读

Dataset Distillation 18年的论文,最早提出数据蒸馏的概念 理论 通常的梯度下降是小批量的 SGD,每次都需要从训练数据中选一个 minibatch 来更新。这篇文章的重点是学习到一个合成数据 \(\hat x=\{\hat x_i\}_{i=1}^M\) 和学习率 \(\hat \eta\),这样我们就可以固定梯度下降的…

激活函数汇总

激活函数 激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。 Sigmoid (1) 公式:\(S(x)=\frac{1}{1+e^{-x}}\) (2) 函数图:(3) 缺点: ① 输出值落在(0,1)之间,期望均值为0.5,不符合均值为0的理想状态 ② 该函数存在一正一负两块“死区”(死区:梯度计算为0,…

深入探究C语言内存分配系列函数

深入探究C语言内存分配系列函数 目录深入探究C语言内存分配系列函数内存是什么?内存分配的三种方式为什么要学习动态分配的系列函数?四大内存分配函数前置知识malloc与freemallocfreerealloccallocDeepseek的总结 当我们完成一个程序设计时,需要对其背后的底层原理学习 操作…

第一课 引言与词向量

对于文字的意义,语言学家有很多种定义。其中一种定义运用在自然语言处理中非常有用,这种意义的定义见下分布式语义就是看上下文词来决定单词的意义。于是我们可以利用词向量来衡量两个词之间的相似程度,词的意义被分散在词向量的每一维中 词嵌入之所以叫词嵌入,是因为我们给…

2025.03.06 CW 模拟赛 A. 岛屿

题面 & 题解 A. 岛屿 概率期望会不了一点. 思路 假设我们最开始有 \(a\) 个「蓝蓝 / 红红」链, \(b\)​ 个「蓝红」链. 我们考虑对于每一个「蓝红」链向外连边. 如图, 我们将红点向外连向一条「蓝蓝」链, 由于每一个点只能最多向外连一条边, 那么它们就「合成」了一条蓝蓝链…