前言
注:文章中测试命令的操作系统为centos8
如果部分日志内容为空的话,尝试重启syslog服务和sshd服务
系统信息
lscpu
查看主机配置信息
uname -a
查看操作系统信息
cat /proc/version
查看操作系统版本信息
lsmod
查看系统模块信息
用户信息
cat /etc/passwd
查看系统用户信息
显示/bin/bash
的表示账户状态为可登录
显示/sbin/nologin
的表示账户状态为不可登录
root:x:0:0:root:/root:/bin/bash
# 用户名:密码:用户id:用户组id:注释:用户主目录:默认登录shell
查询uid为0的超级权限账户
awk -F: '{if($3==0)print$1}' /etc/passwd
# 在/etc/passwd文件中,如果第三组的值等于0,那么就输出第一组的值,也就是用户名
查询结尾为/bin/bash
的可登录账户
cat /etc/passwd | grep "/bin/bash"
lastb
查询登录失败的信息
lastlog
查看所有用户最后的登录信息
last
查看用户最近的登录信息
who
查看当前用户登录情况
查询空密码账户
awk -F: 'length($2)==0 {print$1}' /etc/shadow
启动项
查看init.d文件下的内容,根据修改时间排序(init.d目录是rc.loacl的软链接,存放开机启动的服务脚本)
ls -alt /etc/init.d
查看rc.loacl文件内容(rc.loacl 启动加载文件)
cat /etc/rc.loacl
计划任务
crontab -l
查看当前计划任务
crontab -u root -l
查看root用户的计划任务
linux计划任务一般是以cron开头
ls /etc/cron*
查看/etc下以cron开头的文件
进程排查
查看网络连接情况
netstat #查看网络连接情况
netstat -antlp # 查看所有tcp连接信息的详情
根据可以的pid值查找对应的程序,这里随便查个,pid 3260
ls -alt /proc/3260
# 查找pid 3260对应的可执行程序
查看pid 3260打开的文件
lsof -p 3260 # -p参数为要查询的pid值
如果发现恶意文件或进程可以使用以下命令清除/结束
kill -9 pid #强制结束进程
rm -rf #强制删除文件
如果还是无法删除相关文件,可能是文件被加上了守护进程,需要移除i属性,可以自己新建个文件测试下,如下所示
lsattr filename #查看文件属性
chattr -i filename #移除文件i属性
查询隐藏进程
ps -ef | awk '{print}' | sort -n | uniq > 1
ls /proc | sort -n | uniq > 2
diff 1 2
top
查看系统状态
对于挖矿类的排查可以用过top命令来排查,挖矿类的通常资源占用率比较高
服务排查
查看系统运行的服务
chkconfig --list #1-6代表不同等级
查看系统服务运行状态
systemctl list-unit-files
文件痕迹
敏感目录
下列路径通常为恶意软件的下载路径和后门配置的路径
- /tmp
- /usr/bin
- /usr/sbin
- ~/.ssh
- /etc/ssh
查找时间点
通过find命令查找一天内新增的脚本文件
find / -ctime 0 -name "*.sh"
查看该目录下最近创建的前10个文件
ls -lha | head -n 10
stat
查看文件的详细信息,access访问时间,modify修改时间,change文件属性更改时间
查找特殊文件,权限为777的文件
find / -perm 777
查找php文件里带有sys的文件,xargs egrep 后面为要查询的文件内容
find -name "*.php" | xargs egrep sys
查看系统命令的修改时间和大小
ls -alt /bin
ls -lha /bin
查找有suid权限的程序
find / -type f -perm -04000 -ls -uid 0 2>/dev/null
后门检测工具:chkrootkit、rkhunter等
日志分析
日志概述
linux中日志文件一般存放在 /var/log
目录 下
/var/log/wtmp
记录登录进入、退出、数据交换、关机和重启,类似于last命令
/var/log/cron
记录定时任务相关的日志信息
/var/log/messages
记录系统启动后的信息和错误日志
/var/log/apache2/access.log
记录apache的访问日志
/var/log/auth.log
记录系统授权信息,包括用户登录和使用的权限机制等
/var/log/userlog
记录所有等级用户信息的日志
/var/log/xferlog(vsftpd.log)
记录linux ftp日志
/var/log/lastlog
记录登录用户,等同于lastlog命令
/var/log/secure
记录大多数应用输入的账号和密码,以及登录成功和失败的信息
/var/log/faillog
记录登录系统不成功的账号信息
日志分析
linux日志分析主要使用grep、sed、sort、awk等命令
tail -n 10 xx.log #查询最后10行的日志
tail -n +10 xx.log #查询10行之后的日志
head -n 10 xx.log #查询前10行的日志
head -n -10 xx.log #查询除了最后10行的其他日志
在日志中统计独立ip地址个数的命令:
awk '{print $1}' xx.log | sort | uniq | wc -l
awk '{print $1}' xx.log | sort | uniq -c | sort -nr | head -10
查找指定时间段日志的命令:
sed -n '/2022-1-1 00:00:00,2022-1-1 23:59:59/p' xx.log
grep '2022-1-1 00:00:00' xx.log
定位有多少ip地址在暴破主机root账户:
cat /var/log/secure | awk '/Accepted/{print $(NF-3)}' | sort | uniq -c | awk '{print $2"="$1;}'
查看登录成功的ip地址
cat /var/log/secure | awk '/Failed/{print $(NF-3)}'| sort | uniq -c | awk '{print $2"="$1;}'
查看登录成功日期、用户名、IP地址
grep "Accepted" /var/log/secure | awk '{print $1,$2,$3,$9,$11}'