禁止sshd暴力尝试方案

最近查看了一下日志服务器,这台日志服务器监控来自服务器群里面的一些机器日常运行日志,可以通过网页形式查看,结果有点出乎意料:

总是有那么一些人会不停地扫机器,不停的尝试暴力破解ssh登陆,还好本人用的密码估计可以让这些无聊的人猜个几万年,但是老是这样子也不行啊,想了几个防范的方法:

1.关闭ssh的root登陆选项,这样可以一定程度上面防范,但是今后想用root直接登陆就不行了,安全了但是也麻烦了,随便吐槽一下,公司研发那边人连vpn都不想用,说太麻烦了,结果还是直接给他们开放出来了,这样的“人才”我只能说我跪了。放弃这个想法。

2.vpn登陆,上面就说了,人家嫌麻烦!又放弃之。

3.收集登陆信息,发现登陆次数过多的ip,直接扔到hosts.deny里面,这样就可以防止了。

没错,这里说的是第三种方案了,但是要写脚本!

首先要知道,登陆信息是放在那个文件里面的,我用的centos,一般都是放在/var/log/secure文件里面,直接vi就可以看到里面的各种登陆信息。

那就干活吧,写shell去:

#touch blockip.sh

#vi blockip.sh

#!/bin/bash

datenode=`date -d -15min|awk ‘{print substr($0,10,5)}‘`

blockip=`cat /var/log/secure | grep "$datenode" | awk ‘$6 ~ "Failed" {print $0}‘ | grep -o ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}‘ | sort | uniq -c | awk ‘$1>6 {print "sshd:"$2}‘`

echo $blockip >> /etc/hosts.deny

