From: Алекс Б.Юдкин <yudkin_alex@mail.ru.>
Newsgroups: email
Date: Mon, 4 Apr 2004 18:21:07 +0000 (UTC)
Subject: Dialup сервера с пользователями в MySQL и аутентификацией через Radius
Ну вот, решился написать мануал по настройке связки FreeRADIUS + MySQL +
PPP + Mgetty в ALT Linux.
PPP с поддержкой радиуса установится в зависимостях freeradius.
А про общюю настройку apache, phpMyAdmin и MySQL я не буду говорить :-ь
На том-же opennet.ru куча доков по ним.
Далее конфигурируем софт по отдельности.
Mgetty
В каталоге /etc/mgetty+sendfax видим три файла: dialin.config,
login.config, mgetty.config. Первый (dialin.config) не трогаем, там все
должно быть закоментированно. В файле login.config прописываем так, это
позволит mgetty запускать демона pppd, в случае получения кода ppp
(типа ~^?}#@!}! ), с параметрами, взятами из файла /etc/ppp/options.dialin :
В файле mgetty.config прописываем порты и скорости модемов, в моем
случае - порта и модема :) :
modem-type data # говорим что хотим только дату, не факсы и не голос.
data-only y
debug 4 # установка уровня отладки
speed 38400 # установка скорости (порта?)
port ttyS1 # номер порта, к которому подключем модем
Прописываем mgetty в /etc/inittab :
d5:3:respawn:/sbin/mgetty -n 2 ttyS1
где d5 - id процесса, 3 - любое число, respawn - говорит чтобы INIT
перезапускала процесс после падения (выхода) последнего.
Коммандуем:
[root@mustdie etc]# kill -1 1
И смотрим лампочки на модеме, если таковые имеются. Если загарается TR,
в моем, как я говорил, случае, то все должно быть ОК, если нет, то
смотрим логи и орфографичиские ошибки в конфигах.
PPPD
Идем в каталог /etc/ppp создаем файлик options.dialin:
asyncmap 0
auth
crtscts
-detach
lock
login
modem
-chap
+pap
mtu 576
mru 576
noipx
plugin radius.so #подключаем радиус
plugin radattr.so #подключаем радиус
10.0.0.1: #установка локального ip, в моем случае это
# 10.0.0.1 - ip сервера, а #после двоеточия идет
# ip подключившекося к нам, его [ip адрес]
# выдает радиус, но об этом позже.
netmask 255.0.0.0
ms-dns 10.0.0.1 #адрес DNS сервера
domain mustdie.org #домен
Сохраняем, радуемся, выпиваем кружечку пива, радуемся, садимся за комп
дальше писать конфиги.
FreeRADIUS
Конфиги радиуса ищем в /etc/raddb. Не пугаемся обилия файлов, нам нужны
только несколько штук из всех.
# Имя пользователя и группа от которых запускается FreeRADIUS
user = radius
group = radius
# Максимальное время (в секундах) используемое для обработки запроса.
max_request_time = 30
# Удалить запросы которые обрабатываются более чем max_request_time
delete_blocked_requests = no
# Время ожидания (в секундах) перед очисткой reply запроса отправленного NAS.
cleanup_delay = 5
# Максимальное количество запросов хранимых сервером. Это число должно быть равно
# количеству клиентов помноженному на 256.
# К примеру для четырех клиентов оно будет 1024.
max_requests = 5120
# Закрепить за ip адресом. По умолчанию RADIUS сервер при старте принимает
# запросы со всех ip адресов.
bind_address = *
# Закрепить за FreeRADIUS конкретный port. Если указан ноль,
# то значение берется из /etc/services
port = 0
# Запретить/разрешить ip адреса в dns имена.
# Включение этой опции может сильно снизить производительность.
hostname_lookups = no
# Создавать/несоздавать отладочные файлы при падении сервера.
allow_core_dumps = no
# Количество принимаемых запросов процессом. МОжет помочь при утечках памяти в
# RADIUS сервере. Если выставить 300, процессы будут периодически перегружаться
# для уборки мусора.
max_requests_per_server = 0
}
# Секция конфигурации динамических модулей.
modules {
# Модуль PAP авторизации.
# Необходим для обработки запросов с PAP авторизацией.
# encryption_scheme указывает в каком виде хранятся пароли.
# clear - подразумевает в открытом виде.
pap {
encryption_scheme = clear
}
# Модуль CHAP авторизации.
# Необходим для обработки запросов с CHAP авторизацией.
# authtype подразумевает обработку запросов только с аттрибутом Auth-Type=CHAP
chap {
authtype = CHAP
}
# Модуль преобработки запросов.
# Т.е. перед авторизацией пакета.
preprocess {
# huntgroups - хинт группы см. файл huntgoups.
# hints - хинты.
huntgroups = ${confdir}/huntgroups
hints = ${confdir}/hints
# Обработка Cisco VSA.
with_cisco_vsa_hack = no
}
# Модуль Microsoft CHAP авторизации.
# Поддерживает так же еще и Microsoft CHAP v2
# authtype подразумевает обработку запросов только с аттрибутом Auth-Type=MS-CHAP
# use_mppe = no указывает на отсутствие компресии VPN туннеля.
mschap {
authtype = MS-CHAP
use_mppe = no
}
# Модуль записей Livingston RADIUS типа.
# usersfile содержит авторизационные записи пользователей.
# Рекомендуется использовать только для тестов и выставления значений по умолчанию.
# acctusersfile содержит пользователей подлежащих учету (аккаунтингу).
# compat - совместимость. При использовании файлов только FreeRADIUS можно отключить.
files {
usersfile = ${confdir}/users
compat = no
}
# Создать уникальный ключ для аккаунтинг сессии.
# Многие NAS повторно используют Acct-Session-ID.
# key перечисление аттрибутов для генерации Acct-Session-ID
acct_unique {
key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port-Id"
}
# Конфигурация авторизации и аккаунтинга посредством СУБД
# содержится в отдельном файле cakesql.conf
$INCLUDE ${confdir}/sql.conf
}
# Авторизация
# сначала идет пакет передается в preprocess
# где может быть модифицирован.
# Далее chap mschap обрабатывают chap и mschap авторизацию.
authorize {
preprocess
chap
mschap
# Не ведем логи пакетов авторизации.
# auth_log
files
mysql
}
# Аунтификация
# Секция содержит модули доступные, для аунтификации.
authenticate {
Auth-Type PAP {
pap
}
Про начальную настройку MySQL-в-общем говорить не буду, мануалов и без этого хватает.
А вот про настройку для радиуса - пожайлусто.
В пакете с радиусом идет дамп базы для него:
Но сначала надо создать базу, для этого запускаем phpMyAdmin, создаем
базу radius и, заходим туда, находим вкладку SQL - заходим, видим
бооольшое текстовое поле, а под ним кнопочка Choose, жмем ее и тыкаем
его носом в файлик с дампом (см. выше) и жмем "Пошел". Если
все прошло успешно, получим отчет и слова об успешном окончании.
Далее настраиваем dialup_admin из пакета радиуса, он лежит здесь:
/usr/share/doc/freeradius-1.0.2/
Там все хорошо описанно, см. файл README. Так что повтаряться не буду.
Совет: на все файлы диалап-админа надо поставить chmod 777, иначе ничего
не будет работать.
Теперь создаем пользователей из dialup-admin'а.
Запуск всего этого :-), ну в общем всего этого.
[root@mustdie /]# service httpd restart
В отдельной консоле запускаем MySQL-Server:
[root@mustdie /]# mysqld -u root
Снова возвращаемся в прежнюю консоль и продолжаем:
[root@mustdie /]# service radiusd restart
Если все прошло без ошибок и все работает, то можно проверить
работоспособность радиуса, для этого:
login: bbs
Password:
RADIUS: Hello bbs. 2005-04-01 01:43:44 2005-04-01-01.43.44.000000
This is the dummy login.radius script. If you want that this script
does something useful you'll have to replace it.
The following RADIUS environment variables are set:
RADIUS_FRAMED_IP_ADDRESS=10.0.0.3
RADIUS_FRAMED_IP_NETMASK=255.0.0.0
RADIUS_FRAMED_PROTOCOL=PPP
RADIUS_FRAMED_ROUTE='10.0.0.0/24 1'
RADIUS_REPLY_MESSAGE='Hello bbs. 2005-04-01 01:43:44 2005-04-01-01.43.44.000000'
RADIUS_SERVICE_TYPE=Framed-User
RADIUS_SESSION_TIMEOUT=1800
RADIUS_USER_NAME=bbs
Bye, bye.
Я использовал юзера bbs, вы можете пробовать бругие, предварительно
создав их через диалап-админ. Вы должны увидеть что-то подобное, только
со своими параметрами. Если такое случилось - то ура! Идем в магазин,
покупаем ящик пива, идем домой, завем друга, хвастаемся ему успехами в
изучении Linux и распиваем вместе этот ящик пива. Отсыпаемся :-). С
утра снова за работу.
С наилучшими пожеланиями в познании проффессии сисадмина Алекс Б.Юдкин
Все возражения и предложения на yudkin_alex@mail.ru.
1063 Прочтений • [Dialup сервера с пользователями в MySQL и аутентификацией через Radius (linux radius ppp getty mysql dialup dial-in)] [08.05.2012] [Комментариев: 0]