Користувальницькькі налаштування

Налаштування сайту


Сайдбар

Розділи

Загальний опис
Історія змін
Рекомендації щодо оновлення
Плани на майбутнє
Відомі проблеми
Онлайн демо
Люди
Трохи про безпеку

FAQ



Редагувати сайдбар

freeradius

Це стара версія документу!


Внимание

Данная реализация является устаревшей и неподдерживаемой с релиза 0.9.1, и эта документация может быть использована только для общего развития. Используйте в своей практической деятельности новый и очень крутой КучаГен. Даная реализация полностью выкорчевана начиная с релиза Ubilling 1.2.8.

AAA с FreeRADIUS v2.0

Итак, начиная с версии 0.6.0 кардинально пересмотрена механика взаимодействия FreeRADIUS с Ubilling. Следовательно, решение описанное здесь больше не является актуальным.

Установка на FreeBSD 9.3 amd64

Первым делом установим сам FreeRADIUS с поддержкой MySQL и USER из портов (с 0.6.7 уже предустановлен и требует только включения в rc.conf):

# portsnap fetch extract
# cd /usr/ports/net/freeradius2
# make WITH_MYSQL=yes WITH_USER=yes BATCH=yes install clean

После успешного завершения установки добавим в `/etc/rc.conf`:

radiusd_enable="YES"

Далее заменим стандартные конфигурационные файлы нашими заготовками. Никто, кстати, не говорит, что вам нужно использовать строго наши заготовки, но никто ответственности не понесёт за вашу фантазию:

# cd /usr/local/www/apache24/data/billing
# cp -r ./docs/freeradius2/raddb/* /usr/local/etc/raddb/

По пути заливаем дамп таблиц FreeRADIUS в базу данных. Здесь предполагаем, что база Ubilling - stg, пользователь root, а потом еще и пароль рута попросят:

# mysql -u root -p stg < ./docs/freeradius2/dump.sql

Потом приступаем к конфигурированию соединения FreeRADIUS с БД Ubilling, редактируя следующие параметры в /usr/local/etc/raddb/sql.conf:

Параметр Описание
server Хост/IP сервера базы данных
port Порт сервера базы данных
login Пользователь
password Пароль
radius_db Имя базы данных

Если все закончили, можно попробовать запустить FreeRADIUS, но пока в debug-режиме:

# radiusd -X

И если вы увидели нечто похожее на код ниже - можно продолжать дальше…

... adding new socket proxy address * port 10049
Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on command file /var/run/radiusd/radiusd.sock
Listening on authentication address 127.0.0.1 port 18120 as server inner-tunnel
Listening on proxy address * port 1814
Ready to process requests.

Включение поддержки FreeRADIUS самим Ubilling'ом

Всего лишь в `config/alter.ini` заменяем значение опции FREERADIUS_ENABLED:

FREERADIUS_ENABLED = 1

После этого вы сможете:

  1. Редактировать сети, указывая какие используют RADIUS, а какие нет (по-умолчанию - нет);
  2. Указывать для каждой сети как check так и reply атрибуты для всей сети или для каждого пользователя (галочка “Всем”)
  3. Указывать для каждого пользователя как check так и reply атрибуты с помощью “чёрной магии” в профиле пользователя

Настройка атрибутов

Для каждого случая возможны различные наборы атрибутов. Поэтому их настройка будет приводиться для отдельных решений в соответствующих разделах документации. Для добавления/редактирования атрибутов предусмотрена удобная форма на подобие этой:

Авторизация пользователей не по логину

Для некоторых систем, необходимо изменить стандартный способ авторизации по логину, используемый большинством программных решений (MPD5, Accel-PPP, IEEE 802.1x) на авторизацию по IP (например, Linux ISG) или MAC (например, MikroTik DHCP). Для этого, с релиза 0.6.1 rev 3933 предусмотрена удобная форма, которая позволит вам в 2 клика изменить все ключи в базе данных для какой либо сети. Для решений, где необходимо будет изменить стандартный способ авторизации по логину, мы сообщим нужное значение для этого параметра в документации.

Макросы

Макрос ({*}) Значение Поле MySQL
user[login] Логин пользователя `users`.`login`
user[Password] Пароль пользователя `users`.`Password`
user[Tariff] Тариф пользователя `users`.`Tariff`
user[state] Состояние пользователя
nethost[ip] IP пользователя `nethosts`.`ip`
nethost[mac] MAC пользователя `nethosts`.`mac`
network[id] ID сети `networks`.`id`
network[ip] IP сети `networks`.`desc` [*/]
network[cidr] CIDR сети `networks`.`desc` [/*]
network[start] Начальный IP сети `networks`.`start`
network[end] Конечный IP сети `networks`.`end`
network[desc] IP/CIDR сети `networks`.`desc`
switch[ip] IP адрес свитча `switches`.`ip`
switch[port] Номер порта `switchportassign`.`port`
speed[up] Скорость вверх `speeds`.`speedup`
speed[down] Скорость вниз `speeds`.`speeddown`

Заметка: Замена макроса происходит в любом месте значения атрибута, но только одного:

mpd-pipe  += "1=bw {speed[down]}Kbyte/s",
mpd-pipe  += "5=bw {speed[up]}Kbyte/s",

MPD5 породит для пользователя со скоростью 4000/2000 нечто такое:

ipfw pipe 10000 config bw 4000Kbyte/s
ipfw pipe 10001 config bw 2000Kbyte/s

Об учёте трафика

Сам сервер FreeRADIUS вести учёт трафика не будет! Трафик должен учитываться при помощи протокола NetFlow: сенсором будет выступать сам RADIUS-клиент, который будет отправлять статистику на коллектор, в нашем случае модуль cap_nf ядра системы. Как это сделать будет описано отдельно в документации для выбранного вами решения

Как проверить все ли хорошо?

При запущенном в одном окне

# radiusd -X 

делаем в соседнем что-то вроде

# radtest testlogin testpassword 127.0.0.1 0 dec0071981b1

Где testlogin и testpassword как несложно догадаться - логин/пароль существующего пользователя которого мы проверяем на авторизуемость, а dec0071981b1 это Radius secret нашего локального сервера доступа. Откуда он берется? А вот откуда:

Что мы должны увидеть в результате? А вот что-то такое:

root@test93x64:/usr/home/ubilling # radtest testlogin testpassword 127.0.0.1 0 dec0071981b1
Sending Access-Request of id 154 to 127.0.0.1 port 1812
	User-Name = "testlogin"
	User-Password = "testpassword"
	NAS-IP-Address = 127.0.0.1
	NAS-Port = 0
	Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=154, length=32
	Framed-IP-Address = 172.16.0.3
	Framed-IP-Netmask = 255.255.255.255

В случае если мы увидим что-то вроде

root@test93x64:/usr/home/ubilling # radtest testlogin testpassword 127.0.0.1 0 dec0071981b1
radclient:: Failed to find IP address for test93x64
radclient: Nothing to send.

стоит обратить внимание как минимум на /etc/hosts на тему добавления туда нашего хостнейма в виде

127.0.0.1              127.0.0.1              test93x64 test93x64.localdomain

Блокирование доступа должникам, отключенцам и отморозками

Для запрещения авторизации пользователям, которые заведомо должны быть отключены вы можете использовать кастомный дамп, следующим образом

# cd /usr/local/www/apache24/data/billing
# mysql -u root -p stg < ./docs/freeradius2/dump-ignore-debtors.sql
freeradius.1686848504.txt.gz · Востаннє змінено: 2023/06/15 20:01 повз nightfly