Есть проблема.
Фрирадиус не проверяет соответствие локального айпи логину и паролю.
Т.е. любому пользователю дается внешний IP после авторизации если правильно введен логин пароль. Получается нет необходимости даже менять MAC|IP. В логи нигде не пишется с какого IP прошла авторизация. Как можно это победить ?
А а NetUP Radius проверяет ?
NetUP 4 + Freeradius
Re: NetUP 4 + Freeradius
Победить это можно написанием внешнего скрипта, который запускается при создании туннеля и делает все, что тебе нужно.maksim писал(а):Есть проблема.
Фрирадиус не проверяет соответствие локального айпи логину и паролю.
Т.е. любому пользователю дается внешний IP после авторизации если правильно введен логин пароль. Получается нет необходимости даже менять MAC|IP. В логи нигде не пишется с какого IP прошла авторизация. Как можно это победить ?
А а NetUP Radius проверяет ?
Вот примерный скрипт. Ужасно примитивный, но пашет уже около года нормально. За образец брался аналогичный скрипт для УТМ5 со старого форума.maksim писал(а):Каким образом можно узнать ?
Я так и не нашел решения. Как посмотреть с какого локального IP установлен туннель? (FreeBSD 5.2.1 + UTM4 + poptop + Freeradius)
Запускается из ppp.linkup:
Код: Выделить всё
pptp:
!bg /etc/ppp/check-pptp-addr.sh PROCESSID SOCKNAME USER
Код: Выделить всё
set server /tmp/vpnuser%d "" 0177
Код: Выделить всё
#!/bin/sh
# $1 - PPP pid, $2 - user IP, $3 - username
LOGIN=$3
PPPD_PID=$1
PPTP_PID=`ps x -o "pid ppid" | grep $1`
PPTP_PID=`expr "$PPTP_PID" : '[ ]*[0-9]*[ ]*\([0-9]*\)'`
IP=`ps x -o "command" -p$PPTP_PID | grep -v COMMAND | sed 's/^.*\[//' | sed 's/:.*//'`
DBNAME="UTM"
DBUSER="<имя_пользователя_базы>"
DBPASS="<пароль>"
SQL1="SELECT bank_bic FROM users WHERE login='$3'"
INFO1=`/usr/local/bin/mysql -u $DBUSER $DBNAME -p$DBPASS -B -e "$SQL1" | grep -v bank_bic`
OK1=`echo $INFO1|grep \.`
if [ -z ! $OK1 ]; then
SQL="SELECT login, bank_bic FROM users WHERE login='$3'"
INFO=`/usr/local/bin/mysql -u $DBUSER $DBNAME -p$DBPASS -B -e "$SQL" | grep -v bank_bic`
OK=`echo $INFO|grep $IP`
else
OK='OK'
fi
HEAD="`date +"%b %d %T"` `hostname -s` vpn[$PPPD_PID]: $LOGIN from $IP"
if [ -z $OK ]; then
pppctl $2 close
echo $HEAD rejected >> /var/log/vpn.log;
else
echo $HEAD accepted >> /var/log/vpn.log;
fi
Если адреса, с которого устанавливается соединение нет в базе, то корректно (для того, чтобы нормально сработал аккаунтинг на радиусе) завершаем сессию и пишем в лог адрес, с которого была попытка.