The OpenNET Project / Index page

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

Dialup сервера с пользователями в MySQL и аутентификацией через Radius (linux radius ppp getty mysql dialup dial-in)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: linux, radius, ppp, getty, mysql, dialup, dial-in,  (найти похожие документы)
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. И так. Для начала надо все это дело поставить: [root@mustdie root]# apt-get install mgetty [root@mustdie root]# apt-get install apache [root@mustdie root]# apt-get install php [root@mustdie root]# apt-get install MySQL [root@mustdie root]# apt-get install phpMyAdmin [root@mustdie root]# apt-get install freeradius [root@mustdie root]# apt-get install freeradius-mysql 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 : /AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options.dialin Теперь надо создать юзера a_ppp, от имени которого будет запускаться ppp-демон: [root@mustdie /]# adduser -d /dev/null -s /dev/null a_ppp В файле 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. Не пугаемся обилия файлов, нам нужны только несколько штук из всех. Самый главный из них, конечно, radiusd.conf: prefix = /usr exec_prefix = ${prefix} sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct # Месторасположение конфигурационных и лог файлов. confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd # Каталог с подгружаемыми модулями. libdir = ${exec_prefix}/lib # Месторасположение pid-файла. Содержащего идентификатор процесса. pidfile = ${run_dir}/radiusd.pid # Имя пользователя и группа от которых запускается 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 # Разрешить использование регулярных выражений. regular_expressions = yes extended_expressions = yes # Записывать полный User-Name аттрибут если найден в запросе. log_stripped_names = no # Записывать в лог попытки авторизации. log_auth = yes # Записывать в логи пароли при авторизации. # log_auth_badpass - не корректные пароли # log_auth_goodpass - корректные пароли log_auth_badpass = yes log_auth_goodpass = no # Включить/выключить коллизию пользователей. usercollide = no # конвертировать логин и/или пароль до или после авторизации. lower_user = no lower_pass = no # удалить пробелы в логине и/или пароле. nospace_user = no nospace_pass = no # настройки безопасности от возможных DoS аттак. security { # Максимальное допустимое количество аттрибутов в RADIUS пакете. max_attributes = 200 # Задержка (в секундах) перед отправкой Access-Reject пакета. reject_delay = 1 # Не отвечать на запросы Status-Server status_server = no } # Конфигрурация клиентов RADIUS сервера. # Описывается в отдельном файле. $INCLUDE ${confdir}/clients.conf # Отключить snmp поддержку. snmp=no # Настрока пула процессов. thread pool { # количество первоначально запущенных процессов. start_servers = 5 # Максимально возможное количество процессов. max_servers = 32 # Динамическая регулировка количества процессов. min_spare_servers = 3 max_spare_servers = 10 # Количество принимаемых запросов процессом. МОжет помочь при утечках памяти в # 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 } # Запись детального лога аккаунтинговых пакетов. detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } # Запись детального лога пакетов авторизации. detail auth_log { detailfile = ${radacctdir}/%{Client-IP-Address}/auth-detail-%Y%m%d detailperm = 0600 } # Запись детального лога reply пакетов. detail reply_log { detailfile = ${radacctdir}/%{Client-IP-Address}/reply-detail-%Y%m%d detailperm = 0600 } # Создать уникальный ключ для аккаунтинг сессии. # Многие 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 } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } } # Преобразование аккаунтинговых пакетов. preacct { preprocess } # Секция ведения аккаунтинга. accounting { # Создание Acct-Session-Id если ваш NAS генрит их вполне корректно можете убрать. acct_unique # Не создаем detail лог. detail # Помещать аккаунтинговые пакеты в СУБД mysql } # Секция ведения логов reply-пакетов. post-auth { # Не ведем детальный лог репли пакетов. reply_log } Файл sql.conf ,там много всего но нам нужны первые строчки типа см. ниже, задаем только хост, логин, пароль к базе данных sql mysql { # Database type # Current supported are: rlm_sql_mysql, rlm_sql_postgresql, # rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds driver = "rlm_sql_mysql" # Connect info server = "localhost" login = "root" password = "your-root-password-for-mysql" # Database table configuration radius_db = "radius" Файл naslist: localhost local other Остальное оставляем как есть. MySQL Про начальную настройку MySQL-в-общем говорить не буду, мануалов и без этого хватает. А вот про настройку для радиуса - пожайлусто. В пакете с радиусом идет дамп базы для него: /usr/share/doc/freeradius-mysql-1.0.2/db_mysql.sql Но сначала надо создать базу, для этого запускаем 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 Если все прошло без ошибок и все работает, то можно проверить работоспособность радиуса, для этого: [root@mustdie /]# radlogin ($Id: radlogin.c,v 1.1 2002/01/22 16:03:04 dfs Exp $) ----------------------------------------------------- Linux 2.4.22-std-up-alt17 (mustdie.org) (port 2) ----------------------------------------------------- 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 и распиваем вместе этот ящик пива. Отсыпаемся :-). С утра снова за работу. С наилучшими пожеланиями в познании проффессии сисадмина Алекс Б.Юдкин Все возражения и предложения на [email protected].

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, KdF (??), 00:16, 05/04/2005 [ответить]  
  • +/
    Если уж хранить всё в mysql, то почему не хранить там же и nas-ы, в таблице nas? Правда, похоже dialup_admin смотрит только в файл, а не в базу при поиске nas.

    Кстати, совет поставить 777 на dialup_admin-а весьма опрометчив, по-моему. Всё работает и без этого, главное правильно раздать права веб-серверу.

    А ещё вопрос к знающим людям, вместе с dialup admin поставляется скрипт log_badlogins, который слушает radius.log и пишет логи неудачных попыток соединения в таблицу radacct или куда-нибудь ещё. Почему этого не делает сам радиус-сервер? Ведь удачные он пишет не только в логи, но и в базу.


     
  • 1.2, stager (??), 06:32, 05/04/2005 [ответить]  
  • +/
    >где d5 - id процесса, 3 - любое число, respawn - говорит чтобы INIT
    >перезапускала процесс после падения (выхода) последнего.

    3 - это не любое число, а уровень работы системы (runlevel)
    в данном случае mgetty будет запускаться, когда система работает на 3 уровне. здесь желательно поставить не просто 3, а 2345

    >Коммандуем:
    >        [root@mustdie etc]# kill -1 1

    чтобы перечитать inittab нужно выполнить команду telinit q

     
     
  • 2.3, _CaT_ (?), 13:34, 05/04/2005 [^] [^^] [^^^] [ответить]  
  • +/
    >>Коммандуем:
    >>        [root@mustdie etc]# kill -1 1

    >чтобы перечитать inittab нужно выполнить команду telinit q

    автор забыл что у него не фря а линух)

     
     
  • 3.4, MustDie (?), 20:45, 09/04/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Но работает же :)
     

  • 1.5, maury (??), 21:54, 11/04/2005 [ответить]  
  • +/
    # Максимальное количество запросов хранимых сервером. Это число должно быть равно
    # количеству клиентов помноженному на 256.
    # К примеру для четырех клиентов оно будет 1024.                                                            
    max_requests = 5120
    что за клиент имеется в виду, авторизуемый пользователь или nas-сервер
     
     
  • 2.6, Chek (??), 09:10, 16/07/2006 [^] [^^] [^^^] [ответить]  
  • +/
    NAS
     

  • 1.7, Алексей (??), 18:02, 03/03/2009 [ответить]  
  • +/
    при установке FreeRADIUS + MySQL + PPP + Mgetty в Debian 4.0  возникло несколько проблем в т.ч. с ppp. как пересобрать ppp под FreeRADIUS.

    кстати при установке вышеприведенной связки pppd не установился.

     
  • 1.8, wanton (??), 12:58, 09/01/2013 [ответить]  
  • +/
    а если сервер с radius  на ДРУГОЙ МАШИНЕ?????
     
  • 1.9, wanton (??), 12:59, 09/01/2013 [ответить]  
  • +/
    а если сервер с radius  на ДРУГОЙ МАШИНЕ?????
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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