服务器防止SSH暴力破解

服务器防止SSH暴力破解

脚本内容如下:
文件名secure_ssh.sh ,我存放在/opt目录下面(centos系统)

#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat  /usr/local/bin/black.txt`
do
  IP=`echo $i |awk -F= '{print $1}'`
  NUM=`echo $i|awk -F= '{print $2}'`
   if [ $NUM -gt 5 ];then
      grep $IP /etc/hosts.deny > /dev/null
    if [ $? -gt 0 ];then
      echo "sshd:$IP:deny" >> /etc/hosts.deny
    fi
  fi
done

原理是 根据 /var/log/secure 文件,捞取密码失败五次以上IP信息 ,然后写入到/etc/hosts.deny,禁止相关ip ssh访问服务器,加入服务器没有secure 文件,则可以使用lastb 命令(用于查看失败登录ip信息

效果如下:

lastb -n 10	

在这里插入图片描述
awk 命令 检索 信息
sort|uniq -c 排序。并汇总出现次数,并将找到的ip输出到black.txt 并遍历black文件再和/etc/hosts.deny文件比较
处理完脚本,再给加到定时任务里面
先查看下定时任务:

crontab -l

然后编辑:

crontab -e

在出现的定时任务编辑加上下面语句,每隔一分钟(linux定时任务表达式从分钟起)执行一下脚本,汇总下攻击IP,并加入黑名单

*/1 * * * * sh  /opt/secure_ssh.sh

然后按 esc 输入wq!命令保存
如果担心自己密码输入错误次数多,就把自己的 ip 加入的 hosts.allow里面
注:定时任务自动执行,无需启动

/etc/hosts.allow和/etc/hosts.deny两个文件是控制远程访问设置的,通过他可以允许或者拒绝某个ip或者ip段的客户访问linux的某项服务。
我们通常只对管理员开放SSH登录,那我们就可以禁用不必要的IP,而只开放管理员可能使用到的IP段。

1.修改/etc/hosts.allow文件

sshd:192.168.137.*:allow

以上写法表示允许192.168.137.*一个ip段连接sshd服务(这还需要hosts.deny这个文件配合使用),当然:allow完全可以省略的。
当然如果管理员集中在一个IP那么这样写是比较省事的

all:192.168.137.111

以上写法表示接受111这个ip的所有请求!

2.修改/etc/hosts.deny文件
此文件是拒绝服务列表,文件内容如下:

sshd:all:deny

sshd:all:deny表示拒绝了所有sshd远程连接。如上 :deny 可以省略。
注:当hosts.allow和 host.deny相冲突时,以hosts.allow设置为准。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值