这里解析一下:

  1. datenode=`date -d -15min|awk ‘{print substr($0,10,5)}‘` 的意思是设置一个监控时间点,我这里设置了15分钟内的
  2. cat /var/log/secure | grep "$datenode" | awk ‘$6 ~ "Failed" {print $0}‘ 查找15分钟内在第六个字段出现有"Failed"的内容,因为在secure文件里面,出现"Failed"基本上就可以判断是有问题的,这里是根据我服务器情况而定的,具体可以根据服务器实际的内容决定
  3. | grep -o ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}‘ | sort | uniq -c 在b中找了内容后再匹配如果是出现ip形式的内容,并且sort排序,uniq去除重复,-c是计算次数
  4. | awk ‘$1>6 {print "sshd:"$2}‘` 最后筛选出来的内容第一列数字如果大于6次(也就是证明这个ip不断尝试了6次ssh登陆(实际如果是我们去登陆的话,写错6次密码的几率很低了),然后打印出来sshd $2,$2第二列是ip,形式就是sshd:x.x.x.x

好了,这下终于筛选出来了最终的格式了sshd:x.x.x.x,然后写到/etc/hosts.deny里面,这样下次再出现这个ip尝试登陆的话,系统会直接禁止访问了,再配合crontab,每15分钟扫一下:

*/15 * * * * sh /opt/blockip.sh > /dev/null 2>&1

再每个晚上23时重置一下hosts.deny文件,/opt/hosts.deny是一个没有新增内容的一个原始文件,为了是以防那天这些ip被好人使用了,又想访问我们的业务的话,那这样就相当于清空了限制了。

* 23 * * * cat /opt/hosts.deny > /etc/hosts.deny

over!

禁止sshd暴力尝试方案,布布扣,bubuko.com

时间: 2024-10-01 08:07:47

禁止sshd暴力尝试方案的相关文章

Fail2防止sshd暴力破解

Fail2ban 防止sshd暴力破解 [[email protected] ~]# ls \                       install.log         模板  文档  桌面 anaconda-ks.cfg         install.log.syslog  视频  下载 fail2ban-0.8.14.tar.gz  公共的              图片  音乐 实战演练 最近公网网站一直被别人暴力破解sshd服务密码.虽然没有成功,但会导致系统负载很高,原因是

LitePal + Gson + Volley的ORM框架尝试方案

为了紧跟技术潮流,目前的项目开始采用ORM的思想进行重新设计. 数据库采用轻量级ORM框架LitePal,Json解析采用Gson,网络框架采用Volley. 如果只是单纯的将这些第三方框架引进来,事情就简单多了,但这样意义不大,所以我们就结合项目的需求探索这三者的结合方案. Volley的改造比较大,结合了OkHttp,在API方面采取了链式调用的方式,可以像这样写代码: Volley.url("").params("", "").done()

暴力尝试安卓gesture.key

import hashlib import os import itertools f = open(r'D:\KEY\gesture.key','r') psd = f.readline() f.close() ANS = psd.encode('hex') print ANS b = ['00','01','02','03','04','05','06','07','08'] cool = False for i in range(9,10): qq = itertools.permutat

2-3 sshd服务---暴力破解应对策略

  sshd服务暴力破解步骤 sshd暴力破解方法 防止暴力破解调优 1. 变更默认端口 2. 变更root用户 3. 日志监控-->防止暴力破解(fail2ban应用) fail2ban详解 在初始化的服务器中,20种ssh服务调优方法! 技术来源于生活!!! =============================================== sshd服务暴力破解步骤 第一步:确认目标IP地址 第二步:确认目标端口--->根据目标开放端口,确定其操作系统 第三步:运行暴力破解程序

linux防止sshd被爆破(安装denyhosts)

这是一篇收集在日志里的文档,当初查看服务器sshd日志发现很多不明IP尝试登陆,因此想用什么办法阻止这样的事情发生.网上找了下用denyhosts可以解决这样的问题,因而也就将其收集在日志里了.由于时间较久远,找不到原文的出处,如果你知道原文出处,可以联系我加上.好了,入正题. Denyhosts 是一个以Python2.3编写的程序,它主要根据系统日志文件/var/log/secure文件分析,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自

服务器禁止登录ip地址一览表(持续更新)

阿里云ECS禁止ssh暴力登录 iZ25dx3d6zkZ# cat /etc/hosts.deny ALL:106.75.218.173 ALL:122.225.36.138,190.15.193.218,93.179.228.222,222.187.222.243,123.183.217.195,61.157.198.130,124.232.146.42,210.12.25.22,42.7.26.91,122.2.223.242,217.61.105.67,177.214.98.142,122

[小技巧] Python 脚本暴力破解 HC2600 机顶盒管理密码

家里最近接入了广电有线电视,配了三个创维 HC2600 机顶盒,并且每个机顶盒还带有无线路由器功能. 免费赠送 Internet 接入服务倒也没什么,不过机顶盒内置的 WIFI 实在有点寒酸:只支持 2.4 GHz 频段下 802.11n 150 Mbps 速率的传输.2.4 GHz 频段本来就很拥挤,用户体验并不好,要是和支持 802.11 ac 的双频无线路由器混用的话,恐怕反而会因为干扰起到反作用. 然而要对 HC2600 机顶盒作任何配置修改,都需要管理员密码.网上搜索到 HC2600

Wordpress xmlrpc.php暴力破解漏洞

Wordpress xmlrpc.php暴力破解漏洞 wordpress是很流行的开源博客,它提供远程发布文章的方法,就是使用跟路径的xmlrpc.php这个文件,最近爆出xmlrpc漏洞,漏洞原理是通过xmlrpc进行认证,即使认证失败,也不会被Wordpress安装的安全插件记录,所以不会触发密码输错N次被锁定的情况.因此就可能被暴力破解,如果密码又是弱口令的话,就相当危险了.最简单的解决办法,就是删除xmlrpc.php这个文件.闲来无事,用java写了暴力破解的脚本,其实就是拿着各种用户

Spring Security笔记:登录尝试次数限制

今天在前面一节的基础之上,再增加一点新内容,默认情况下Spring Security不会对登录错误的尝试次数做限制,也就是说允许暴力尝试,这显然不够安全,下面的内容将带着大家一起学习如何限制登录尝试次数. 首先对之前创建的数据库表做点小调整 一.表结构调整 T_USERS增加了如下3个字段: D_ACCOUNTNONEXPIRED,NUMBER(1) -- 表示帐号是否未过期D_ACCOUNTNONLOCKED,NUMBER(1), -- 表示帐号是否未锁定D_CREDENTIALSNONEXP