The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Настройки freeradius для разграничения доступа клиентов"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 02-Июл-09, 14:22 
Итак есть система freeradius + mysql + pptp. Все отлично работает. Но появилась необходимость сделать так, чтобы некоторые клиенты могли подключаться только с из локальной сети, а некоторые с любого места. Можно ли сделать таките ограничения средствами радиуса? Если да, то в какую сторону смотреть?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Grey (ok) on 02-Июл-09, 14:51 
>Итак есть система freeradius + mysql + pptp. Все отлично работает. Но
>появилась необходимость сделать так, чтобы некоторые клиенты могли подключаться только с
>из локальной сети, а некоторые с любого места. Можно ли сделать
>таките ограничения средствами радиуса? Если да, то в какую сторону смотреть?
>

Calling-Station-Id в радиусе... IP станции откуда можно логину соединяться ...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 02-Июл-09, 15:56 
>>Итак есть система freeradius + mysql + pptp. Все отлично работает. Но
>>появилась необходимость сделать так, чтобы некоторые клиенты могли подключаться только с
>>из локальной сети, а некоторые с любого места. Можно ли сделать
>>таките ограничения средствами радиуса? Если да, то в какую сторону смотреть?
>>
>
>Calling-Station-Id в радиусе... IP станции откуда можно логину соединяться ...

Этот параметр должен быть в таблице radreply?

insert into radreply set UserName = 'system', Attribute='Calling-Station-Id', op = ':=', Value = '192.168.127.60';

т.е. таким образом я разрешу заходить пользователю system только с ip 192.168.127.60?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Grey (ok) on 02-Июл-09, 15:58 
>[оверквотинг удален]
>>
>>Calling-Station-Id в радиусе... IP станции откуда можно логину соединяться ...
>
>Этот параметр должен быть в таблице radreply?
>
>insert into radreply set UserName = 'system', Attribute='Calling-Station-Id', op = ':=', Value
>= '192.168.127.60';
>
>т.е. таким образом я разрешу заходить пользователю system только с ip 192.168.127.60?
>

Вы ждёте тут готового решения? :)
Документаху по радиусу пролистайте, на тестовом логине проверьте ...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 02-Июл-09, 16:14 
>[оверквотинг удален]
>>Этот параметр должен быть в таблице radreply?
>>
>>insert into radreply set UserName = 'system', Attribute='Calling-Station-Id', op = ':=', Value
>>= '192.168.127.60';
>>
>>т.е. таким образом я разрешу заходить пользователю system только с ip 192.168.127.60?
>>
>
>Вы ждёте тут готового решения? :)
>Документаху по радиусу пролистайте, на тестовом логине проверьте ...

Проверил, пускает с любого ip. Поэтому и спрашиваю

И кажется понял почему не работает. Запустил radiusd -X и вот что в логах

rad_recv: Accounting-Request packet from host 127.0.0.1 port 40538, id=0, length=104
Acct-Session-Id = "4A4CA6112F9E01"
User-Name = "system"
Acct-Status-Type = Start
Service-Type = Framed-User
Framed-Protocol = PPP
Calling-Station-Id = "0.01"
Acct-Authentic = RADIUS
NAS-Port-Type = Async
Framed-IP-Address = 192.168.2.44
NAS-IP-Address = xxx.xxx.xxx.xxx
NAS-Port = 3
Acct-Delay-Time = 0

Какой то странный Calling-Station-Id.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Grey (ok) on 02-Июл-09, 17:03 
>[оверквотинг удален]
>Framed-Protocol = PPP
>Calling-Station-Id = "0.01"
>Acct-Authentic = RADIUS
>NAS-Port-Type = Async
>Framed-IP-Address = 192.168.2.44
>NAS-IP-Address = xxx.xxx.xxx.xxx
>NAS-Port = 3
>Acct-Delay-Time = 0
>
>Какой то странный Calling-Station-Id.

Параметр должен быть в radcheck c op = '=='
а вот почему у Вас такой
>Calling-Station-Id = "0.01"

следует разобраться с тем, кто у вас туннель держит.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 02-Июл-09, 17:20 
>[оверквотинг удален]
>>NAS-Port = 3
>>Acct-Delay-Time = 0
>>
>>Какой то странный Calling-Station-Id.
>
>Параметр должен быть в radcheck c op = '=='
>а вот почему у Вас такой
>>Calling-Station-Id = "0.01"
>
>следует разобраться с тем, кто у вас туннель держит.

Это VPN сервер внутри локалки
# rpm -qa | grep freeradius
freeradius-server-2.1.3-0

# rpm -qa | grep ppp
ppp-2.4.4-2.el5

Причем заметил он у всех пользователей один и тот же 0.01. Похоже что ppp клиент как то криво передает радиусу это значение. А скорее даже модуль radius.so

Может кто то сталкивался с такой проблемой?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Vladin (ok) on 03-Июл-09, 00:59 
сталкивался
пптп строит туннель, он знает откуда коннектится клиент
ппп работает поверх этого туннеля, и ничего не знает о ип клиента, и он же (ппп) отправляет запросы на радиус
надо патчить пптп и ппп чтобы передать из пптп ип клиента в ппп
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Vladin (ok) on 03-Июл-09, 01:05 
для пптп надо править pptpctrl.c

вот что у меня для версии 1.3.4

