ssh访问控制,多次失败登录即封掉IP,防止暴力破解

近期一直发现站内的流量和IP不太正常,读取/var/log/secure 很多失败的登录信息!必须要整个方法整死他们,虽然我已经把ssh port修改为了XXX(能告诉你吗?)!但是攻击还是不断,随即请教了铭哥大神。由于担心没有测试机,直接线上操作把自己也加入black list就不好了。找了很多资料,最终也成功了。分享给大家!

一、系统:Centos6.9 64位

二、方法:读取/var/log/secure,查找关键字 Failed,(#cat /var/log/secure | grep Failed)例如(注:文中的IP地址特意做了删减):

Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2 Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2 Sep 17 09:10:02 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2 Sep 17 09:10:14 localhost sshd[29223]: Failed password for root from 13.7.3.6 port 56482 ssh2

从这些行中提取IP地址,如果次数达到10次(脚本中判断次数字符长度是否大于1)则将该IP写到 /etc/hosts.deny中。

三、步骤:

1、先把始终允许的IP填入 /etc/hosts.allow ,这很重要!比如:

sshd:19.16.18.1:allow

sshd:19.16.18.2:allow

由于手机(移动的网络)经常更改IP,但是我还经常需要使用手机来登录去查看一些使用情况,经过查看IP地址发现一直都是某个IP地址段的,所以:

sshd:132.213.:allow

2、脚本 /usr/local/bin/secure_ssh.sh

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
for i in `cat  /usr/local/bin/black.list`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|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

3、将secure_ssh.sh脚本放入cron计划任务,每1分钟执行一次。 # crontab -e

*/1 * * * *  sh /usr/local/bin/secure_ssh.sh

四、测试:

1、原本还想着是不是找个另外的方法测下呢。就在疑问还没有结束的时候,想要不先看看吧,就发现:上个图吧:

[[email protected] ~]#  cat /usr/local/bin/black.txt

还逮了个不小的呢!!!

再看看服务器上的hosts.deny

[[email protected] ~]# cat /etc/hosts.deny

2、从另一个终端窗口继续“暴力”连接服务器。

看看服务器上的黑名单文件: [[email protected] ~]# cat /usr/local/bin/black.txt 13.26.21.27=6

再看看服务器上的hosts.deny [[email protected] ~]# cat /etc/hosts.deny sshd:13.7.3.6:deny sshd:92.4.0.4:deny sshd:94.10.4.2:deny sshd:94.4.1.6:deny sshd:11.64.11.5:deny sshd:13.26.21.27:deny

IP 已经被加入到服务器的hosts.deny,再用正确的密码连接服务器,被拒绝: $ ssh [email protected] -p 2333 ssh_exchange_identification: Connection closed by remote host

事实证明,改了端口后+此自动添加黑名单,暴力破解的ssh连接数锐减~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

Spring(一)Spring的第一滴血

前言   开始工作了,但是一进来公司本来是做爬虫和数据分析的,但是走了一个后端的,导致我必须要去顶替他的工作。因为这个项目使用的是Spring、   Sprin...

2436
来自专栏技术翻译

使用Netflix Hystrix保护您的应用程序

借助微服务架构,我们可以构建灵活且可独立部署的软件模块或系统,这些模块或系统通过HTTP资源API等轻量机制相互通信并提供结果。与单一应用程序相比,它具有许多优...

680
来自专栏xingoo, 一个梦想做发明家的程序员

Tomcat 6 --- 使用Jasper引擎解析JSP

熟悉JAVA web开发的朋友都知道JSP会被转换成java文件(预编译),然后编译成class使用,即按照JSP-->java-->class的过程进行编译...

2487
来自专栏Rainbond开源「容器云平台」

【Docker】Flume+Kafka收集Docker容器内分布式日志应用实践

1716
来自专栏IT技术精选文摘

JMeter最多可以模拟多少测试用户数?

本文我们将讨论一个确切说没有准确答案的问题 - 即我们使用Apache JMeter™最多可以模拟多少用户来做测试? 像JMeter本身的限制一样,这样的限制因...

5667
来自专栏大魏分享(微信公众号:david-share)

大白话说前端应用 | 从开发角度看应用架构10

在正式做架构分析之前,我们需要明确两个概念:web server和web container的区别。

1343
来自专栏余林丰

关于日志打印的几点建议以及非最佳实践

  日志的打印在软件开发过程中必不可少,一般分为两个大类: 操作日志 系统日志   操作日志,主要针对的是用户,例如在Photoshop软件中会记录自己操作的步...

3127
来自专栏程序猿DD

Spring Boot自动化配置的利弊及解决之道

双刃剑:自动化配置 之前在博客中发布的大量Spring Boot基础教程系列文章中,我们通过各种功能性示例体验了Spring Boot的自动化配置给我们所带来的...

3765
来自专栏云计算

Go 微服务,第11部分:Hystrix和Resilience

在Go微服务博客系列的这一部分,我们将探讨如何使用Netflix Hystrix的Go实现和go-resilience重试包,使用断路器模式使我们的服务间通信更...

7283
来自专栏情情说

《深入实践Spring Boot》阅读笔记之三:核心技术源代码分析

上篇文章总结了《深入实践Spring Boot》的第二部分,本篇文章总结第三部分,也是最后一部分。这部分主要讲解核心技术的源代码分析,因为篇幅和能力原因,分析的...

4989

扫码关注云+社区