第十一周作业—N42-虚怀若谷
一、编写脚本/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("grep "i" /etc/hosts.deny || echo sshd:"i" >> /etc/hosts.deny") } } }' /var/log/secure sleep 300 done
2. 若是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
二、配置magedu用户的sudo权限,允许magedu用户拥有root权限?
[root@centos7 ~]# visudo
#然后添加以下内容即可
magedu ALL=(All) ALL
浙公网安备 33010602011771号