Сделать стартовой Добавить в избранное
 
Панель управления
логин :  
пароль :  
   
   
Регистрация
Напомнить пароль?
Статьи по Windows 9x Me XP 2003 Longhorn Vista Linux FreeBSD Apache MySQL хостинг PHP Perl » UNIX » Открытое программное обеспечение » Установка и настройка gnu-radius + postgresql
Навигация по сайту
Главная Софт
Форум FeedBack
 
Расширенный поиск
Календарь
«    Сентябрь 2007    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Популярные статьи
 

 

UNIX » Открытое программное обеспечение : Установка и настройка gnu-radius + postgresql
 
Решил я поставить radius с возможностью хранения паролей
и настроек пользователей в SQL сервере. Так как зверинец из множества видов
SQL серверов держать не хотелось, то необходима была поддержка именно
PostgreSQL. Выбор пал на gnu-radius, как поддерживающий несколько видов SQL,
в том числе и PostgreSQL.
Данный документ не претендует на полную документацию по установке
gnu-radius+postgresql, это просто последовательность действий, которая
привела меня к работающей системе. В документе приведены ряд решений и
трудности с которыми мне пришлось столкнуться при реализации данного
проекта. Все это ставилось на linux версии RedHat 7.1. PostgreSQL был
собран из исходников для другой задачи и успешно работал на момент
установки.

Установку PostgreSQL здесь разбирать не будем, а
остановимся именно на установке gnu-radius и связки его с SQL.

Сама установка ничего сложного в себя не включает:

1) Скачиваем

$wget http://ftp.gnu.org/gnu/radius/gnu-radius-0.96.4.tar.gz

2) Распаковываем

$tar xzvf gnu-radius-0.96.4.tar.gz

3) Переходим в каталог с Radius

$cd gnu-radius-0.96.4

Если интересно, то читаем README и т.д.

4) Запускаем конфигурирование, указывая подключить PostgreSQL и пути
к include файлам PostgreSQL

$./configure
--with-postgres
--with-include-path=/usr/local/pgsql/include
--with-client

Если PostgreSQL собран в другом месте, то, соответственно, измените путь.

5) Собираем

$make

6) Инсталлируем

$make install

Если возникли ошибки, то где-то Вы ошиблись, либо не находится нормальная
сборка PostgreSQL. По умолчанию radius собирается в /usr/local, вы можете
его собрать и в другой каталог, указав при конфигурировании --prefix=PREFIX,
где PREFIX это каталог, относительно которого будет установлен radius.

Первичная настройка

1) Я подправил себе файл /usr/local/etc/raddb/config

port 1645;

В секции auth и

port 1646;

В секции acct.

Мне это нужно было, чтобы киску свою не перенастраивать, Вы
можете оставить себе порты по умолчанию, не это влияет на работу ;)

2) В файл /usr/local/etc/raddb/clients занесите информацию о клиентах,
которые будут запрашивать аутентификацию у radius

#Client Name Key
#---------------- -------------------
localhost localtest
cisco ciscokey

Ключи лучше придумать самим ;)

3) Для теста нашего radius есть клиентские утилиты, вот для них
нужно прописать конфигурацию в /usr/local/etc/raddb/client.conf

server local 127.0.0.1 localtest 1645 1646
source_ip 127.0.0.1
timeout 3
retry 1

4) В файл /usr/local/etc/raddb/users занесите для теста

# This is the users database.
uzver Auth-Type = Local, Password = "test"
Service-Type = NAS-Prompt-User

radius уже может работать и отвечать на запросы
Можно проверить на работоспособность radiusd запустив

$/usr/local/sbin/radiusd

(radiusd должен быть запущен относительно корневого пути, например
/usr/local/sbin/radiusd, иначе работа будет некорректной)

У меня с ходу не запустился, так как не были указаны пути к библиотекам
PostgreSQL. Я внес пути в /etc/ld.so.conf и запустил ldconfig, после
чего все удачно заработало.

Ответы от radius можно проверить тестовой утилитой /usr/local/sbin/radauth

