防ssh暴力破解的应急响应
SSH暴力破解的应急响应实战案例
事件的起因:
在管理员的某次巡查时发现,22端口存在异常连接的IP。使用命令查看22端口的连接情况:
netsatat -anpl | grep 22
跟踪排查思路:
一、排除系统账户情况
1、除了root之外是否还有其它具有特权的的用户(uid为0):
awk -F: ‘$3==0{print $1}’ /etc/passwd
2、可以远程登录的账户
普通用户是没有权限的
二、确认攻击情况
1、查看密码登录错误次数
grep -o “Failed password” /var/log/secure|uniq -c
2、输出登录爆破的第一行和最后一行,确认爆破时间范围:
grep “Failed password” /var/log/secure|head -1
3、定位爆破IP:进一步定位都有哪些IP在爆破?
grep "Accepted " /var/log/secure | awk ‘{print $1,$2,$3,$9,$11}’
4、确认爆破使用的字典
grep “Failed password” /var/log/secure|perl -e ‘while($_=<>){ /for(.*?) from/; print “$1\n”;}’|uniq -c|sort -nr
5、确认成功登陆的IP
grep "Accepted " /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr | more
二、历史操作查询
1、当前登陆的用户:(tty本地登陆 pts远程登录):who
2、查看系统信息:想知道某一时刻用户的行为:w
3、查看登陆多久、多少用户,负载:uptime
4、查看历史操作命令:通过.bash_history查看帐号执行过的系统命令
4.1 root的历史命令:histroy
4.2 打开/home各帐号目录下的.bash_history,查看普通帐号的历史命令
为历史的命令增加登录的IP地址、执行命令时间等信息:
1)保存1万条命令
sed -i ‘s/^HISTSIZE=1000/HISTSIZE=10000/g’ /etc/profile
2)在/etc/profile的文件尾部添加如下行数配置信息:
######Jaky history #########
USER_IP=who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'
if [ “$USER_IP” = “” ]
then
USER_IP=hostname
fi
export HISTTIMEFORMAT="%F %T $USER_IP whoami "
shopt -s histappend
export PROMPT_COMMAND=“history -a”
#########Jaky history ##########
4.3 source /etc/profile让配置生效
生成效果: 1 2018-07-10 19:45:39 192.168.204.1 root source /etc/profile
4.4 历史操作命令的清除:history -c
但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录。
三、端口信息的排查
netstat -antlp|more
使用netstat 网络连接命令,分析可疑端口、IP、PID
查看下pid所对应的进程文件路径
运行ls -l /proc/P I D / e x e 或 f i l e / p r o c / PID/exe或file /proc/PID/exe或file/proc/PID/exe($PID 为对应的pid 号)
四、异常进程的排查
ps aux | grep pid
五、开机启动项的排查
系统运行级别示意图:
查看运行级别命令
runlevel
系统默认允许级别
vi /etc/inittab
id=3:initdefault 系统开机后直接进入哪个运行级别
开机启动配置文件
/etc/rc.local
/etc/rc.d/rc[0~6].d
启动项文件:
more /etc/rc.local
/etc/rc.d/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
六、检查定时任务的排查
1、利用crontab创建计划任务
基本命令
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 * * * * echo “hello world” >> /tmp/test.txt 每分钟写入文件
2、利用anacron实现异步定时任务调度
使用案例
每天运行 /home/backup.sh脚本:
vi /etc/anacrontab
@daily 10 example.daily /bin/bash /home/backup.sh
当机器在 backup.sh 期望被运行时是关机的
anacron会在机器开机十分钟之后运行它,而不用再等待 7天。
七、目录恶意文件的排查
1、重点关注以下目录中是否存在恶意脚本(以下文件夹都是定时任务文件夹下的文件)
经常查看这几个文件里面是否有异常代码或脚本,比如挖矿脚本。
/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/*
2、检查异常文件
1、查看敏感目录,如/tmp(缓存文件)目录下的文件,同时注意隐藏文件夹,以“…”为名的文件夹具有隐藏属性
2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
可以使用find命令来查找,如 find /opt -iname “*” -atime 1 -type f 找出 /opt 下一天前访问过的文件
3、针对可疑文件可以使用stat进行创建修改时间。
八、常见的日志说明