Jump to content

Recommended Posts

Posted

Имеется VPN-сервер на UNIX FreeBSD (pptpd).

Как узнать с какого локального ай-пи адреса установлено подключение конкретного пользователя? Т.е. как узнать соответствие локального IP и login, плюс желательно еще и время подключения?

Смотрел логи, так там все запутано. В логах ppp кое-где мелькают ай-пи, а в логах pppd мелькаю логины, но нету явного соответствия что такой-то юзер с такого-то адреса тогда-то был подлючен.

Подскажите, выручите! Так как есть подозрения что народ использует чужие аккаунты. Хочу проконтролировать.[/b]

Posted

У нас для этого специальный скрипт запуска 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)

Posted
У нас для этого специальный скрипт запуска 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 указан)

Posted

Еще можно так: в /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 придется наверно переделать

Posted
IbZ,

 

Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать.

Спасибо.

 

а не проще ли указать в /etc/syslog.conf

!pptpd

*.*                                             /var/log/pptpd.log

Posted
А у нас задалбало его патчить(а то обновиться еще по крону случайно :) ) еще на предмет количества тунелей (я сам не в курсах что да как, этим другой чел занимался)

 

Вы наверно MAKEDEV имеете в виду для создания туннелей > 4 в freebsd < 5 версии?

Posted
Нет, в 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

Posted
IbZ,

 

Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать.

Спасибо.

 

а не проще ли указать в /etc/syslog.conf

!pptpd

*.*                                             /var/log/pptpd.log

 

Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу:

время установки соединения - login - IP

Posted
Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу:

время установки соединения - login - IP

Логина так у сожалению нет (у меня этим радиус занимается), но IP и время связи есть.

Posted
IbZ,

 

Это уже интереснее. Смысл в целом понятен. Попробую что-то похожее под фрей сделать.

Спасибо.

 

а не проще ли указать в /etc/syslog.conf

!pptpd

*.*                                             /var/log/pptpd.log

 

Есть такое и толку. Я ж пишу, что мне нужно явно видеть следующую инфу:

время установки соединения - login - IP

 

Ну так почитать маны к pppd или что там у вас

pptpd толком ничего о вашел логине не знает. Это прерогатива pppd.

 

Если уж на то пошло взять указаннывй выше IbZом скрипт и переделать так как вам нужно(выкинуть поиск мака например если нафиг не надо. Хотя я бы оставил) и сделать чтобы он вызывался при при авторизации пользователя. (у меня такие скрипты лежат в /etc/ppp/auth-up.d).

Я делал скрипты для модемного сервака, так там была заточка что на один модем мог звонить только я, а остальные отваливались как раз подобным скриптом (где-то валяется в архивах)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.