查看系统命令是否被修改

1
2
3
4
5
6
rpm -Vf /usr/bin/*
rpm -Vf /usr/sbin/*
#rpm -Vf /usr/bin/xxx
#S 关键字代表文件大小发生了变化
#5 关键字代表文件的 md5 值发生了变化
#T 代表文件时间发生了变化

查看系统进程

1
2
Ps -aux
top -c -o %CPU

杀进程

1
2
3
4
5
# kill -STOP <PID>
kill -STOP 940
kill -STOP $(pgrep king) #如果进程开放很多,可以使用这个命令暂停
pkill <进程名> #使用进程名来杀进程
ps aux |grep -T #查看已经暂停的进程

计划任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/var/spool/cron/
/etc/cron.* #ls /etc/cron.* #find /etc/ -mtime -1
/etc/crontab
grep king /etc/cron.*/* #查找所有计划任务是否包含king关键字

cat /var/spool/cron/root
cat /etc/crontab

crontab -l

# 查看用户定时任务
crontab -l # 当前用户
crontab -u <username> -l # 指定用户

# 查看系统定时任务文件
vi /var/spool/cron/ # 用户级任务
vi /etc/crontab # 系统级任务
vi /etc/cron.d/ # cron.d目录
vi /etc/cron.hourly/ # 每小时
vi /etc/cron.daily/ # 每天
vi /etc/cron.weekly/ # 每周
vi /etc/cron.monthly/ # 每月

开机启动项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/etc/rc.local #0-6
/etc/rc.d/rc0.d/ #rc0-rc6、
/etc/init.d/
/usr/lib/systemd/system/ # find /usr/lib/systemd/system -mtime -1,-1指的是一天内是否有可疑开机启动项

# 查看启动脚本目录
ls -alt /etc/init.d/
ls -alt /etc/rc*.d/

# 查看已启用的服务
systemctl list-unit-files | grep enabled

# 服务管理
sudo systemctl stop <服务名> # 停止服务
sudo systemctl disable <服务名> # 禁用服务
sudo systemctl start <服务名> # 启动服务
sudo systemctl enable <服务名> # 启用服务

隐藏进程识别

1
2
3
ps -ef | awk '{print}' | sort | uniq > 1
ps -ef | awk '{print}' | sort | uniq > 2
diff 1 2

最近文件排查

1
find / -newerct '2024-03-17 00:00:00' ! -newerct '2024-03-18 09:00:00' ! -path '/proc/*' ! -path /'sys/*' ! -path '/run/*' -type f -exec ls -lctr --full-time {} \+ 2>/dev/null

用户账号排查

1
2
3
4
5
6
7
cat /etc/passwd
cat /etc/shadow

cat /etc/passwd | grep -v 'nologin\|false'#排查可以登录SSH的账户
cat /etc/passwd | awk -F: '$3==0 {print $1}'#排查UID是0的超级用户
cat /etc/shadow | awk -F: 'length($2)>2 {print $1}'#有口令的
cat /etc/shadow | awk -F: 'length($2)==0 {print $1}'#排查空口零SSH

排查自启动

1
2
3
4
5
cat /etc/rc.d/rc.local
ll /etc/systemd/system/
ll /etc/systemd/system/multi-user.target.wants/ #该目录是存放多用户模式下启动服务的符号链接的地方。

systemctl list-unit-files --type=service | grep enabled

排查临时目录和home目录

1
2
find /tmp ! -type d -exec ls -lctr --full-time {} \+ 2>/dev/null
find $HOME ! -type d -exec ls -lctr --full-time {} \+ 2>/dev/null

排查 SUID 文件

1
2
3
4
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

排查别名

1
2
alias
find / -name *bashrc* -type f -exec ls -lctr --full-time {} \+ 2>/dev/null

排查命令日志

1
2
3
/root/.bash_history

for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; sudo cat /home/$user/.bash_history 2>/dev/null; done

排查WEB服务日志

1
2
/var/log/nginx/access.log
/var/log/nginx/seahub.access.log

排查登录信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/var/log/lastlog

# 查看登录信息
lastlog
last

# 进入日志目录
cd /var/log/

# 统计失败登录次数
sudo grep "Failed password" auth.log | wc -l
# 或
sudo grep "Failed password" secure | wc -l

# 攻击IP统计排序
awk '{if($6=="Failed"&&$7=="password"){if($9=="invalid"){ips[$13]++;users[$11]++}else{users[$9]++;ips[$11]++}}}END{for(ip in ips){print ip, ips[ip]}}' auth.* | sort -k2 -rn | head

排查系统消息日志

1
/var/log/messages

配置文件排查

1
2
3
4
5
vi /etc/bash.bashrc      # 系统bash配置文件
vi ~/.bashrc # 用户bash配置文件
vi /etc/profile # 系统profile文件
vi ~/.profile # 用户profile文件
vi ~/.bash_logout # 用户登出脚本

排查可疑文件

1
find / -name ".*" -type f | grep -v "/proc/" | grep -v "/sys/"