识别现象 通过系统运行状态、安全设备告警,主机异常现象来发现可疑现象
通常的可疑现象有
- 资源占用
- 异常登录
- 异常文件
- 异常连接
- 异常进程
- 比如从mysql)用户启动了一些非mysql的进程
- 类似还有webshell执行反弹连接,会显示apache的用户权限
文章图片
查看所有进程 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查看历史记录
- 定时任务
- 开机服务
- 开机启动
- 驱动加载
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开机有多种运行级别,不同级别下加载的启动文件也不同
文章图片
查看当前启动级别,当前为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}'
推荐阅读
- 网络|简单易用的嵌入式网络库(Mongoose)
- Web开发|操作系统中的进程
- Web开发|如何在云服务器上部署程序
- Linux|linux 操作系统大全(全部LINUX提供下载)
- 青龙-闪电世界(脚本更新)
- 树莓派|树莓派安装Ubuntu之后,WiFi中文乱码连接不上解决办法
- linux里的http的认证加密
- yum的卸载与重新安装
- Pytest接口自动化|Linux环境下安装docker环境(亲测无坑)