Liunx应急上机排查脚本

应急排查
建议先清除计划任务、启动项、守护进程,再清除恶意进程,防止卷土重来,清理不干净。
应急排查收集常见信息脚本

#!/bin/bash 
#Liunx 应急响应上机信息收集
#应急清理:建议先清除计划任务、启动项、守护进程,再清除恶意进程。
# busybox 安装
#yum -y install wget make gcc perl glibc-static ncurses-devel libgcrypt-devel
#wget http://busybox.net/downloads/busybox-1.33.0.tar.bz2
#tar -jxvf busybox-1.33.0.tar.bz2
#cd busybox-1.33.0 && make && make install
echo -e '\e[31;43m 应急排查信息收集\e[0m'
echo -e '\e[31;43m 应急建议先清除计划任务、启动项、守护进程,再清除恶意进程。\e[0m' 

uptime
#账号安全
echo -e '\e[31;43m 账号安全\e[0m'
#当前登陆用户(pts|tty)
echo -e '\e[34;47m w命令 \e[0m'
#剔除某用户pkill -9 -t pts/0
w

#查看特权用户
echo -e '\e[34;47m 特权用户 \e[0m'
awk -F: '$3==0{print $1}' /etc/passwd
echo -e '\e[34;47m sudo的权限的用户 \e[0m'
cat /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)"
#查看公钥配置
echo -e '\e[34;47m 免密登陆公钥 \e[0m'
cat ~/.ssh/authorized_keys

#查看可以远程登陆的用户
echo -e '\e[34;47m 可以远程登陆的用户 \e[0m'
awk '/\$1|\$6/{print $1}' /etc/shadow

#成功登陆的用户和时间
echo -e '\e[34;47m 成功登陆用户和时间 \e[0m'
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
#爆破的IP
echo -e '\e[34;47m 存在爆破的IP \e[0m'
 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]?)"|sort |uniq  -c
#爆破字典
echo -e '\e[34;47m 爆破的字典 \e[0m'
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|sort -nr|uniq -c

#查看网络链接
echo -e '\e[31;43m 网络情况IP \e[0m'
echo -e '\e[34;47m 查看网络链接 \e[0m'
netstat -antlp 

echo -e '\e[34;47m 主机防火墙配置 \e[0m'
iptables -nL


#查看用户空间的进程
echo -e '\e[31;43m 进程 \e[0m'
echo -e '\e[34;47m ps 命令 \e[0m'
ps -aux | grep -v '\['
#查看开机启动
echo -e '\e[31;43m 启动项 \e[0m'
echo -e '\e[34;47m 查看启动项文件\e[0m'
runlevel
ls -l /etc/rc.d/rc3.d/ 
chkconfig --list

echo -e '\e[34;47m 定时任务 \e[0m'
# 查看定时任务
crontab -l

#其他启动任务
echo -e '\e[34;47m 其他启动任务文件 \e[0m'
crontfile=("/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/")
for f in ${crontfile[@]};
do
echo '=======定时启动文件目录:'$f
ls $f
done

echo -e '\e[34;47m 最进修改的文件 \e[0m'
# 查看/etc/下最近两天的修改的文件
find /etc -ctime -2 
#lsof -c $file  查看是否存在有可疑文件的相关进程信息


echo -e '\e[31;43m 加载恶意链接库 \e[0m'
echo -e '\e[34;47m 是否存在预加载 \e[0m'
# 查看是否有预加载的so库文件
cat /etc/ld.so.preload
echo $LD_PRELOAD

#发现可以进程后查看:
#1)ls -l /proc/$PID/exe
#2)

#校验rpm文件是否有变化
echo -e '\e[31;43m RPM file \e[0m'
echo -e '\e[34;47m 检查RPM file是否被改 \e[0m'

rpm -Va 

