Linux应急响应
字数 1269 2025-08-09 13:33:44
Linux应急响应指南
前言
网络安全是相对的,再安全的服务器也可能遭受攻击。除了定期备份数据外,还需要定期进行安全检查,做好充分准备才能在攻击发生时从容应对。
入侵排查流程
账号安全排查
基本命令
/etc/passwd:用户信息文件用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell/etc/shadow:影子文件用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留who:查看当前登录用户(tty本地登陆、pts远程登录)w:查看系统信息uptime:查看登陆多久、多少用户,负载
入侵排查步骤
-
查询特权用户(uid为0)
awk -F: '$3==0{print $1}' /etc/passwd -
查询可以远程登录的帐号信息
awk '/\$1|\$6/{print $1}' /etc/shadow -
检查其他帐号是否存在sudo权限
more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" -
禁用或删除多余及可疑的帐号
usermod -L user # 禁用帐号 userdel user # 删除user用户 userdel -r user # 删除user用户及/home目录下的user目录
历史命令检查
基本使用
-
查看帐号执行过的系统命令
- root的历史命令:
history - 普通帐号的历史命令:查看
/home/各帐号目录下的.bash_history
- root的历史命令:
-
增强历史命令记录
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 -
清除历史命令
history -c # 不会清除文件中的记录,需手动删除.bash_profile中的记录
入侵排查
cat /home/用户/.bash_history >> history.txt
可疑端口检查
netstat -antlp | more
# 查看pid对应的进程文件路径
ls -l /proc/$PID/exe
file /proc/$PID/exe
可疑进程检查
ps aux | grep pid
开机启动项检查
基本使用
- 查看运行级别:
runlevel - 系统默认允许级别:
vi /etc/inittab中的id=3:initdefault - 开机启动配置文件:
/etc/rc.local、/etc/rc.d/rc[0~6].d
入侵排查
more /etc/rc.local /etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
定时任务检查
基本使用
crontab -l:列出用户cron服务详细内容crontab -r:删除所有计划任务(谨慎使用)crontab -e:编辑当前crontab文件- 默认crontab文件位置:
/var/spool/cron/用户名
anacron使用
vi /etc/anacrontab
@daily 10 example.daily /bin/bash /home/backup.sh
入侵排查
重点关注以下目录:
/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/* # 查看目录下所有文件
服务检查
基本使用
- 服务自启动设置方法:
chkconfig --level 2345 httpd on # 或修改/etc/re.d/rc.local # 或使用ntsysv命令
入侵排查
-
RPM包安装的服务:
chkconfig --list ps aux | grep crond # 中文环境 chkconfig --list | grep "3:启用\|5:启用" # 英文环境 chkconfig --list | grep "3:on\|5:on" -
源码包安装的服务:
service httpd start # 检查/etc/rc.d/init.d/
系统日志分析
基本使用
- 日志默认存放位置:
/var/log/ - 查看日志配置:
vi /etc/rsyslog.conf
日志分析技巧
-
/var/log/secure分析:- 定位爆破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 - 用户增删记录:
grep "useradd" /var/log/secure grep "userdel" /var/log/secure
- 定位爆破root的IP:
-
/var/log/yum.log:more /var/log/yum.log
挖矿事件处理
1. 获取异常进程pid
- CPU占用:
top -c -o %CPU ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5 - 内存占用:
top -c -o %MEM ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5 - 网络占用:
apt-get install nethogs nethogs
2. 寻找恶意文件样本
- 通过进程名获取pid:
pidof "name" ps -aux | grep "name" ps -ef | grep "name" | grep -v grep | awk '{print $2}' pgrep -f "name" - 通过pid获取程序信息:
lsof -p pid pwdx pid systemctl status pid cat /proc/pid/maps ls -al /proc/pid/exe - 查看进程线程:
ps H -T -p pid ps -Lf pid top -H -p pid htop pstree -acU
3. 处理异常进程
- 恶意文件采样:
scp -P 4588 remote@www.xxx.com:/usr/local/a /home/kali - 进程查杀:
kill -9 pid # 杀死指定进程 kill -9 -pid # 杀死进程组 - 线程查杀:
ps -T -p pid ps -aLf pid ps -eLFa
4. 删除恶意文件
- 查看文件占用:
lsof eval.sh - 处理特殊属性文件:
chattr -a 文件名 # 去除a属性 chattr -i 文件名 # 去除i属性
案例分析
SSH隐蔽登录
ssh -T root@192.168.1.1 /usr/bin/bash -i
分析:这种方式不会分配伪终端,不会被w和lastlog等命令记录。
处理:
lsof -i 22
ss -nt
惯性密码
分析:如aaRedis63090329,中间四位为本机端口号,容易被猜测。
处置:使用复杂且不可预测的密码。
pid查询失败
分析:可能是攻击者隐藏了/proc/pid/目录。
处置:
cat /proc/
$$
/mountinfo
文件删除问题
分析:奇怪文件名导致无法删除。
处置:使用inode删除:
ls -li xxx.sh # 查看inode
find ./* -inum inode -delete
find ./ -inum inode -exec rm {} \;
总结
不同安全事件需要从不同角度处理,一次事件可能包含多种类型。本指南提供了全面的Linux应急响应流程和技术,帮助安全人员在遭受攻击时快速定位和处理问题。