收藏文章 楼主

设置ssh登录失败多次封禁该ip-防暴力破解

版块:linux   类型:普通   作者:小绿叶技术博客   查看:954   回复:4   获赞:22   时间:2021-01-13 09:30:27

# 编写脚本    vi ipssh.sh 

#! /bin/bash

cat /var/log/secure | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $1"="$2;}' > /usr/local/bin/black.list

# 查看文件 

# awk '/Failed/{print $0}'  字段处理,符号 /   / 指定包含 Failed 单词的行,打印 $0 所有列

# 此处是指定 Failed [fei l d] 失败单词的行,打印 NF-3 指定列倒数第4列,从0开始;  

# sort 按名称排序 ; uniq -c  计算重复的行个数

# awk '{print $1  $2 }'  打印 第1 和第 2 列数据。因为 uniq -c 计算后生成一列

# 存入文件



for i in `cat  /usr/local/bin/black.list`

# for 循环条件是:循环完(cat 查看 文件里的有行,个数和IP)


do # 开始循环

  IP=`echo $i |awk -F"=" '{print $2}'`

# ip的值为 :打印行 awk -F"=" 等号位分隔符,选择 第2列 是 ip

  NUM=`echo $i|awk -F= '{print $1}'`

# NUM 次数变量的值是: 打印行中 第1列

  if [ ${NUM} -gt 5 ]; then

# 判断 次数大于 5 就开始  (lt小于)

    grep $IP /etc/hosts.deny > /dev/null

# 文件 hosts.deny  记录的是拒绝IP访问

# 过滤IP 的行 到空洞,等于删除

    if [ $? -gt 0 ];then

# if $? 判断上一条命令执行城 大于0 次就开始

      echo "sshd:$IP:deny" >> /etc/hosts.deny

# 将规则写入 禁止 IP 访问配置文件

    fi

  fi

done



sed -i "/eisc$IP/d" /etc/crontab # 先删除计划任务,重新写

echo "

*/5 * * * * sh ~/ipssh.sh        # eisc$IP

" > /etc/crontab

# crontab -e 设置定时任务5s一次,指定脚本文件

echo "被禁止访问的IP 为:"

grep sshd  /etc/hosts.deny 

本文章最后由 admin2024-07-17 15:38 编辑

有些梦虽然遥不可及,但并不是不可能实现。 
回复列表
默认   热门   正序   倒序

回复:设置ssh登录失败多次封禁该ip-防暴力破解

Powered by ddoss.cn 12.0

©2015 - 2024 ddoss

头像

用户名:

粉丝数:

签名:

资料 关注 好友 消息