echo -e ‘\e[34;47m 5.4查看history记录 \e[0m’
cat ~/.bash_history|grep -vE ‘ls|cat|cd|ll|ifconfig|rpm|exit|ps|top|find|ping|grep’

for file in /home/*
do
if [ -d KaTeX parse error: Expected 'EOF', got '#' at position 30: … echo -e "#̲#########file###########"
cat $file/.bash_history | grep -vE ‘ls|cat|cd|ll’
fi
done

####攻击指纹####
echo -e ‘\e[31;43m 6)攻击指纹 \e[0m’
#SSH爆破的IP
echo -e ‘\e[34;47m 6.1存在爆破的Top 20 IP \e[0m’
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]?)”|sort | uniq -c |sort -rn |head -n 10
#SSH爆破字典
echo -e ‘\e[34;47m 6.2爆破的字典Top 20 \e[0m’
grep “Failed password” /var/log/secure|perl -e ‘while($_=<>){ /for(.*?) from/; print “$1\n”;}’|sort |uniq -c |sort -rn |head -n 20

#登陆成功的IP
echo -e ‘\e[34;47m 6.3登陆成功的IP \e[0m’
grep “Accepted” /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]?)”|sort | uniq -c |sort -rn |head -n 10

查看是否有预加载的so库文件

echo -e ‘\e[34;47m 6.4恶意加载 \e[0m’
cat /etc/ld.so.preload
echo $LD_ELF_PRELOAD
echo $LD_PRELOAD
echo $LD_LIBRARY_PATH

#查看系统命令文件是否被改
echo -e ‘\e[34;47m 6.5查看文件是否被替换或者修改 \e[0m’
file /bin/ps ##可能替换为shell脚本,过滤显示
stat /bin/ls
stat /bin/ps
stat /etc/passwd

echo -e ‘\e[34;47m 6.6进程存在但文件被删除 \e[0m’
lsof +L1

echo -e ‘\e[34;47m 6.7是否存在空密码登陆 \e[0m’
cat /etc/ssh/sshd_config | grep -Ev “^$|[#;]” | grep PermitEmptyPasswords | awk ‘{print $2}’

echo -e ‘\e[34;47m 6.8定时任务反链接链接 \e[0m’
cat /etc/crontab | grep -Ev “^$|[#;]” | grep “/dev/tcp”
for file in /var/spool/cron/*
do
cat KaTeX parse error: Expected group after '^' at position 18: …le | grep -Ev "^̲|[#;]" | grep “/dev/tcp”
done
for file in /etc/cron*/*
do
cat KaTeX parse error: Expected group after '^' at position 18: …le | grep -Ev "^̲|[#;]" | grep “/dev/tcp”
done

echo -e ‘\e[34;47m 6.9定时任务wget|curl–\e[0m’
cat /etc/crontab | grep -Ev “^$|[#;]” | grep -E “wget|curl” | grep “sh”
for file in /var/spool/cron/*
do
cat KaTeX parse error: Expected group after '^' at position 18: …le | grep -Ev "^̲|[#;]" | grep -E “wget|curl” | grep “sh”
done
for file in /etc/cron*/*
do
cat KaTeX parse error: Expected group after '^' at position 18: …le | grep -Ev "^̲|[#;]" | grep -E “wget|curl” | grep “sh”
done

echo -e ‘\e[34;47m 6.10检查PROMPT_COMMAND环境变量\e[0m’

PROMPT_COMMAND 变量会在你执行命令前执行一遍

cat /etc/profile | grep “PROMPT_COMMAND”
cat /etc/bashrc | grep “PROMPT_COMMAND”
cat /root/.bashrc | grep “PROMPT_COMMAND”
cat /root/.bash_profile | grep “PROMPT_COMMAND”

echo -e ‘\e[34;47m 6.11检查超过20M的常见文件\e[0m’
find / ! -path “/proc/" ! -path "/sys/” ! -path “/run/" ! -path "/boot/” -size +20M -print 2>/dev/null | xargs -i{} ls -alh {} | grep ‘.gif|.jpeg|.jpg|.png|.zip|.tar.gz|.tgz|.7z|.log|.xz|.rar|.bak|.old|.sql|.1|.txt|.tar|.db|/\w+$’

###隐藏进程排查
echo -e ‘\e[34;47m 6.6 隐藏进程 \e[0m’
ps -ef | awk ‘{print $2}’ | sort -n | uniq >ps.log
ls /proc |grep ‘1*[0-9]’|sort -n >proc.log
diff ps.log proc.log
rm -f ps.log proc.log

####是否存在log4j2.x漏洞,版本小于2.15的 cve-2021-44228
echo -e ‘\e[34;47m 6.7 是否存在log4j漏洞 \e[0m’
result1=ls -la /proc/*/fd/ | grep -E "log4j-core"
result2=find / -name log4j-core*.jar
echo ‘有进程调用:’ r e s u l t 1 e c h o ′ 存在文件没有调用 : ′ {result1} echo '存在文件没有调用:' result1echo存在文件没有调用:{result2}

####是否存在spring mvc +小于jdk1.9漏洞cve-2022-22965
echo -e ‘\e[34;47m 6.8 是否存在spring cve-2022-22965漏洞 \e[0m’
result=“sec”
for pid in ps -ef |grep java|grep -v grep |awk '{print $2}'
do
if [ -n “$(echo KaTeX parse error: Undefined control sequence: \+ at position 21: …sed -n "/^[0-9]\̲+̲/p”)" ];then
jdk=ls -la /proc/${pid}/fd/ | awk '{print $NF}' | grep 'jdk'|grep -vE '1\.5|1\.6|1\.7|1\.8' |head -n 1 2>/dev/null
if [ -n “ j d k " ] ; t h e n s p r i n g = ‘ l s − l a / p r o c / jdk" ] ; then spring=`ls -la /proc/ jdk"];thenspring=lsla/proc/{pid}/fd/ | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲' | grep -E 'sp…spring” ] ; then
path=‘spring=’KaTeX parse error: Expected group after '_' at position 10: {spring}'_̲_jdk='jdk
result=KaTeX parse error: Expected group after '_' at position 8: result'_̲'{path}
echo ‘result_’${result}
java --version
fi
fi
fi
done
####是否存在struts2漏洞 CVE-2021-31805 影响版本2.0.0 to 2.5.29
echo -e ‘\e[34;47m 6.9 是否存在struts2漏洞 CVE-2021-31805 影响版本2.0.0 to 2.5.29 \e[0m’
find / -name struts2-core*

执行结果eg:
在这里插入图片描述


  1. 0-9 ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Linux中,MySQL巡检脚本是一种用于监视、诊断和优化MySQL服务器性能的工具。它可以帮助管理员定期检查和评估服务器的各个方面,确保其正常运行并提供最佳性能。 MySQL巡检脚本通常包括以下功能: 1. 监控MySQL服务器的状态:脚本可以检查数据库服务器的运行状态,并显示关键性能指标,如连接数、查询执行次数、缓存使用情况等。通过持续监控这些指标,管理员可以了解服务器的负载情况,及时采取措施优化性能。 2. 检查MySQL的配置:脚本可以检查MySQL配置文件,确保其与服务器硬件和操作系统的要求相匹配。它可以检查缓冲区大小、线程池设置、连接数量等配置参数,强调潜在的问题并提供修复建议。 3. 识别慢查询:脚本可以分析数据库日志,识别慢查询和高消耗的查询语句。这对于定位性能问题和优化查询非常重要。通过检查慢查询,可以发现导致性能瓶颈的查询语句,并提供优化建议。 4. 检查数据库备份和恢复:脚本可以确认数据库备份是否按计划执行,并检查备份的完整性。此外,它还可以评估数据库的恢复性能,以确保在故障发生时可以及时恢复数据。 5. 检查数据库安全性:脚本可以检查数据库的安全设置,比如弱密码、未授权访问等。它可以提示管理员采取相应的措施,以确保数据库的安全防护。 综上所述,MySQL巡检脚本能够帮助管理员对MySQL服务器进行全面的性能检查和优化,确保服务器的稳定性和可靠性。这也是Linux系统中常用的一种管理工具。 ### 回答2: Linux中MySQL巡检脚本是一种用于检查和监视MySQL数据库服务器的工具。巡检脚本可以通过定期运行,以提供数据库性能方面的报告和警告。 MySQL巡检脚本可以检查以下方面: 1. 数据库连接:脚本可以检查数据库服务器的连接数以及是否有空闲连接。如果连接数超过限制或没有足够的空闲连接可用,脚本可以发送警报。 2. 数据库存储空间:脚本可以检查数据库中表的大小和数据库磁盘空间的使用情况。如果数据库存储空间接近或超过限制,脚本可以发送警报。 3. 查询性能:脚本可以检查查询语句的执行时间和慢查询日志。它可以识别哪些查询可能导致性能瓶颈,并提出优化建议。 4. 数据库备份:脚本可以检查数据库备份的状态和过期情况。它可以警告如果备份失败或过期的备份。 5. MySQL服务器状态:脚本可以检查MySQL服务器的运行状态,例如是否有和CPU和内存使用情况,是否有重要进程运行,以及服务器日志的错误和警告。 通过定期运行巡检脚本,管理员可以及时了解数据库的运行状态和性能问题。这不仅可以帮助管理员更好地管理数据库,而且可以提前识别并解决潜在的故障和性能问题,从而确保数据库的稳定性和可靠性。 ### 回答3: Linux中MySQL巡检脚本是一种用于检测和监视MySQL数据库性能和健康状态的脚本工具。它可以通过执行一系列的检查和监控任务来确保数据库运行正常,并提供及时的警报和通知,以便管理员可以采取适当的措施来解决问题。 MySQL巡检脚本通常包括以下方面的检查内容: 1. 数据库连接和登录验证:检查数据库的连接是否正常,并验证登录凭证是否正确。 2. 表空间和存储容量:检查数据库的表空间使用情况和存储容量是否足够,以避免空间不足导致数据库运行缓慢或崩溃。 3. 查询性能和慢查询分析:通过分析数据库的查询性能和慢查询日志,确定是否存在性能问题,并给出相应的优化建议。 4. 错误日志和警告信息:检查MySQL的错误日志和警告信息,及时发现并解决可能的问题。 5. MySQL进程和线程状态:检查数据库的进程和线程状态,包括运行中的进程、线程和锁定信息,以确保数据库的正常运行。 6. 主从复制状态:检查主从复制状态,确认主从服务器同步是否正常,并及时发现和修复复制延迟或断开的问题。 7. 数据库备份和恢复:检查数据库的备份和恢复情况,确保备份文件的完整性和可用性,以保证数据的安全性。 通过使用这些巡检脚本,管理员可以及时发现数据库的问题,提高数据库的稳定性和性能,确保数据的安全性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值