Linux系统应急响应命令大全


在客户单位值守,难免会遇到需要我们排查Linux系统是否存在病毒的情况,网上临时搜的文章指令不是很全,自己笔记本又不太方便复制指令。于是决定总结一下常用指令,发布到博客方便随时使用

主机环境确认

Linux操作系统有CentOS、Ubuntu、Debian等细分类型,不同的操作系统一些指令和配置文件也有些许不同,在应急开始之前需要确认操作系统细分类型,直接问网络运维人员是最快的

如果没有运维人员在,可以通过下面这些指令手动确认:

cat /etc/os-release
lsb_release -a
uname -a
cat /proc/version

然后和客户运维人员要一个root账号,登录root账号进行排查

系统账号检查

查看当前登录用户,tty表示本地登录,pts表示远程登录

who

查看用户登陆时间和登录IP地址等信息

w								# 查看当前用户登录信息
last							# 查看登录日志
last -n 10						# 查看最近10次登录日志
last -i | grep -v 0.0.0.0		# 筛选非本地IP登录日志
lastlog							# 查看所有用户的最后登录时间
lastb							# 查看登录失败的用户名,很多说明服务器被爆破

查看用户账号和密码,排查passwd时,注意查看可登录shell的用户,例如权限为/bin/bash

sudo -l											# 查看sudo权限用户
cat /etc/passwd									# 查看用户表
cat /etc/shadow									# 查看用户密码表
awk -F: '$3==0{print $1}' /etc/passwd			# 查看uid为0的特权用户
awk '/\$1|\$6/{print $1}' /etc/shadow			# 查看可以远程登录的用户信息

查看除 root 账号外,是否有其他存在 sudo 权限的账号

more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"		# 查看具有sudo权限的用户

查看ssh远程连接密钥是否被修改,防止遗留ssh后门

ls -a ~/.ssh					# 查看ssh目录
cat ~/.ssh/authorized_keys		# 查看是否被添加私钥

发现恶意用户可以通过下面的指令进行处置

usermod -L user			# 禁用账号,账号无法登录
userdel user			# 删除用户
userdel - L user		# 删除用户,同时删除用户目录

网络连接排查

检查网络连接情况,对公网地址的网络连接要重点注意

netstat -antlp|more

Ubuntu系统可以通过下面的指令进行进一步排查:

lsof -i :22			# 查看22端口占用情况
lsof -i tcp			# 查看所有tcp网络连接
lsof -p $PID		# 查看进程PID打开的文件
fuser -n tcp 22		# 查看22端口对应的PID

通过进程PID快速定位文件位置

file /proc/$PID/exe

进程排查

查看资源占用情况,排查是否有恶意进程占用大量资源,该指令检测挖矿病毒有奇效

top

检查进程,进程运行参数太长或存在不可见字符时,需加more命令

ps -ef | more

Ubuntu系统可以通过指令查看进程树,进程之间的关系更加清晰

pstree
pstree -h $PID -p -a 		# 查看某个PID的进程树

如果提前知道了攻击者使用的用户,还能指定用户进行进程排查,拿到PID后可以进一步搜索

ps -u root					# 查看root用户运行的进程
ps -U root -u root -N		# 查看非root用户运行的进程
ps aux | grep $PID			# 通过进程ID查看指定进程

部分恶意程序会绑定守护进程,可以排查下是否有异常守护进程

ps -aef | grep inetd

拿到恶意程序PID后可以快速定位恶意程序位置

ls -l /proc/$PID/exe

服务排查

查看系统已启用的服务,排查是否有恶意服务

systemctl list-unit-files --type=service | grep "enabled"

Ubuntu系统可以通过下面的指令排查

service --status-all

历史指令排查

历史记录删除指令:history -c

删除的历史记录依然会保存在文件中,通过文件可以看到完整的历史记录,排查是否有攻击痕迹

cat ~/.bash_history

历史记录默认只保存一千条,如果希望增加历史记录最大保存数量,可以通过下面的方法修改

