文档章节

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

大道至簡
 大道至簡
发布于 2015/07/31 19:15
字数 509
阅读 30
收藏 0

一、系统:CentOS 6.3 64位

二、方法:读取/var/log/secure,查找关键字 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地址,如果次数达到5次则将该IP写到 /etc/hosts.deny中。

三、步骤:

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

2、脚本 /root/secure_ssh.sh

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
DEFINE="5"
for i in `cat  /root/black.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
  if [ $NUM -gt $DEFINE ];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 /root/secure_ssh.sh

四、测试:

1、开两个终端窗口,一个ssh连上服务器,另一个用错误的密码连接服务器几次。

很快,服务器上黑名单文件里已经有记录了:
[root@ ~]# $ cat /root/black.txt 
13.26.21.27=3

再看看服务器上的hosts.deny
[root@ ~]# 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

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

看看服务器上的黑名单文件:
[root@ ~]# cat black.txt
13.26.21.27=6

再看看服务器上的hosts.deny
[root@ ~]# 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 root@myserver.mydomain.com -p 2333
ssh_exchange_identification: Connection closed by remote host

注:
1.脚本为同事编写。

2.服务器sshd端口已改为2333,事实证明,改了端口后,暴力破解的ssh连接数锐减。


本文转载自:http://www.linuxidc.com/Linux/2014-09/107370.htm

共有 人打赏支持
大道至簡

大道至簡

粉丝 45
博文 91
码字总数 24369
作品 0
广州
技术主管
私信 提问
linux系统安全

方法一: 密码足够复杂 密码的长度要大于8位,最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字符和特殊字符混合组成。 修改默认ssh端口 使用iptables关闭不需要使用的端口 sshd 默...

xucaibao1979
2017/06/30
0
0
Freebsd 下用 sshguard 防止暴力破解 ssh 密码

在 Freebsd 控制台或用 dmesg -a 查看系统消息的时候会发现类似于下面的大量信息,这是因为有人在尝试暴力破解 SSH 密码的原因。 Jun 22 06:42:00 vps sshd[80092]: error: PAM: authenticat...

芒果龙
2011/11/02
0
0
使用 fail2ban 防御 SSH 服务器的暴力破解

对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证。将不同的...

linux-tao
2017/11/15
0
0
Linux 王子 带你完成 Linux SSHD服务“gong fang”实战

重要声明: 本文以研究角度去说明SSHD服务的“gong ji”和防护原理,也不会提供文中所提到的“gong ji”工具(因为会被和谐掉哦!没办法^_^),请读者不要用违法用途,本人对于读者用户违法行...

xruan
2018/06/21
0
0
ssh加固之fail2ban

ssh为了安全,可能大家会用fail2ban防止暴力破解。但有时候大家并不喜欢用iptables,云服务器都是用的安全组。 ssh可以设置允许某个ip登陆,一般公司都是使用固定ip的办公网络,但也有动态的...

梦幻柒仔
2016/12/23
8
0

没有更多内容

加载失败,请刷新页面

加载更多

js数组遍历和对象遍历

数组遍历 for for(var i=0,len=arr.length;i<len;i++){console.log(arr[i]);} forEach - ES5语法,性能比for弱,不能使用break终止循环,不能使用return arr.forEach(function(item,inde......

祖达
10分钟前
0
0
Java网络编程

基本概念 网络IO会涉及到同步,异步,阻塞,非阻塞等几个概念。 一个网络IO读取过程是数据从 网卡 到 内核缓冲区 到 用户内存 的过程。同步和异步区别在于数据从内核到用户内存的过程是否需要...

春哥大魔王的博客
32分钟前
1
0
Spring "reg:zookeeper" 的前缀 "reg" 未绑定等类似问题解决方案。

今天同事遇到一个Spring启动加载配置文件时,不识别reg:zookeeper标签的问题。 我查看配置,发现是Spring配置文件的头部没有引入reg标签的命名空间,具体如下图: 所以,以后遇到类似的标签未...

花漾年华
今天
1
0
阿里云领衔云市场

近期,2018年Q4及全年的全球云基础设施服务市场数据新鲜出炉,发布方是美国市场研究机构Synergy Research Group。这个机构是专做电信网络市场情报的公司,成立于1999年,每年都会公布各大公有...

linuxCool
今天
2
0
C++友元函数和友元类(C++ friend)详解

私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行。这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书...

shzwork
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部