pppoe Dynamic filter

Here you can post your feature requests and suggestions
Post Reply
nik247
Posts: 108
Joined: 11 Oct 2014, 15:57

pppoe Dynamic filter

Post by nik247 »

На текущий момент в accel-ppp используется статический pppoe filter, который загружается с файла или добаляется/удаляется руками с консоли.
Есть куча попыток автооризации, на который биллинг дает Reject - разные случаи почему.
Во такие MAC хотелось бы загонять на время в deny pppoe DYNAMIC filter (получает Calling-ID X Reject за Y секунд -> заблокировать на Z секунд.)
Или по другим тоже критериям можно.
Идея какая - разгрузить RADIUS от бестолковых запросов.
Встречаются и такие роутеры, которым сносит крышу и они просто все время ломятся...
И это определяется руками - ищется такой МАС и заносится в фильтр.
Хотелось бы автоматизировать процесс.

Также бы хотелось увидеть счетчики блокировок и остаток времени для разбокировки по КАЖДОМУ mac.
Сейчас:

Code: Select all

#accel-cmd pppoe mac-filter show
filter type: deny
00:0c:42:84:42:5b
00:15:6d:ea:a8:1a
00:15:6d:ee:9e:4f
00:15:6d:ec:d3:0a
d4:ca:6d:45:8f:f0
00:15:6d:ea:a8:81
Хотелось бы:

Code: Select all

#accel-cmd pppoe mac-filter show
filter type: deny
00:0c:42:84:42:5b - 120 - 30
00:15:6d:ea:a8:1a
00:15:6d:ee:9e:4f - 10123 - 300
00:15:6d:ec:d3:0a
d4:ca:6d:45:8f:f0
00:15:6d:ea:a8:81
myth
Posts: 6
Joined: 14 Jan 2016, 12:01

Re: pppoe Dynamic filter

Post by myth »

Прямо с языка снял. Только около часа назад топик создал)
taf_321
Posts: 19
Joined: 10 Sep 2015, 05:25

Re: pppoe Dynamic filter

Post by taf_321 »

Для этой задачи идеально подходит fail2ban.
myth
Posts: 6
Joined: 14 Jan 2016, 12:01

Re: pppoe Dynamic filter

Post by myth »

На PPPoE?
myth
Posts: 6
Joined: 14 Jan 2016, 12:01

Re: pppoe Dynamic filter

Post by myth »

А если насов несколько?
myth
Posts: 6
Joined: 14 Jan 2016, 12:01

Re: pppoe Dynamic filter

Post by myth »

Временно решил проблему так. Этот скрипт забирает ошибки подключения из база Абиллса.

Code: Select all

#!/bin/sh
data=`date +%F`
hour=`date +%H`
user="xxxxx"
pass="xxxxxxx"
db="abills"
sql="SELECT * FROM errors_log WHERE date > '$data $hour:00:00' AND log_type =4"
RES=`mysql -h127.0.0.1 -u $user -p$pass  $db -e "$sql"`
printf "$RES"  |grep REJECT |cut -c 94-110 |uniq -dc|uniq >/var/www/BAN
printf "$RES"  |grep Disable |grep CID: |cut -c 55-80 | sed 's/^[ \t]*//;s/[ \t]*$//' | sed 's/^[CID: \t]*//;s/[ \t]*$//' |sort|uniq -dc >>/var/www/BAN
cat /var/www/BAN |cut -c 9-25 >/var/www/filter.txt
cat /var/www/filter.txt
На другом конце

Code: Select all

#!/bin/sh
wget 192.168.35.2/filter.txt -O /etc/filter.txt
cat /etc/filter.txt >/etc/accel-filter.txt
/usr/bin/expect -c '
log_user 0
   # Открываем telnet сессию на удалённом сервере, и ждем запроса имени пользователя.
   spawn telnet 127.0.0.1 2000
   # Посылаем пароль.
   expect "Password:"
   # Посылаем пароль и ждем приглашения ввода командного интерпретатора.
   send "123\r"
   expect "accel-ppp"
   # Посылаем команду, и ждем следующего приглашения ввода командного интерпретатора.
   send "pppoe mac-filter reload\r"
   expect "accel-ppp"
#   send "pppoe mac-filter show\r"
#   expect "accel-ppp"
# Завершаем сессию telnet, и ждем символа конца строки (eof).
   send "exit\r"
   expect eof
'
#echo "11:22:33:44:55:66" >/etc/accel-filter.txt
exit 0
Если кто-нибудь оптимизирует, буду рад). Запуск по крону раз в час. На соседний сервер закачиваю wget ом. Понимаю, что костыль, но лучше, чем никак.
Post Reply