linux 应急检查常用命令

确认事件并保护现场

  • 切勿立即关机或重启:内存、进程、网络连接等易失数据会丢失。
  • 断开网络(谨慎):若确认为主动入侵且担心横向扩散,可拔网线或 iptables -P INPUT DROP,但需先记录当前网络连接。
  • 避免在受感染系统上执行过多命令:系统命令可能被替换(如 ps、netstat),优先使用静态编译工具或从干净媒介挂载。

查看系统版本信息:cat /etc/*release

以下是每一行关键字段的详细解释:

核心版本信息

  • NAME="CentOS Linux":操作系统的名称是 CentOS Linux。
  • VERSION="7 (Core)":主版本号是 7(Core) 表示这是 CentOS 的核心版本。
  • VERSION_ID="7":版本的 ID,用于脚本识别,这里就是 7。
  • PRETTY_NAME="CentOS Linux 7 (Core)":这是给人看的系统全称。

系统标识与血缘

  • ID="centos":系统的唯一标识符,用于软件包管理器或脚本判断系统类型。
  • ID_LIKE="rhel fedora":这非常重要。它表示 CentOS 与 RHEL (Red Hat Enterprise Linux) 和 Fedora 是同类系统。这意味着针对 RHEL 编写的教程、脚本或软件通常可以直接在 CentOS 上运行。
  • CPE_NAME="cpe:/o:centos:centos:7":这是一个标准化的系统标识符,常用于安全扫描工具识别操作系统。

具体发行版本

  • CentOS Linux release 7.9.2009 (Core):这是最具体的一行信息。
    • 7:主版本。
    • 9:次版本(7.9 是 CentOS 7 系列的最终稳定版本)。
    • 2009:表示该版本发布于 2020年09月

官方资源链接

  • HOME_URL:CentOS 的官方网站。
  • BUG_REPORT_URL:如果你发现了系统 Bug,可以去这里报告。

  • 异常登录和账户排查:

w                  # 当前登录用户及活动
last -20           # 最近登录记录(留意陌生IP、异常时间)
lastb -20          # 失败登录记录
lastlog            # 所有用户最后登录时间
who -a             # 详细信息
cat /etc/passwd | grep -v nologin   # 检查是否有新增特权账户
cat /etc/shadow                      # 检查是否有空口令或可疑账户
awk -F: '($3==0){print}' /etc/passwd # 查找UID为0的账户
cat /etc/sudoers /etc/sudoers.d/*    # sudo授权是否被篡改

  • 检查进程和内核模块:

ps auxf              # 完整进程树(注意方括号进程名骗局)
ps -eo pid,user,comm | grep -v '\['
pstree -a            # 树形显示,容易发现父进程异常
top -bn1             # 资源占用TOP
lsmod | sort -k2      # 检查内核模块,重点看Unknown/Secret
cat /proc/modules    # 对比 lsmod
cat /proc/$$/maps    # 当前shell内存映射,检查恶意注入

  • 网络连接和异常流量:

ss -tunpa             # 所有监听和连接(含进程名),优于netstat
ss -tunpl             # 仅监听端口
lsof -i -P -n         # 查看端口对应的进程及文件
ip link               # 网卡是否处于混杂模式(抓包)
arp -an               # ARP表是否中毒
iptables -t nat -L -n # 检查是否有端口转发/重定向
cat /etc/hosts /etc/resolv.conf  # 是否被劫持

  • 计划任务与自启动

crontab -l            # 当前用户
for u in $(cut -f1 -d: /etc/passwd); do echo "=== $u ==="; crontab -u $u -l 2>/dev/null; done
cat /etc/crontab /etc/cron.* /var/spool/cron/*
cat /etc/anacrontab
systemctl list-timers --all
systemctl list-unit-files | grep enabled
cat /etc/rc.local /etc/rc.d/rc.local /etc/init.d/*
ls /etc/xdg/autostart ~/.config/autostart  # 图形桌面自启动

  • 可疑文件和文件完整性检查

find / -mmin -60 -type f           # 最近60分钟修改的文件
find / -perm -4000 -o -perm -2000  # 查找SUID/SGID文件(注意新增)
find / -name ".*" -size +1M       # 大隐藏文件
find /tmp /dev/shm /var/tmp -type f -executable
rpm -Va | grep '^..5'             # 验证所有包文件(RedHat系)
dpkg --verify                     # Debian系
stat /bin/ls /bin/ps /usr/bin/netstat  # 检查关键命令修改时间
echo $LD_PRELOAD                  # 检查动态库劫持
cat /etc/ld.so.preload            # 可能强行加载恶意.so

  • 日志分析

# 认证相关
grep "Failed password" /var/log/secure /var/log/auth.log 2>/dev/null | tail -20
grep "Accepted" /var/log/secure | awk '{print $NF}' | sort | uniq -c | sort -nr
grep "session opened" /var/log/secure | grep -v root
lastlog | grep -v "Never logged in"

# 系统历史(注意bash_history可能被清除或篡改)
cat /var/log/messages | grep -iE "error|fail|warn|kill"
journalctl -n 200 --no-pager
history | tail -50
cat ~/.bash_history /root/.bash_history

# 应用日志
tail /var/log/nginx/access.log /var/log/httpd/access_log
# 搜寻SQL注入、文件包含、命令执行等攻击特征,如'select','union','../../','cmd='

 记录服务器用户会话操作

root身份编辑文件/etc/profile,在文件末尾追加以下内容

if [ $UID -ge 0 ]
then
    exec /usr/bin/script -t 2>/var/log/script-records/$USER-$UID-`date +%Y%m%d`.time -a -f -q /var/log/script-records/$USER-$UID-`date +%Y%m%d`.log
fi

然后再以root身份创建文件夹用于存储服务器上的各个用户在终端的所有操作信息

sudo mkdir -p /var/log/script-records/
sudo chmod 733 /var/log/script-records/

最后,执行命令source /etc/profile即可。任意用户(UID ≥ 0)在终端执行的所有操作都会被安静地记录下来,以天为单位存储。

临时记录,例如:script -a /tmp/script20260511.log 执行后记录后续所有的操作记录和结果,ctrl+d或exit结束纪律

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值