应急响应|Linux应急响应

识别现象 通过系统运行状态、安全设备告警,主机异常现象来发现可疑现象
通常的可疑现象有

  • 资源占用
  • 异常登录
  • 异常文件
  • 异常连接
  • 异常进程
进程排查 Linux因为其默认的进程权限分离,每个进程有不同的权限,所以从进程用户名上能给我们很多信息
  • 比如从mysql)用户启动了一些非mysql的进程
  • 类似还有webshell执行反弹连接,会显示apache的用户权限
查看资源占用 top
应急响应|Linux应急响应
文章图片

查看所有进程 ps -ef
根据进程PID查看进程详细信息 lsof -p PID
查看启动时间 ps -p PID -o lstart
对于一些异常的文件,初步判断,可以用strings显示里面的可读字符串,并进行grep
查看进程可执行文件 ls -la /proc/PID/exe
查看进程树 pstree
文件排查 查找指定时间的文件
查找根目录下,修改时间小于1天的文件
find / -mtime -1

mtime也可以对应为mmin指修改分钟,m意为modify相应也可改为ctime,atime,分别意为create,access
也可结合文件名进一步查找
find /var/www/html/ -mtime -1 -name *.php

find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ /var/spool/cron/-type f -mtime -3 | xargs ls -al

入侵者通常会替换系统的内置命令达到隐藏的目的
查看系统命令是否存在异常,如大小、修改时间、创建时间等
ls -altS /usr/sbin | head -30

网络排查 查看当前已建立的TCP连接
netstat -antulp | grep ESTABLISHED

查看反弹连接
netstat -antulp | grep bash

查看本机开放端口
netstat -antulp

查看某一端口的具体应用
lsof -i:22

用户排查 查看uid或gid为0的用户
grep : /etc/passwd

查看passwd文件最后的修改记录
stat /etc/passwd

统计所有用户的shell相关信息
cat /etc/passwd | awk -F:'{print $7}' | sort | uniq -c

重点检查所有登录权限的用户
cat /etc/passwd | grep bash

查看用户登录时间last
lastlog
查看允许sudo的用户
more /etc/sudoers | egrep -v "^#|^$"

继续检查wheel组包含用户
grep wheel /etc/group

历史命令
  • linux因为其命令行的特殊性,可以通过history命令来查看用户之前的操作
  • history记录位于用户home目录下的.bash_history文件中。
  • 可以直接cat~/.bash_history查看历史记录
持久化查询 Linux的持久化方式不如windows复杂,通常有以下四种方式
  • 定时任务
  • 开机服务
  • 开机启动
  • 驱动加载
定时任务排查
crontab -l

定时任务还应检查以下文件和文件夹
/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/*

开机启动项排查 Linux开机有多种运行级别,不同级别下加载的启动文件也不同
应急响应|Linux应急响应
文章图片

查看当前启动级别,当前为5,即图形式模式
runlevel

不同启动级别会加载不同启动文件
检查下述文件或目录
/etc/rc.d/* /etc/rc.local /etc/rc[0-6].d /etc/inittab

开机服务检查
chkconfig --list

0-6依然是系统启动级别
Linux日志分析 Linux使用rsyslog管理日志
通常关注的日志有
/var/log/messages:内核及公共消息日志 /var/log/cron:计划任务日志 /var/log/dmesg:系统引导日志 /var/log/maillog:邮件系统日志 /var/log/lastlog:用户登录日志 /var/log/boot.log:记录系统在引导过程中发生的时间 /var/log/secure:用户验证相关的安全性事件 /var/log/wtmp:当前登录用户详细信息 /var/log/btmp:记录失败的的记录 /var/run/utmp:用户登录、注销及系统开、关等事件;

【应急响应|Linux应急响应】Linux因为有强大的文本处理工具,如sed、awk等,所以从日志中提取信息相对容易,但前提是熟悉sed,awk,正则表达式等应用,下面列出一些常用举例
定位有多少IP在爆破主机的root账号
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more

定位有哪些IP在爆破
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c

爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n"; }'|uniq -c|sort -nr

登录成功的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}'

    推荐阅读