# 保存最近1w条历史记录
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile

# 在/etc/profile的文件尾部添加如下配置
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
export HISTTIMEFORMAT="%F %T $USER_IP `whoami` "
shopt -s histappend
export PROMPT_COMMAND="history -a"

# 让配置生效
source /etc/profile

定时任务排查

查看当前用户定时任务,看是否有定时任务执行恶意脚本或程序

crontab -l					# 查看当前用户的计划任务
cat /etc/crontab			
cat /etc/anacrontab 		# 查看异步定时任务
more /var/spool/cron/*	    # 适用于Ubuntu系统

排查定时任务目录,如果提示目录不存在说明这个目录当前操作系统类型没有

ls -al /etc/cron.d/
ls -al /etc/cron.daily/
ls -al /etc/cron.hourly/
ls -al /etc/cron.monthly/
ls -al /etc/cron.weekly/
ls -al /var/spool/cron/
ls -al /var/spool/anacron/

小技巧,分页查看目录下所有文件

 more /etc/cron.daily/*

发现恶意定时任务,通过下面的指令可以进行清除

crontab -e		# 编辑当前的计划任务文件
crontab -r		# 删除所有的计划任务(慎用)

异常文件排查

查看敏感目录,注重关注隐藏文件夹,以.位开头的文件夹具有隐藏属性,需要通过-a查看所有属性

ls -al /tmp

针对可疑文件可以比对下创建和修改时间

stat {文件名}

如果被上传webshell,可以进入到网站上传目录,查看当前目录下在过去一天内访问过的文件,

find ./ -iname "*" -atime 1 -type f 

还可以在web目录下输入指令查看文件中是否包含恶意代码

find ./ -type f -name "*.php" | xargs grep "eval("
find ./ -type f -name "*.php" | xargs grep "assert("

开机启动项

系统运行级别示意图:

运行级别含义
0关机
1单用户模式,可以想象为windows的安全模式,主要用于系统修复
2不完全的命令行模式,不含NFS服务
3完全的命令行模式,就是标准字符界面
4系统保留
5图形模式
6重启动

检查开机启动项目录:

ls -al /etc/rc.d/rc[0~6].d
ls -al /etc/rc.local

日志排查

查看日志配置情况,日志默认存储在 /var/log 目录下

cat /etc/rsyslog.conf

主要的日志文件如下:

文件路径描述
/var/log/message包括整体系统信息
/var/log/auth.log包含系统授权信息,包括用户登录和使用的权限机制等
/var/log/userlog记录所有等级用户信息的日志
/var/log/cron记录crontab命令是否被正确的执行
/var/log/xferlog (vsftpd.log)记录Linux FTP日志
/var/log/lastlog记录登录的用户,可以使用命令lastlog查看
/var/log/secure记录大多数应用输入的账号与密码,登录成功与否
/var/log/wtmp记录登录系统成功的账户信息,等同于命令last
/var/log/faillog记录登录系统不成功的账号信息,一般会被黑客删除

如果开启了一些服务,也需要对服务运行的日志进行排查(例如Nginx日志)

SSH登录日志

系统用户登录都会在/var/log/secure日志文件中记录,但是这个日志文件会被系统自动分割,通过下面的指令可以查看有哪些登录日志文件

ll -ld /var/log/secure*
ll -ld /var/log/auth.log*	# 对应debian系统

针对登录日志进行进一步排查,注意指定对应分割的登陆日志

# 定位有多少IP在爆破主机的root帐号,打印爆破次数和IP地址
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

# 查看去重后登录成功的IP地址
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

# 查看登录成功的日期、用户名、IP
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

# 统计登录失败的次数
grep -o "Failed password" /var/log/secure|uniq -c

# 查看用户变更日志
grep "useradd" /var/log/secure				# 用户新增
grep "userdel" /var/log/secure				# 用户删除
grep "su: pam_unix" /var/log/secure			# su切换用户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值