怀疑你的Linux服务器被入侵了?快来排查一下吧
在面对Linux系统疑似被入侵的情况下,快速而有效地进行应急响应和排查是至关重要的。本文将带你全面了解应急响应的排查思路和掌握必要的基础技能,帮助你在第一时间解决问题,保障系统安全。
🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。各技术博客社区平台的优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:
gylzbk
)
💬 博主粉丝群介绍:① 群内高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 群里红包不断,异常活跃,感兴趣的加我vx(ID:
gylzbk
),拉你进群,互相学习共同进步。
应急响应基础技能
基本技能和工具
在进行应急响应之前,掌握以下基础技能和工具是必不可少的:
- 基本的Linux命令操作:如
ls
,cat
,grep
,find
,awk
,sed
等。 - 日志分析能力:熟悉系统和应用日志文件的位置和格式,如
/var/log
目录下的日志文件。 - 网络连接和端口分析:使用
netstat
,ss
,nmap
等工具。 - 文件完整性检查工具:使用
md5sum
,sha256sum
等工具检验文件完整性。 - 系统和用户进程管理:如
ps
,top
,htop
等。
应急响应排查思路
1. 初步调查
1.1 确认事件类型
首先需要明确当前是遭遇何种安全事件,例如:
- 入侵检测
- 恶意软件感染
- 数据泄露
- 拒绝服务(DDoS)攻击
1.2 检查系统异常
检查系统中是否有以下异常现象:
- 系统性能显著下降
- 未授权的用户登录或进程
- 磁盘空间异常减少
2. 数据收集
2.1 获取登录历史
使用last
和lastb
命令查看系统的用户登录和失败的登录尝试记录。
last
lastb
2.1.1 实例输出
$ last
username pts/0 192.168.0.105 Wed Sep 22 10:21 still logged in
username pts/0 192.168.0.105 Wed Sep 22 09:56 - 10:21 (00:24)
reboot system boot 4.15.0-142-generic Wed Sep 22 09:55 - 10:22 (00:27)
# 表示用户username在2021年9月22日上午10点21分登录并仍然在线。
2.2 检查系统日志
查看系统日志,尤其是auth.log
(认证日志)和syslog
(系统日志)。
tail -n 100 /var/log/auth.log
tail -n 100 /var/log/syslog
2.2.1 示例内容
$ tail -n 100 /var/log/auth.log
Sep 22 10:21:17 hostname sshd[12345]: Accepted password for username from 192.168.0.105 port 54321 ssh2
# 表示一次成功的SSH登录尝试。
2.3 网络连接和端口监控
使用netstat
或ss
命令查看当前的网络连接和监听端口。
netstat -tulnp
ss -tulnp
2.3.1 示例输出
$ netstat -tulnp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5678/nginx
2.4 进程与服务检查
使用ps
或top
命令查看系统中的当前进程和服务。
ps aux
top
2.4.1 示例输出
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1234 0.0 0.1 125684 3644 ? Ss Sep22 0:00 /usr/sbin/sshd
www-data 5678 0.2 1.2 123456 123456 ? S Sep22 0:23 nginx: worker process
2.5 文件完整性检查
使用find
命令查找系统中近期被修改的文件。
find / -mtime -1
2.5.1 示例输出
$ find / -mtime -1
/var/log/auth.log
/etc/passwd
2.6 检查开机启动项
查看系统中的开机启动项,检查是否存在异常的启动项。
# 对于系统d
systemctl list-unit-files --type=service --state=enabled
# 检查rc.local
cat /etc/rc.local
# 检查crontab
crontab -l
ls /etc/cron.*
ls /var/spool/cron/crontabs
2.7 检查计划任务
查看cron计划任务,确认是否存在可疑的定时任务。
crontab -l
cat /etc/crontab
ls /etc/cron.d/
cat /etc/cron.hourly/
cat /etc/cron.daily/
3. 分析与确认
3.1 分析登录记录与日志
- 检查是否有可疑的登录记录和失败的登录尝试。
- 查看日志中是否存在可疑的错误或警告信息。
3.2 分析网络连接
- 确认所有监听端口和网络连接是否正常。
- 使用
tcpdump
或wireshark
进行网络流量捕获和分析。
tcpdump -i eth0
3.2.1 示例输出
$ tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
10:23:04.123456 IP 192.168.0.105.54321 > 192.168.0.100.80: Flags [S], seq 1234567890, win 29200, options [mss 1460,sackOK,TS val 1234567890 ecr 0,nop,wscale 7], length 0
3.3 分析进程和服务
- 检查是否有可疑的进程占用大量系统资源。
- 确认所有正在运行的服务是否正常。
3.3.1 高CPU占用进程示例
$ top
top - 10:24:01 up 1:29, 1 user, load average: 0.10, 0.15, 0.09
Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
%Cpu(s): 25.0 us, 5.9 sy, 0.0 ni, 69.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2047120 total, 800764 free, 126904 used, 1119452 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1756024 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5678 www-data 20 0 123456 123456 12345 S 50.0 6.0 0:30.01 nginx: worker process
3.4 验证文件完整性
- 检查最近修改的文件(如系统配置文件,二进制文件等)是否有异常修改。
- 使用
diff
命令对比文件内容是否发生变化。
md5sum /var/log/auth.log
sha256sum /etc/passwd
3.4.1 文件校验示例
$ md5sum /etc/passwd
5d41402abc4b2a76b9719d911017c592 /etc/passwd
4. 联网分析与对策
4.1 隔离受感染系统
若确认系统被入侵或恶意软件感染,立即从网络中隔离受感染的系统,以防进一步扩散。
4.2 事件报告
向相关安全团队和管理人员进行详细的事件报告,记录调查过程、发现和采取的措施。
4.3 恢复与加固
- 清理系统中的恶意软件和后门。
- 更新系统和应用软件,修补漏洞,确保没有残留的恶意代码。
- 修改受影响用户的密码和密钥,确保剩余的系统安全。
4.4 事后总结与改进
- 分析事件原因,查明漏洞源头,记录教训。
- 更新和完善事件响应计划,改进系统安全策略和防御措施。
常用工具和命令汇总
文件与日志操作
命令 | 作用 |
---|---|
ls |
列出目录内容 |
cat , more , less |
查看文件内容 |
grep |
搜索文本或日志文件 |
find |
查找文件 |
tail |
查看文件尾部内容 |
head |
查看文件头部内容 |
系统状态监控
命令 | 作用 |
---|---|
ps |
查看系统当前进程 |
top , htop |
实时查看系统资源使用情况 |
df |
显示磁盘空间使用情况 |
du |
显示目录空间占用情况 |
uptime |
查看系统运行时间和负载 |
网络监控
命令 | 作用 |
---|---|
netstat |
显示网络连接和端口信息 |
ss |
显示网络连接和端口信息 |
tcpdump |
网络流量捕获与分析 |
nmap |
网络扫描和端口扫描 |
ifconfig |
显示网络接口配置信息 |
ping |
测试网络连接性 |
traceroute |
路由跟踪 |
文件完整性检查
命令 | 作用 |
---|---|
md5sum |
生成MD5校验码 |
sha256sum |
生成SHA-256校验码 |
diff |
比较文件差异 |
stat |
显示文件或文件系统的状态信息 |
用户和权限管理
命令 | 作用 |
---|---|
who , w |
查看登录用户信息 |
last , lastb |
查看用户登录历史和失败记录 |
chmod |
修改文件权限 |
chown |
更改文件所有者 |
sudo |
提供管理员权限 |
进阶工具
工具 | 作用 |
---|---|
fail2ban |
防止暴力破解攻击 |
iptables |
配置防火墙规则 |
auditd |
安全审计服务 |
clamav |
开源杀毒软件 |
chkrootkit |
Rootkit检查工具 |
rkhunter |
Rootkit猎人,用于Rootkit检测 |
结语
如果你怀疑你的Linux系统已经被入侵,不要惊慌。通过上述详细的排查步骤和常用命令工具,你将能够迅速、有效地应对安全事件,减少损失并恢复系统正常运行。掌握这些技能对保障系统安全至关重要。
祝你在保障系统安全的道路上顺利前行!
- 点赞
- 收藏
- 关注作者
评论(0)