qmail user not found | password fail 接続試行(任意回数)以上で自動遮断するスクリプト作ってみた
qmail user not found 接続試行(任意回数)以上で自動遮断するスクリプト作ってみた
Source
#!/usr/bin/env bashexport PATH=$PATH:/sbin
# 試行回数
attemptFreq="10"
attemptFreqTwo="2"
list="$(cat /var/log/maillog | grep "vpopmail user not found" | awk '{ print $11 }' | sed "s/:/ /" | awk '{ print $2 }' | sort -rn | uniq -c | sort -rn)"
listTwo="$(grep "password fail" /var/log/maillog | sed 's/:/ /g' | awk '{ print $12 }' | sort | uniq -c | sort -rn | head)"
ipList=($(echo"$list" | awk '{ print $2 }'))
ipSumList=($(echo"$list" | awk '{ print $1 }'))
ipList+=($(echo"$listTwo" | awk '{ print $2 }'))
ipSumList+=($(echo"$listTwo" | awk '{ print $1 }'))
iptablesDropList="$(iptables -L -n --line-number | grep "DROP" | egrep -v "0.0.0.0\/0 0.0.0.0\/0" | awk '{ print $5 }' | grep -o -E "([0-9]{1,3}.){2}[0-9]{1,3}" | sort | uniq -c | sort -rn)"
iptablesDropListIp=($(echo "$iptablesDropList" | awk '{ print $2 }'))
iptablesDropListSum=($(echo "$iptablesDropList" | awk '{ print $1 }'))
# debug
#echo "${ipList[@]}"
#echo "${ipSumList[@]}"
if [ "${#ipList[@]}" -eq "${#ipSumList[@]}" ]; then
for(( i = 0; i < "${#ipList[@]}"; i++ )) {
if [ "${ipSumList[i]}" -ge "$attemptFreq" ]; then
if [ "$(iptables -L -n | grep -c "${ipList[i]}")" -eq "0" ]; then
iptables -I INPUT -s "${ipList[i]}"/32 -j DROP
/etc/init.d/iptables save
/etc/init.d/iptables reload
if [ "$(iptables -L -n | grep -c "${ipList[i]}")" -eq "1" ]; then
echo "試行回数:$attemptFreq以上の${ipList[i]}を「iptablesの拒否ルールとして追加しました。」 $(date +%Y%m%d_%H:%M)"
fi
fi
fi
}
fi
if [ "${#iptablesDropListIp[@]}" -eq "${#iptablesDropListSum[@]}" ]; then
for(( i = 0; i < "${#iptablesDropListIp[@]}"; i++ )) {
if [ "${iptablesDropListSum[i]}" -ge "$attemptFreqTwo" ]; then
if [ "$(iptables -L -n | grep -c "${iptablesDropListIp[i]}.0/24")" -eq "0" ]; then
iptables -I INPUT -s "${iptablesDropListIp[i]}.0/24" -j DROP
/etc/init.d/iptables save
/etc/init.d/iptables reload
if [ "$(iptables -L -n | grep -c "${iptablesDropListIp[i]}.0/24")" -eq "1" ]; then
echo "試行回数:$attemptFreqTwo以上の${iptablesDropListIp[i]}を「iptablesの拒否ルールとしてレンジ指定で追加しました。」"
fi
fi
fi
}
fi
Result
iptables: ファイアウォールのルールを /etc/sysconfig/iptables に保存中: [ OK ]
iptables: Trying to reload firewall rules: [ OK ]
試行回数:10以上の{XXX.XXX.XXX.XXX}を「iptablesの拒否ルールとして追加しました。」
試行回数:2以上の{XXX.XXX.XXX}を「iptablesの拒否ルールとしてレンジ指定で追加しました。」
iptables: ファイアウォールのルールを /etc/sysconfig/iptables に保存中: [ OK ]
iptables: Trying to reload firewall rules: [ OK ]
試行回数:2以上の{XXX.XXX.XXX}を「iptablesの拒否ルールとしてレンジ指定で追加しました。」
iptables: Trying to reload firewall rules: [ OK ]
試行回数:10以上の{XXX.XXX.XXX.XXX}を「iptablesの拒否ルールとして追加しました。」
試行回数:2以上の{XXX.XXX.XXX}を「iptablesの拒否ルールとしてレンジ指定で追加しました。」
iptables: ファイアウォールのルールを /etc/sysconfig/iptables に保存中: [ OK ]
iptables: Trying to reload firewall rules: [ OK ]
試行回数:2以上の{XXX.XXX.XXX}を「iptablesの拒否ルールとしてレンジ指定で追加しました。」
ディスカッション
コメント一覧
まだ、コメントがありません