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

有段时间发现集群异常卡顿。担心的事情终于发生了,使用命令 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    fidone
  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攻击

    2019独角兽企业重金招聘Python工程师标准>>> 托管在IDC的机器我们通常都用SSH方式来远程管理.但是经常可以发现log-watch的日志中有大量试探登录的 信息,为了我们 ...

  2. linux ssh攻击 服务器自动重启

    一台服务器无缘无故自动重启,7点半接收到监控宝报警 last发现没有用户登陆到服务器 查看/var/logs/secure发现从7点16到22左右有来自广东的用户不停的尝试ssh登录服务器 7点22后 ...

  3. 在 Linux 上给用户赋予指定目录的读写权限

    在 Linux 上指定目录的读写权限赋予用户,有两种方法可以实现这个目标:第一种是使用 ACL (访问控制列表),第二种是创建用户组来管理文件权限,下面会一一介绍.为了完成这个教程,我们将使用以下设置 ...

  4. 跨界 Bio+IT,推文汇总(推荐收藏)

    "BioIT爱好者" 致力于 BIO 生物信息学和 IT 互联网技术的分享和推广,如果你喜欢生信,爱好 IT,乐于分享,欢迎关注并加入我们,一起跨界 Bio+IT. 部分历史推文梳 ...

  5. 服务器被黑客攻击和被挖矿之后的SSH安全防御 | SSH security defense after server is hacked and mined

    PS:本人非专业网络安全攻防人员,仅为个人实践经验.本文可能难免有不当之处,欢迎您的讨论和指导.此外,本文同时发布在个人GitHub Pages上了,欢迎访问和指导. 1. 确定服务器是否被黑客攻击和 ...

  6. 阿里云服务配置SSH密钥对登陆

    文章目录 阿里云服务配置SSH密钥对登陆 前言 SSH密钥对概述 SSH密钥对介绍 功能优势 使用限制 1 登陆云服务控制台 2 创建密钥对下载私钥 3 绑定ECS实例 4 修改私钥文件属性 5 运行 ...

  7. CoreOS Linux Alpha的重大漏洞已修复

    CoreOS Linux Alpha中的一个重大漏洞已修复,安全团队称此问题只影响该Linux发行版的104x.0.0版. \\ 在博客文章<CoreOS Linux Alpha中远程SSH存在 ...

  8. python expect模块_成为顶级黑客--python绝技 阅读笔记(五)

    Python构建一个SSH僵尸网络 可以看一下我们自己的网站的入侵检测系统(IDE)日志/var/log/auth.log中最近的SSH攻击记录,我们可以观察到:攻击者试图使用用户登录系统,远程IP正 ...

  9. 网络安全——攻防对抗

    需要靶机私聊 各自为战 底分100分  不能关闭端口21 22 80 不能修改flag ubuntu(root/toor):startx(界面)172.16.101.1 linux(root/1234 ...

最新文章

  1. 汇编: mul乘法指令
  2. 通过有序数组生成平衡搜索二叉树
  3. 凸透镜成像动画可拖动_经典四图八问!这道中考物理题,彻底解决凸透镜成像规律!...
  4. python常用快捷键、写代码事半功倍_Pycharm常用快捷键总结及配置方法
  5. weblogic hibernate HqlToken
  6. DDL 创建与查询数据库
  7. 报名啦!旷视研究院解读COCO 2017物体检测夺冠算法 | 吃瓜社
  8. Mac 电脑如何对文件进行批量重命名?
  9. 服务器一定要改默认端口
  10. 第一财经周刊:硅谷就是这样
  11. 浏览器 pad android,安卓平板专享 推荐五款Pad版应用浏览器
  12. windows 系统arp命令
  13. oracle数据库字符集为ZHS16GBK插入的韩文日文俄文变成问号
  14. wro4j wro.xml_WebJars和wro4j集成
  15. GitHub 上最酷的 8 个简历模板
  16. 【Pytorch项目实战】之生成式网络:编码器-解码器、自编码器AE、变分自编码器VAE、生成式对抗网络GAN
  17. [ZT]HyperSnap-DX抓图的几招
  18. 【微信小程序云开发】1分钟学会实现上传、下载、预览、删除图片,并且以九宫格展示图片
  19. 法务服务行业拓客的10个经典方法
  20. TortoiseSVN环境搭建

热门文章

  1. 携程数据库高可用架构实践
  2. 从数仓到数据中台,谈技术选型最优解
  3. 如何看待程序媛们的职场焦虑和未来职业规划?
  4. 一文完全理解定时器实现技术
  5. Kafka核心设计与实践原理总结:进阶篇
  6. 基于人工智能和物联网的“智能护理
  7. 与其羡慕他人精彩,还不如设法活出自我
  8. Worktile CTO 管理经验分享:如何在研发团队落地OKR?研发团队目标如何管理?
  9. 研发管理101军规#003 实战规模化敏捷:从8人到百人的敏捷之路
  10. leangoo敏捷开发看板工具