static void launch_pppd(char **pppaddrs, struct in_addr *inetaddrs)
{
  char *pppd_argv[14];
  int an = 0;
  sigset_t sigs;

  pppd_argv[an++] = ppp_binary;

  if (pptpctrl_debug) {
    syslog(LOG_DEBUG,
           "CTRL (PPPD Launcher): program binary = %s",
           pppd_argv[an - 1]);
  }

setenv("clid",inet_ntoa(inetaddrs[1]),1);
setenv("cid",inet_ntoa(inetaddrs[0]),1);

добавлены две последние строки

в ппп правок больше, если надо найду
сам перешел на mpd, доволен

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (??) on 03-Июл-09, 01:47 
>в ппп правок больше, если надо найду
>сам перешел на mpd, доволен

если не сложно поищи. Возможности и желания переходить на freebsd нет :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Vladin (ok) on 03-Июл-09, 17:45 
что добавить, то с + в начале
добавить переменные в описание

@@ -113,7 +113,8 @@
#define        AUTH_LEN        16
#define        SALT_LEN        2
#endif
-
+static char *clid=NULL;
+static char *cid=NULL;
static const char *
radius_policyname(int policy)
{

в функции добавить строки
int radius_Authenticate(struct radius *r, struct authinfo *authp, const char *name,


@@ -858,9 +780,21 @@
     rad_close(r->cx.rad);
     return 0;
   }
+
+    clid = getenv("clid");
+    cid  = getenv("cid");
+
+  if(clid!=NULL) rad_put_string(r->cx.rad, RAD_CALLING_STATION_ID, clid);
+  if(cid !=NULL) rad_put_string(r->cx.rad, RAD_CALLED_STATION_ID, cid);

   if (rad_put_string(r->cx.rad, RAD_USER_NAME, name) != 0 ||

и в функции
void radius_Account(struct radius *r, struct radacct *ac, struct datalink *dl,

     /* And grab our MP socket name */
     snprintf(ac->multi_session_id, sizeof ac->multi_session_id, "%s",
              dl->bundle->ncp.mp.active ?
              dl->bundle->ncp.mp.server.socket.sun_path : "");
   };
+  if(clid!=NULL) rad_put_string(r->cx.rad, RAD_CALLING_STATION_ID, clid);
+  if(cid !=NULL) rad_put_string(r->cx.rad, RAD_CALLED_STATION_ID, cid);


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 03-Июл-09, 17:57 
спасибо, проверю. Но странно, что мне знакомый говорит, что на freeradius-1.x этот атрибут передавался нормально
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 05-Июл-09, 13:52 
>[оверквотинг удален]
>
>
>     /* And grab our MP socket name
>*/
>     snprintf(ac->multi_session_id, sizeof ac->multi_session_id, "%s",
>              dl->bundle->ncp.mp.active ?
>              dl->bundle->ncp.mp.server.socket.sun_path : "");
>   };
>+  if(clid!=NULL) rad_put_string(r->cx.rad, RAD_CALLING_STATION_ID, clid);
>+  if(cid !=NULL) rad_put_string(r->cx.rad, RAD_CALLED_STATION_ID, cid);

а в какой это надо добавлять файл? Я что то не смог найти :(

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от Vladin (ok) on 06-Июл-09, 17:42 
radius.c
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от nadirx2 (ok) on 05-Июл-09, 01:04 
>[оверквотинг удален]
>>
>>Calling-Station-Id в радиусе... IP станции откуда можно логину соединяться ...
>
>Этот параметр должен быть в таблице radreply?
>
>insert into radreply set UserName = 'system', Attribute='Calling-Station-Id', op = ':=', Value
>= '192.168.127.60';
>
>т.е. таким образом я разрешу заходить пользователю system только с ip 192.168.127.60?
>

radreply - это таблица для клиентов имеющих назначенный ip. при авторизации радиус смотрить в эту таблицы эсли совпадении эсть с логином то даеть назначенный ip эсли неть то дает из пула.

эсли у ppp юзера эсть статически то можна и по ip дать скорость.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 05-Июл-09, 13:09 
>[оверквотинг удален]
>>
>>т.е. таким образом я разрешу заходить пользователю system только с ip 192.168.127.60?
>>
>
>radreply - это таблица для клиентов имеющих назначенный ip. при авторизации радиус
>смотрить в эту таблицы эсли совпадении эсть с логином то даеть
>назначенный ip эсли неть то дает из пула.
>
>эсли у ppp юзера эсть статически то можна и по ip дать
>скорость.

Мне не скорость надо давать, а разрешать или отклонять доступ


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от nadirx2 (ok) on 05-Июл-09, 18:16 
>[оверквотинг удален]
>>>
>>
>>radreply - это таблица для клиентов имеющих назначенный ip. при авторизации радиус
>>смотрить в эту таблицы эсли совпадении эсть с логином то даеть
>>назначенный ip эсли неть то дает из пула.
>>
>>эсли у ppp юзера эсть статически то можна и по ip дать
>>скорость.
>
>Мне не скорость надо давать, а разрешать или отклонять доступ

update radcheck set isActive='0' where id = 'blabla'  
и
update radcheck set isActive='1' where id = 'blabla'  

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Настройки freeradius для разграничения доступа клиентов"  +/
Сообщение от ALex_hha (ok) on 06-Июл-09, 13:17 
>[оверквотинг удален]
>>>назначенный ip эсли неть то дает из пула.
>>>
>>>эсли у ppp юзера эсть статически то можна и по ip дать
>>>скорость.
>>
>>Мне не скорость надо давать, а разрешать или отклонять доступ
>
>update radcheck set isActive='0' where id = 'blabla'

>update radcheck set isActive='1' where id = 'blabla'

ЭТО НЕ ТО!!! Мне надо разрешать или запрещать доступ на основании ip клиента!!!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру