Linux应急响应

识别现象

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

通常的可疑现象有

  • 资源占用
  • 异常登录
  • 异常文件
  • 异常连接
  • 异常进程

进程排查

Linux因为其默认的进程权限分离,每个进程有不同的权限,所以从进程用户名上能给我们很多信息

  • 比如从mysql)用户启动了一些非mysql的进程
  • 类似还有webshell执行反弹连接,会显示apache的用户权限

查看资源占用

top

Linux应急响应_第1张图片

查看所有进程

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应急响应_第2张图片

查看当前启动级别,当前为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因为有强大的文本处理工具,如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}' 

你可能感兴趣的:(应急响应,Linux,linux)