Сетевик Posted September 6, 2005 Posted September 6, 2005 Имеется VPN-сервер на UNIX FreeBSD (pptpd). Как узнать с какого локального ай-пи адреса установлено подключение конкретного пользователя? Т.е. как узнать соответствие локального IP и login, плюс желательно еще и время подключения? Смотрел логи, так там все запутано. В логах ppp кое-где мелькают ай-пи, а в логах pppd мелькаю логины, но нету явного соответствия что такой-то юзер с такого-то адреса тогда-то был подлючен. Подскажите, выручите! Так как есть подозрения что народ использует чужие аккаунты. Хочу проконтролировать.[/b] Вставить ник Quote
ShumBor Posted September 7, 2005 Posted September 7, 2005 У нас для этого специальный скрипт запуска pppd висит (полная связка PoPТoP+pppd+freeradius. Debian 3.1) В конфиге pptpd.conf ppp /usr/sbin/call-pppd сам call-pppd #!/bin/sh PPPD=/usr/sbin/pppd [ -x $PPPD ] || exit 1 export call_from="$7" if [ "$call_from" != "" ]; then export ARP=`arp $call_from | tail -1 | awk {'print $3" - "$5'}` if [ "$ARP" != "-- - entry" ]; then exec $PPPD remotenumber "$call_from - $ARP" $* else exec $PPPD remotenumber "$call_from" $* fi else exec $PPPD $* fi А дальше уже в логнах радиуса все видно: Wed Sep 7 11:00:58 2005 : Auth: Login OK: [*] (from client pptp-gw.*.*.ru port 91 cli 10.10.1.197) Wed Sep 7 11:01:27 2005 : Auth: Login OK: [*] (from client pptp-gw.*.*.ru port 92 cli 10.10.13.62 - 00:04:61:58:A3:5F - eth4.2) Вставить ник Quote
Сетевик Posted September 7, 2005 Author Posted September 7, 2005 Спасибо. Я так понял, что без Radius никак? Вставить ник Quote
UglyAdmin Posted September 7, 2005 Posted September 7, 2005 У нас для этого специальный скрипт запуска pppd висит Элегантно, а я PoPToP патчил :) Вставить ник Quote
ShumBor Posted September 7, 2005 Posted September 7, 2005 У нас для этого специальный скрипт запуска pppd висит Элегантно, а я PoPToP патчил :) А у нас задалбало его патчить(а то обновиться еще по крону случайно :) ) еще на предмет количества тунелей (я сам не в курсах что да как, этим другой чел занимался), поэтому поставили запуск через inetd Вроде бы все пашет нормально. (Правда при этом походу дела у всех клиентов один номер pptp сессии в протоколе и сервак разруливает по ип клиента. Досконально сказать не могу :( Не копался, пока мне не до этого. Главное работает :) ) строка в inetd.conf pptpctrl stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pptpctrl 0 0 1 /etc/ppp/pptpd-options 0 1 10.10.10.254 0 1 /usr/sbin/call-pppd 0 0 --buffer-- Спасибо.Я так понял, что без Radius никак? У нас уже стоял радиус так что проблем с этим небыло. Впринципе у нас еще идет проверка какого типа пришел пользователь (Dialap,PPTP,voice,System, ftp. У каждого пользователя Huntgroup-Name указан) Вставить ник Quote
IbZ Posted September 12, 2005 Posted September 12, 2005 Еще можно так: в /etc/ppp (ну или там где у вас он должен быть) создается исполняемый файл auth-up ------------- cut -------------- #$1 - pppX; $2 - username #Время d=`date`; #получаем пид процесса clpid=`cat /var/run/$1.pid` #У меня список процессов выглядит так #29598 pptpd [172.20.8.44:C000 - 2C80] #29599 pppd ... #30831 pptpd [172.20.8.32:C000 - 2D00] #30831 pppd ... # потому делаю перебор по всем родительским процессам пока не нахожу правильный пид дочернего pppd for ppid in `ps ax | grep "pptpd [" | gawk ' { print $1 } '`; do pid=`ps --ppid $ppid --no-headers | gawk ' { print $1 } '` if [ $pid = ${clpid} ]; then ip=`ps --no-headers $ppid| gawk '{ print $6 }' | gawk -F [ '{ print $2 }' | gawk -F : '{ print $1 }'` #Если впн-сервер служит еще и рутером - значит в его арп-таблице есть мак-адрес клиента mac=`/sbin/arp | grep "$ip " | gawk ' { print $3 } '` #Но у меня до впн-сервера у клиентов еще стоит 3ком 3500 в качестве рутера mac2=`/usr/local/bin/snmpwalk -v1 -c SNMP_COMMUNITY 3com3500_router1_ip .1.3.6.1.2.1.4.22.1.2 | grep "$ip " | gawk ' { print $2 } '` mac3=`/usr/local/bin/snmpwalk -v1 -c SNMP_COMMUNITY 3com3500_router2_ip .1.3.6.1.2.1.4.22.1.2 | grep "$ip " | gawk ' { print $2 } '` fi done echo $d, $2, $ip, $mac $mac2 $mac3 >>/var/log/auth-up.log Должно работать и без радиуса. Но у меня линукс - для freebsd придется наверно переделать Вставить ник Quote
Сетевик Posted September 12, 2005 Author Posted September 12, 2005 IbZ, Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать. Спасибо. Вставить ник Quote
Rewop Posted September 13, 2005 Posted September 13, 2005 IbZ, Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать. Спасибо. а не проще ли указать в /etc/syslog.conf !pptpd *.* /var/log/pptpd.log Вставить ник Quote
Rewop Posted September 13, 2005 Posted September 13, 2005 А у нас задалбало его патчить(а то обновиться еще по крону случайно :) ) еще на предмет количества тунелей (я сам не в курсах что да как, этим другой чел занимался) Вы наверно MAKEDEV имеете в виду для создания туннелей > 4 в freebsd < 5 версии? Вставить ник Quote
UglyAdmin Posted September 13, 2005 Posted September 13, 2005 Нет, в PoPToP по умолчанию не более 100 туннелей сделано. Уж не знаю из каких соображений. Вставить ник Quote
Rewop Posted September 13, 2005 Posted September 13, 2005 Нет, в PoPToP по умолчанию не более 100 туннелей сделано. Уж не знаю из каких соображений. Она ли не решается сменой соответсвующей переменной в исходниках перед компиляцией? defaults.h /* Default configuration values, mostly configurable */ #if !defined(PPPD_IP_ALLOC) #define MAX_CONNECTIONS 100 #define DEFAULT_LOCAL_IP_LIST "192.168.0.1-100" #define DEFAULT_REMOTE_IP_LIST "192.168.1.1-100" #endif Вставить ник Quote
UglyAdmin Posted September 14, 2005 Posted September 14, 2005 Решается, но вопрос был о том, что каждую новую версию надо не забыть пропатчить на этот предмет. Вставить ник Quote
Сетевик Posted September 14, 2005 Author Posted September 14, 2005 IbZ, Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать. Спасибо. а не проще ли указать в /etc/syslog.conf !pptpd *.* /var/log/pptpd.log Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу: время установки соединения - login - IP Вставить ник Quote
Rewop Posted September 14, 2005 Posted September 14, 2005 Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу:время установки соединения - login - IP Логина так у сожалению нет (у меня этим радиус занимается), но IP и время связи есть. Вставить ник Quote
ShumBor Posted September 14, 2005 Posted September 14, 2005 IbZ, Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать. Спасибо. а не проще ли указать в /etc/syslog.conf !pptpd *.* /var/log/pptpd.log Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу: время установки соединения - login - IP Ну так почитать маны к pppd или что там у вас pptpd толком ничего о вашел логине не знает. Это прерогатива pppd. Если уж на то пошло взять указаннывй выше IbZом скрипт и переделать так как вам нужно(выкинуть поиск мака например если нафиг не надо. Хотя я бы оставил) и сделать чтобы он вызывался при при авторизации пользователя. (у меня такие скрипты лежат в /etc/ppp/auth-up.d). Я делал скрипты для модемного сервака, так там была заточка что на один модем мог звонить только я, а остальные отваливались как раз подобным скриптом (где-то валяется в архивах) Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.