NetUP 4 + Freeradius

Вопросы по UTM 3.0 и UTM 4.0 (поддержка прекращена)
Закрыто
maksim
Сообщения: 17
Зарегистрирован: Вт апр 05, 2005 11:03
Откуда: Красноярск

NetUP 4 + Freeradius

Сообщение maksim »

Есть проблема.
Фрирадиус не проверяет соответствие локального айпи логину и паролю.
Т.е. любому пользователю дается внешний IP после авторизации если правильно введен логин пароль. Получается нет необходимости даже менять MAC|IP. В логи нигде не пишется с какого IP прошла авторизация. Как можно это победить ?
А а NetUP Radius проверяет ?

Skylord
Сообщения: 263
Зарегистрирован: Пт фев 04, 2005 11:33

Re: NetUP 4 + Freeradius

Сообщение Skylord »

maksim писал(а):Есть проблема.
Фрирадиус не проверяет соответствие локального айпи логину и паролю.
Т.е. любому пользователю дается внешний IP после авторизации если правильно введен логин пароль. Получается нет необходимости даже менять MAC|IP. В логи нигде не пишется с какого IP прошла авторизация. Как можно это победить ?
А а NetUP Radius проверяет ?
Победить это можно написанием внешнего скрипта, который запускается при создании туннеля и делает все, что тебе нужно.

maksim
Сообщения: 17
Зарегистрирован: Вт апр 05, 2005 11:03
Откуда: Красноярск

Сообщение maksim »

Каким образом можно узнать ?
Я так и не нашел решения. Как посмотреть с какого локального IP установлен туннель? (FreeBSD 5.2.1 + UTM4 + poptop + Freeradius)

Skylord
Сообщения: 263
Зарегистрирован: Пт фев 04, 2005 11:33

Сообщение Skylord »

maksim писал(а):Каким образом можно узнать ?
Я так и не нашел решения. Как посмотреть с какого локального IP установлен туннель? (FreeBSD 5.2.1 + UTM4 + poptop + Freeradius)
Вот примерный скрипт. Ужасно примитивный, но пашет уже около года нормально. За образец брался аналогичный скрипт для УТМ5 со старого форума.
Запускается из ppp.linkup:

Код: Выделить всё

pptp:
 !bg /etc/ppp/check-pptp-addr.sh PROCESSID SOCKNAME USER
Требует наличия в конфиге ppp нормальных сокетов, что-то типа:

Код: Выделить всё

set server /tmp/vpnuser%d "" 0177
Сам скрипт check-pptp-addr.sh:

Код: Выделить всё

#!/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 &#91; -z ! $OK1 &#93;; 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&#91;$PPPD_PID&#93;&#58;  $LOGIN from $IP"
if &#91; -z $OK &#93;; then
 pppctl $2 close
 echo $HEAD rejected >> /var/log/vpn.log;
else
 echo $HEAD accepted >> /var/log/vpn.log;
fi
Вносим ИП, с которых может устанавливаться туннель в свойство "БИК" пользователя (сие свойство используется крайне редко, так что вполне нормально...). Так сделано для гибкости настроек, но можно достаточно легко переделать, чтобы сразу брались прописанные адреса пользователя.
Если адреса, с которого устанавливается соединение нет в базе, то корректно (для того, чтобы нормально сработал аккаунтинг на радиусе) завершаем сессию и пишем в лог адрес, с которого была попытка.

maksim
Сообщения: 17
Зарегистрирован: Вт апр 05, 2005 11:03
Откуда: Красноярск

Сообщение maksim »

Skylord писал(а): Вот примерный скрипт. Ужасно примитивный, но пашет уже около года нормально...
Спасибо. То что нужно.[/code]

Закрыто