这是我在简书看到的一个作者经历,结合小编自己的一些实践,抛砖引玉,给大家分享一下。

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

一、查看记录错误登录的日志

/var/log/btmp 文件是记录错误登录的日志,就是说有很多人试图使用密码字典登录 ssh 服务,此日志需要使用 lastb 程序打开。

  • lastb 查看的是 /var/log/btmp 中的内容,而 /var/log/btmp 是一个二进制的文件;

  • last 查看的是 /var/log/wtmp 中的内容,而  /var/log/wtmp 也是一个二进制的文件;

东北大学收集的发动 SSH 攻击的 IP 地址列表:http://antivirus.neu.edu.cn/scan/ssh.php

我们可以简单统计 ip 出现的次数,然后针对这些 ip 进行处理:

blastb | awk '{print $3}' |sort |uniq -c |sort -k 1 -n -r |head -20

二、处理 /var/log/secure

/var/log/secure 一般用来记录安全相关的信息,记录最多的是哪些用户登录服务器的相关日志,如果该文件很大,说明很有可能有人在破解你的 root 密码。

三、处理 SSH 攻击的基本流程

首先,查看我们的服务器是否存在 SSH 攻击。

  • 步骤一:
    使用命令 lastb -20 查看,如果有大量的未知 IP, 加上时间分析。极短时间内出现多次,则可以确定受到 SSH 攻击。

  • 步骤二:

    查看登陆失败的用户 IP,读取 /var/log/secure,查找关键字 Failed,如果是 SSH 攻击,会有很多的 IP 被列出来。

cat /var/log/secure | grep 'Failed password'

其次,对目标 IP 进行黑白名单处理。

在上面步骤一、步骤二的基础上我们开始编写脚本,检测多次尝试错误登陆的 IP,将那些有问题 IP 存放到 hosts.deny 黑名单下,并通过 crontab 来每分钟定时执行执行。

  • /etc/hosts.allow,这个文件是存放允许访问服务器的所有 IP 的内容,可以简单理解为白名单;

  • /etc/hosts.deny,这个文件存放的是不允许访问服务器的 IP 内容,简单理解为黑名单。

  1. 创建存放实施攻击的 ip 的文本,命名为:denyhosts.txt/root/denyhosts/denyhosts.txt)。

  2. 创建定时脚本文件,命名为:denyhosts.sh/root/denyhosts/denyhosts.sh)。

#!/bin/bash

cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"=" $1;}' >/root/denyhosts/denyhosts.txt

DEFINE="5"

for i in `cat /root/denyhosts/denyhosts.txt`
do
      IP=`echo $i|awk -F '=' '{print $1}'`
    NUM=`echo $i|awk -F '=' '{print $2}'`
    if [ $NUM -gt $DEFINE ];then
                ipExists=`grep $IP /etc/hosts.deny |grep -v grep |wc -l`
        if [ $ipExists -lt 1 ];then
            echo "sshd:$IP" >> /etc/hosts.deny
        fi
    fi
done
  1. 脚本创建好之后,将脚本的权限更改为可执行权限: chmod a+x denyhosts.sh

  2. SSH 攻击是每时每刻都在发动攻击的,所以我们需要将脚本添加到定时任务中,定时的执行:

cat /etc/crontab # 这个文本是存放定时脚本的文本
  1. 将脚本添加到定时任务:

crontab -e

# 每分钟执行一次,执行用户是 root 执行的脚本是 /root/denyhosts/denyhosts.sh
* * * * * root /root/denyhosts/denyhosts.sh
  1. 查看是否将脚本添加到定时任务:crontab -l,如果出现我们的定时执行任务,则添加成功;后期如果需要删除此定时任务的话,通过:crontab -r 取消。

  2. 使用命令  lastb -20 (查看尝试登录我们服务器,但是登陆失败的 IP),成功的看到,那些之前一秒钟发动几十次攻击的 IP不存在了。

  • 原因一是:脚本对IP进行筛选之后,将识别为攻击者 IP 的,都放入了黑名单中;

  • 原因二是:如果攻击者尝试用别的新的 IP ,也就是没有被写入到黑名单的 IP, 我们的脚本再次检测,将这些新的攻击 IP 也写入黑名单。这样,攻击者的 IP 会越来越少。

除此之外,简单的办法就是改端口,ssh 攻击大部分都是批量扫 22 的,改了端口再改个不常用用户名和密码基本就没问题了,不知道大神还有没有更好的方式了!

原文:昵称又重复,《SSH 攻击》,https://www.jianshu.com/p/84d38d396629,简书

——The  End——

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

