Написал скрипт для добавления в бан по МАК адресу, если его IP выше заданного диапазона.
Добаил защиту от повторного бана (если соединение еще не оборвалось)
#!/bin/bash
iface=wlan0 #интерфейс, который необходимо проверять
TIME=60 #Время ожидания между проверками
IP=192.168.1. #Неизменные цифры IP адреса (только для сети класаа С)
frIP=3 #Последняя цифра "Своих" IP адресов. Все адреса с большим числом будут заносится в БАН
file=/home/weremax/banlist #путь к файлу, где указываются адреса, внесенные в БАН
count=3 #колличество проверочных пакетов
UID_ROOT=0 # UID пользователя "ROOT"
###############################################################################################
# Проверка запущен ли скрипт с правами суперпользователя
if [ "$UID" -ne "$UID_ROOT" ]; then
echo "Для работы требуются права root"
sleep 10
exit 1
fi
# Начало бесконечного цикла
while true
do
# Начальные данные
N=2
i=0
# Начало цикла проверки всех подключенных к интерфейсу клиентов
while [ $i -eq 0 ]
do
list=(` arp -i $iface -n | sed $N'!D' | cut -c11-53`) # Создание массива об очередном юзере
if [ -n "$list" ]; then # Проверка существования данных об пользователе
echo "Клиент номер: $[$N-1]"
echo "IP адрес: $IP${list[0]}"
echo "MAC адрес: ${list[2]}"
if (( ${list[0]} > $frIP )); then # проверка принадлежности пользователя к "своим"
# Проверка внесен ли пользователь в БАН, если нет, то вносим
result=$(ping -c ${count} $IP${list[0]} | tail -2 | head -1 | awk '{print $4}')
if [ $result -eq 0 ]; then
echo "Обнаружен чужак!!! Его MAC адрес (${list[2]}) уже записан в БАН iptables."
else echo "Обнаружен чужак!!! Его MAC адрес (${list[2]}) будет записан в БАН iptables."
echo `date` >> $file
echo ${list[2]} >> $file
iptables -A INPUT -m mac --mac-source ${list[2]} -j DROP
fi
else echo "Данный клиент является "Своим""
fi
N=$[$N+1] # Переходим к следующему пользователю текущей проверки
else echo "Проверили всех"
i=1
fi
done
echo "Выжидаем время: $TIME секунд(ы)"
sleep $TIME # Конец цикла текущей проверки
done
Кстати.. Проблему постоянных дисконнектов и ошибок в логах решил с помощью ХРшных драйверов с родного диска... Теперь все работает, как часы.
Пользователь решил продолжить мысль 01 Июля 2011, 18:53:50:
victor00000, огромное спасибо за помошь!!!!!!