Быстрый бан ip через ipfw
25 апреля 2009, 20:08С простой проверкой на валидность введенного ip. Переменные: oif - имя интефейса, rule - номер правила, fwcmd - путь к ipfw
banip.sh :
#!/bin/sh
fwcmd="/sbin/ipfw"
oif="bce0"
rule=804
if [ -z $1 ]; then
echo "Enter ip to ban!"
exit
elif [ -n $1 ]; then
RESULT=$(echo "$1" | perl -e '$i=<>;if($i!~/^d+.d+.d+.d+$/){print"0";}else{($a,$b,$c,$d)=$i=~/^(d+).(d+).(d+).(d+)$/;if($a>255or$b>255or$c>255or$d>255){print"0";}else{print"1";}}')
if [ $RESULT -eq 0 ]; then
echo "Bad IP address: $1"
exit
else
echo "Deny tcp from $1 to any via ${oif}"
$fwcmd add ${rule} deny tcp from $1 to any via ${oif}
fi
fi