$/usr/local/sbin/radauth -v uzver test
server 127.0.0.1:1645
send code 1 (RT_AUTHENTICATION_REQUEST)
send: User-Name = uzver
send: Password = test
send: NAS-Port-Id = 0
recv code 2 (RT_AUTHENTICATION_ACK)
recv: Service-Type = NAS-Prompt-User
expect 2
got 2
PASS

Если вы получили такой ответ, то radius работает и из текстового users отдает
ответы на запросы аутентификации, если нет, то нужно искать в чем ошибка.

Теперь самое страшное ;) - связь с SQL. В описании приведена только схема
связи данного продукта с MySQL, да и то с ошибками. Ниже приведена
последовательность действий с PostgreSQL для подготовки его к работе с radius:

1) Становимся пользователем из под которого запущен postmaster и создаем базу
(не будем оригинальны) radius.

[root@ns /]# su - postgres
[postgres@ns postgres]$ createdb radius

2) Входим в командный режим управления базой и создаем пользователя radius с
паролем test

[postgres@ns postgres]$ psql -d radius
radius=# create user radius password 'test';

3) Создаем таблицы для хранения информации о пользователях, сами SQL
выражения изменены под PostgreSQL и вроде как полнофункционально работают.
Я заменил все типы char(n) на тип varchar(n) так как odbc добавляет пробелы
в конец строки до требуемого числа символов.
Таблица passwd (здесь в документации допущена ошибка, пропущено поле active
я дал ему тип varchar(3) и значение по умолчанию лучше 'Framed-User')

radius=# CREATE TABLE passwd ( user_name varchar(32) UNIQUE default
'' not null, service varchar(16) default 'Framed-User' not
null, password varchar(64), active varchar(3));

Таблица groups (все прозрачно)

radius=# CREATE TABLE groups ( user_name varchar(32) default ''
not null, user_group varchar(32));

Таблица attrib (вместо MySQL enum() просто проверяем на присутствие - check)

radius=# CREATE TABLE attrib ( user_name varchar(32) default ''
not null, attr varchar(32) default '' not null,
value varchar(128), op varchar(3)
check (op in ('=', '!=', '', '='))
default null );

Таблица calls

radius=# CREATE TABLE calls ( status int, user_name varchar(32),
event_date_time timestamp without time zone
DEFAULT '1970-01-01 00:00:00' NOT NULL,
nas_ip_address varchar(17), nas_port_id bigint,
acct_session_id varchar(16) DEFAULT '' NOT NULL,
acct_session_time bigint, acct_input_octets bigint,
acct_output_octets bigint, connect_term_reason int,
framed_ip_address varchar(17), called_station_id varchar(32),
calling_station_id varchar(32) );

Даем право на чтение, запись пользователю radius

radius=# grant select on passwd,groups,attrib,calls to radius;
radius=# grant insert,update on calls to radius;

4) Теперь выходим из командного режима "\q".
Не забудьте прописать в pg_hba.conf возможность доступа к базе radius
с localhost через аутентификацию логин-пароль например:

host radius all 127.0.0.1 255.255.255.255 password passwd

И естественно, что postmaster нужно запускать с ключиком -i

Вроде ничего не забыл про PostgreSQL теперь возвращаемся к radius и
правим файл /usr/local/etc/raddb/sqlserver

interface postgres
server localhost
port 5432
login radius
password test
keepopen yes
doauth yes
auth_db radius
doacct yes

Я указал только строки в которые я вносил изменения. От локальной
аутентификации я отказался на случай переноса сервера SQL на другую машину.

Теперь возвращаемся к /usr/local/etc/raddb/users и добавляем к примеру:

DEFAULT Group = "test1", Auth-Type = SQL,
Simultaneous-Use = 1
Service-Type = Framed-User

Внимание! При аутентификации через SQL пароли в таблице должны храниться
криптованые или md5 или des. Долго я выяснял это, пока не наткнулся в
документации:

