天天看点

脚本实现extmail多次登录失败拒绝登录

#!/bin/bash

#赵云,2012年2月3日

#实现如果用户使用extmail邮件系通如果密码连续出脚本认为是恶意行为,采用iptables拒绝访问ip地址,或则采用禁用帐号的方式。 

#这就是一个想法,差不多可以改改用啦,比较简单,如果能用的话,自己完善一下。。

#手动添加开机启动。

#设置拒绝方式, 1 iptables拒绝访问IP地址,  2 禁用登录帐号

mode=2

#设置输错几次拒绝的数量

number=10

#配置检查间隔时间,多长时间检查一次,单位秒。

checktime=20

#脚本执行部分。

while true

do

maillog=` grep badlogin /var/log/maillog |awk '{print $6}'  |awk -F'=<' '{print $2}' |awk -F'>,' '{print $1}'|uniq -c |awk  -vnumber="$number" '$1>number {print $2}' |wc -l `

#拒绝IP地址方式

if [ $mode -eq 1 ] ; then

  grep badlogin /var/log/maillog  | awk '{print $7} '|awk -F= '{print $2}' |awk -F, '{print $1}' |uniq -c |awk -vnumber="$number" '$1>number {print "iptables -A INPUT -p tcp -s " $2 " --dport 80 -j DROP"}'  |bash

fi

#禁用帐号方式

if [ $mode -eq 2 ] ; then

    rows=` grep badlogin /var/log/maillog |awk '{print $6}'  |awk -F'=<' '{print $2}' |awk -F'>,' '{print $1}'|uniq -c |awk -vnumber="$number" '$1>number  {print $2}' |wc -l `

  for ((i=1;i<=$rows;i++))

  do

    user=` grep badlogin /var/log/maillog |awk '{print $6}'  |awk -F'=<' '{print $2}' |awk -F'>,' '{print $1}'|uniq -c |awk -vnumber="$number" '$1>number {print $2}' | head -n $i |tail -n1`

    mysql -uroot -e " update extmail.mailbox set active=0 where username='$user' ;"

   done

 if [ $maillog -gt 0 ] ; then

   cat /var/log/maillog >>/var/log/maillog.bak

   >/var/log/maillog

 fi

   sleep $checktime

done

测试,连续输错大于10次的密码/。。

脚本实现extmail多次登录失败拒绝登录
脚本实现extmail多次登录失败拒绝登录

继续阅读