第十一周作业

1、编写脚本/root/bin/checkip.sh,每5分钟检查一次,如果发现通过ssh登录失败 次数超过10次,自动将此远程IP放入Tcp Wrapper的黑名单中予以禁止防问。

  1. 若只是5分钟去统计一次总的连接失败次数,用以下脚本
[root@centos7 ~]# cat checkip2.sh 
#!/bin/bash

while true;do
  awk '/sshd.*Failed password/{
     ip[$(NF-3)]++
  }END{
     for(i in ip){
       if(ip[i]>=10){   #大于10次的,记录到TCP Wrapper黑名单中
         system("echo sshd:"i" >> /etc/hosts.deny")
       }
     }
  }' /var/log/secure

  sleep 300 
done
  1. 若是5分钟去统计一次在5分钟之内的连接失败次数,可用以下脚本
[root@centos7 ~]# cat checkip.sh 
#!/bin/bash

while true;do     #循环
   month=$(date +%b)    #获取当前月份,如Jan
   day=$(date +%-d)       #获取当前日,如7
   hour=$(date +%H)      #获取当前小时,如11 
   minute=$(date +%M)  #获取当前分钟

   awk '/sshd.*Failed password/{       #awk取失败连接的行
     if("'$month'" == $1 && "'$day'" == $2){   #只处理当月当天的数据
        split($3,array,":")         #将日志中的时间分割 如11:40:50
        if("'$hour'" == array[1]){      #在当前小时内的数据
           if("'$minute'" - array[2] < 5){    #5分钟内的数据
              ip[$(NF-3)]++;         #统计
           }
        }else{     #不在当前小时内的数据,主要是当前小时大于日志记录的时间
           if("'$minute'" + 60 - array[2] < 5){  #跨小时了但在5分钟之内,如从11:59到12:03
              ip[$(NF-3)]++;
           }
        }
     }
   }END{
     for(i in ip){
       if(ip[i]>=10){   #大于10次的,记录到TCP Wrapper黑名单中
         system("echo sshd:"i" >> /etc/hosts.deny")
       }
     }
   }'   /var/log/secure
   
   sleep 300  #每5钟循环一次

done

2、配置magedu用户的sudo权限,允许magedu用户拥有root权限

编辑sudoers文件vim  /etc/sudoers,添加magedu  ALL=(ALL)  ALL 行配置
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
magedu  ALL=(ALL)       ALL

你可能感兴趣的:(第十一周作业)