一次 SSH 攻击与处理小记的更多相关文章

  1. 发起SSH攻击主机IP地址列表

    发起SSH攻击主机IP地址列表 东北大学 http://antivirus.neu.edu.cn/scan/ssh.php 以下IP地址对SSH服务进行攻击,严重增加主机成为肉鸡的可能性.强烈建议网管 ...

  2. 服务器遭受 ssh 攻击

    查看auth.log日志,差点吓一跳,好多攻击记录. vim  /var/log/auth.log 才两天的功夫,900多万条记录, 一些解决应对的办法: 43down voteaccepted It ...

  3. 查看 ssh 攻击 和 攻击成功者

    查看攻击失败记录: grep "Failed password for invalid user admin" /var/log/auth.log 查看攻击成功的记录: grep ...

  4. SSH 正向/反向代理小记

    上周因为玩耍Minecraft的原因,折腾了下ssh的正向.反向代理,不得不说,科技改变命运..了解了基础的用法之后,很多跨域的事情都可以通过代理解决,而且只需要ssh帐号权限即可. 那么就简单来介绍 ...

  5. 防御暴力破解SSH攻击

    托管在IDC的机器我们通常都用SSH方式来远程管理.但是经常可以发现log-watch的日志中有大量试探登录的 信息,为了我们的主机安全,有必要想个方法来阻挡这些可恨的"HACKER&quo ...

  6. 小记IptabLes和IptabLex病毒清理过程

    去年有台Linux服务器被黑了,看了500万行日志(现在觉得当时好厉害呀),反正当时的日志文件有700Mb以上大.前两天师兄告诉我,信息中心的老师给他说我们有台服务器应该是被人入侵了,当作内网的跳板, ...

  7. Linux主机被SSH精神病(Psychos)暴力攻破后成为肉鸡的攻防过程

    近日公司局域网突然变得非常慢,上网受到很大影响,不仅仅是访问互联网慢,就连访问公司内部服务器都感到异常缓慢.于是对本局域网网关进行测试:   $ ping 10.10.26.254   发现延时很大, ...

  8. SSH爆破应急响应

    问题发现 登录云主机,根据提示消息,发现正遭受SSH爆破攻击,IP地址为159.65.230.189 查看登录相关安全日志:tail -f /var/log/secure,发现其他尝试爆破IP106. ...

  9. 20 个 OpenSSH 最佳安全实践

    来源:https://linux.cn/article-9394-1.html OpenSSH 是 SSH 协议的一个实现.一般通过 scp 或 sftp 用于远程登录.备份.远程文件传输等功能.SS ...

  10. BlackArch-Tools

    BlackArch-Tools 简介 安装在ArchLinux之上添加存储库从blackarch存储库安装工具替代安装方法BlackArch Linux Complete Tools List 简介 ...

随机推荐

  1. 4种API性能恶化根因分析

    摘要:服务发生性能恶化时,需要投入大量人力分析性能异常根因,分析成本高,耗时长.我们提出了一种先在异常调用链内部分析候选根因,再在全局拓扑环境下对候选根因进行汇聚的二级分析方法,克服了调用链之间异常相 ...

  2. Kafka 之 HW 与 LEO

    更多内容,前往 IT-BLOG HW(High Watermark):俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个 offset 之前的消息.分区 ISR 集合中的每 ...

  3. vue3中watch的写法大合集。

    VUE2的watch是一个属性写法是 watch:{ data1(newVal,oldVal){ 同步/异步操作 } } VUE3的watch则是一个函数,写法是 注意数据必须是响应式的 let nu ...

  4. Django笔记十三之select_for_update等选择和更新等相关操作

    本篇笔记将介绍 update 和 create 的一些其他用法,目录如下: get_or_create update_or_create select_for_update bulk_create b ...

  5. 一个.Net简单、易用的配置文件操作库

    在我们日常项目开发中,操作INI/CFG配置文件,往往会通过调用WinAPI来实现,WinAPI接口参数只支持字符串,而我们项目中,往往数据类型是多种多样的,在保存和获取配置值,我们就要进行类型的转换 ...

  6. [Maven]Maven聚合工程

    一直对此问题好奇,正好有这兴致和时间,有必要了解一下. 所谓聚合项目,实际上就是对项目分模块. 互联网项目一般来说按照业务分(订单模块.VIP模块.支付模块.CMS模块-): 传统的软件项目,大多采用 ...

  7. Python property、setter、deleter

    面向对象封装特点之一就是通过实现好的方法来访问,限制对数据的不合理访问,把对象状态私有化,仅供类的内部进行操作 下方示例,Test方法的number属性类实例的时候传递1,number是一个公开属性, ...

  8. 微信Token验证代码的实现

    微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...

  9. devops|中小公司不要做研发效能度量

    我特别反感那些不顾公司现状一上来就想要做研发效能度量的人,尤其是想把研发效能度量当成锤子四处去敲打螺丝钉的人. 没几个人的小公司上来就做研发效能度量,就如同普通人一上来直接问媒婆怎么能娶到迪丽热巴.解 ...

  10. awk判断整除(包含小数和负数)

    awk判断整除常用的方法是用内置的int或者求余数的算符% 被整数整除 输出0-100之间能被9整除的整数 使用 num/9==int(num/9) 的判断方法可以很好实现. awk 'BEGIN{ ...