运维部署linux&githublinux

SSH攻击

2019-05-09  本文已影响288人  昵称又重复

有段时间发现集群异常卡顿。担心的事情终于发生了,
使用命令 lastb 查看了一下,我的天呢,好多未知的IP,我随便复制粘贴了一个到百度查询了一下,我日,美国的。后来还在网上的IP黑名单中发现了攻击我们服务器的IP。下面是从发现到解决的一个过程:

lastb查看的是 cd /var /log/btmp中的内容
last 查看的是 cd/var /log/wtmp中的内容
发动SSH攻击的IP地址列表
http://antivirus.neu.edu.cn/scan/ssh.php

统计ip出现的次数
https://blog.csdn.net/keketrtr/article/details/78606237
cat /var/log/btmp | awk '{print$(NF-1)}' |sort |uniq -c |sort -k 1 -n -r |head -20

参考网址
https://blog.csdn.net/qq_30553773/article/details/78705079
二、方法:读取/var/log/secure,查找关键字 Failed

处理SSH攻击的基本流程
首先查看我们的服务器是否存在SSH攻击

步骤一:
使用命令 lastb -20 查看,如果有大量的未知IP, 加上时间分析。极短时间内出现多次,则可以确定受到SSH攻击
查看登陆失败的用户IP
cat /var/log/secure | grep 'Failed password'
如果是SSH 攻击,会有很多的IP被列出来

查看cat /etc/hosts.allow (这个文件是存放 允许访问服务器的所有IP的内容,可以简单理解为白名单)
查看cat /etc/hosts.deny (这个文件存放的是 不允许访问服务器的IP内容 , 简单理解为黑名单)

步骤二:
然后开始写脚本,检测多次出现的IP
并且将这些IP存放到 hosts.deny 黑名单下。

步骤三:
首先创建存放实施攻击的ip的文本 命名为:security.txt 放在目录root下
创建脚本文件 命名为:security.sh 放在目录root下

! /bin/bash

cat /var/log/secure|awk '/Failed/{print (NF-3)}'|sort|uniq -c|awk '{print2"="1;}' > /root/security.txt for i in `cat /root/security.txt` do IP=`echoi |awk -F= '{print 1}'` NUM=`echoi|awk -F= '{print 2}'` if [{#NUM} -gt 1 ]; then
grep IP /etc/hosts.deny > /dev/null if [? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done

步骤四:
脚本创建好之后,将脚本的权限更改为可执行权限
chmod 777 security.sh
SSH攻击是每时每刻都在发动攻击的,所以我们需要将脚本添加到定时任务中,定时的执行
cat /etc/crontab (这个文本是存放定时脚本的文本)

步骤五:
将脚本添加到定时任务
crontab -e
*/1 * * * * root /root/security.sh (每分钟执行一次,执行用户是root 执行的脚本目录是/root/security.sh)

步骤六:
查看是否将脚本添加到定时任务
crontab -l
如果出现我们的定时执行任务,则添加成功

后期如果需要删除此定时任务的话,
crontab -r

步骤七
使用命令 lastb -20 (查看尝试登录我们服务器,但是登陆失败的IP)
成功的看到,那些之前一秒钟发动几十次攻击的IP不存在了,
原因一是:脚本对IP进行筛选之后,将识别为攻击者IP的,都放入了黑名单中,
原因二是:如果攻击者尝试用别的新的IP ,也就是没有被写入到黑名单的IP, 我们的脚本再次检测,将这些新的攻击IP也写入黑名单
这样,攻击者的IP会越来越少。

关于crontab的使用
https://blog.csdn.net/wuasdf123456/article/details/51722753

目前暂时是这个样子解决了,不知道大神还有没有更好的方式了!!!欢迎探讨!

上一篇下一篇

猜你喜欢

热点阅读