Specifying Passwords in SQL Database.
user-name Auth-Type = Crypt-Local,
Password-Location = SQL
Using this profile, the user's password is retrieved from the authentication
database using auth_query. The configuration of SQL authentication is
described in detail on section Authentication Server Parameters.

The shortcut for this notation is Auth-Type = SQL.

In any case, the passwords used with this authentication type must be
either DES or MD5 hashed.

Для криптования паролей я воспользовался утилитой /sbin/grub-md5-crypt
Запускаете, вводите пароль, полученную строку вносите в таблицу.
Если Вы занесли данные о пользователе, прописали в группу, добавили атрибутов
то при помощи /usr/local/sbin/radauth можно проверить работоспособность
того, что мы сделали. Можно добавлять, удалять атрибуты в PostgreSQL и
смотреть как radius честно их отдает. Очень удобен механизм групп. например:

DEFAULT Group = "test1", Auth-Type = SQL,
Login-Time = "Wk1800-0755,Sa,Su0000-2359",
Simultaneous-Use = 1
Service-Type = Framed-User,
Framed-Protocol = PPP,
Framed-Netmask = 255.255.255.255

DEFAULT Group = "test2", Auth-Type = SQL,
Simultaneous-Use = 1
Service-Type = Framed-User

Пользователи, которые в группе test1 могут получить доступ только с 18:00
до 07:55 по рабочим дням и круглосуточно по выходным, а из группы test2
пользователи не имеют временных ограничений. В общем, большая широта для
творчества.


Оригинал: http://linuxnews.ru/docs/new/malykh/radius_postgress.html
 
 
 
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
 
 
  • Интеграция VPN на базе mpd в Active Directory
  • Установка Postfix+spamassassin+drweb на FreeBSD
  • FAQ по установке и настройке IC-RADIUS под FreeBSD
  • Установка VPN с использованием MPD+FreeRadius
  • Каталог Ссылок
  •  
     
     (голосов: 0)
    Комментарии (0)  Распечатать
     
     
    Добавление комментария
       
     

    РАЗДЕЛЫ СТАТЕЙ
    На нашем сайте Вы можете почитать интересные статьи о разных операционных системах и не только о них.
     
    WINDOWS 98 - Все об ОС версии 9x - настройка, скрытые возможности, оптимизация, рекомендации и многое другое...
    FAQ   Безопасность   Восстановление   Другое   Настройка   Оптимизация   Установка


    WINDOWS 2000 - установка, настройка, оптимизация, ускорения работы, администрирование и многое другое.
       FAQ   Администрирование   Безопасность   Восстановление   Настройка   Оптимизация   Разное   Установка


    WINDOWS 2003 - настройка, полные обзоры данной ОС, оптимизация, скриншоты, FAQ...
       FAQ   Администрирование   Безопасность   Настрока   Разное   Установка


    WINDOWS XP - настройка, скрытые возможности, оптимизация, рекомендации и многое другое...
       FAQ   Безопасность   Восстановление   Другое  Настройка   Оптимизация   Установка


    WINDOWS Vista - установка, настройка, оптимизация, рекомендации и многое другое...
       FAQ   Другое   Обзор системы   Установка


    UNIX - установка, настройка, рекомендации и многое другое...
       Linux   FreeBSD   Сетевые технологии   Открытое программное обеспечение   Интернет   Разное   FAQ


    Администратору / пользователю - практические советы по работе с софтом железом и пр...
       Hardware   Internet   lan&more   Software    Exchange Server    Windows Server 2008


    Windows Server - Советы и рекомендации по настройке Windows серверов
       Exchange Server    Windows Server 2008    ISA Server


    Веб-мастеру - Apache, ASP, Flash, MySQL, хостинг и многое другое...
       Apache   ASP   Разное   Flash   Java/CSS/HTML/DHTML   MySQL   Хостинг   Perl   PHP
     
      Если после прочтения статьи у Вас возникли вопросы/предложения/дополнения, Вы можете изложить их на нашем форуме в соответствующем разделе.
    Если Вы являетесь автором статьи которая размещена на нашем портале незаконно, просим Вас сообщить нам об этом.