Hotspot для самых маленьких, часть 4: подключаем RADIUS

Доброго времени суток!

Предыдущие серии:
Hotspot для самых маленьких, часть 1
Hotspot для самых маленьких, часть 2: своя страница входа + социальные сети
Hotspot для самых маленьких, часть 3: https и shaping

Соскучились уже, наверное?

Сегодня часть будет короткой, а посвящена она будет хранению учетных записей пользователей. Не всегда удобно заводить пользователей хотспота на каждом устройстве. А если устройств много? А если пользователей? А если хочется еще и каждому пользователю набор атрибутов – скорость там, приоритет, баланс (если доступ платный) ну и так далее.
Для управления аутентификацией и авторизацией люди и придумали RADIUS – Remote Authentication in Dial-In User Service. Изначально он обслуживал dial-up подключения (отсюда и dial-in в названии), а сейчас же его возможности гораздо шире.

В Linux одна из самых популярных реализаций это FreeRADIUS. Её то мы и будем использовать.

Ставим

как обычно, я использую debian 7 или 8, в данном случае не принципиально):
#sudo apt-get install freeradius freeradius-mysql freeradius-utils mysql-server php5-mysql php5

Не буду заострять внимания на установке mysql (разберетесь, думаю).

Создаем БД и пользователя:
#mysql -u root -p
CREATE DATABASE radius;
GRANT ALL PRIVILEGES ON radius.* TO radius@localhost IDENTIFIED BY "radiuspassword";
flush privileges;
exit

Теперь загружаем схему:
#mysql -uradius -p radius < /etc/freeradius/sql/mysql/schema.sql

Настраиваем

Настраиваем sql-параметры /etc/freeradius/sql.conf:
# Connection info:
server = "localhost"
port = 3306
login = "radius" # пользователь БД
password = "radiuspassword" # пароль к БД
radius_db = "radius" # название БД

В /etc/freeradius/radiusd.conf раскомментируем:
$INCLUDE sql.conf

Далее включаем авторизацию через sql. Для этого раскомментируем опцию sql в следующих файлах:
/etc/freeradius/sites-available/default (разделы authorize, accounting, session)
/etc/freeradius/sites-available/inner-tunnel (разделы authorize, session)

Теперь займемся клиентами. Клиенты для RADIUS-сервера - это устройства, которые отправляют ему информацию о подключениях (их еще называют NAS - Network Access Server).
/etc/freeradius/clients.conf:
client 192.168.0.1 {
secret = secret
nastype = other
}

Вместо 192.168.0.1 может быть и dns-имя (оно должно резолвиться сервером)
secret - это ключ, который сообщает клиент
nastype может быть, например, cisco, но почти всегда работает other, если не нужно поддержки специфических расширений

Делаем красиво

Теперь устанавливаем веб-админку. dialup admin, некогда "классическая" веб-админка для RADIUS ныне стара, как говно мамонта и страшна, как ядерная зима.
Мы воспользуемся daloRADIUS:

#sudo apt-get install php-pear php5-gd php5-mysql php-db php-dbg
#wget http://sourceforge.net/projects/daloradius/files/latest/download?source=files
#tar -zxvf daloradius-0.9-9.tar.gz
#mysql -uradius -p radius < daloradius-0.9-9/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

В файле конфигурации daloradius-0.9-9/library/daloradius.conf.php указываем параметры доступа к нашей БД
$configValues['CONFIG_DB_ENGINE'] = 'mysql';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_USER'] = 'radius';
$configValues['CONFIG_DB_PASS'] = 'radiuspassword';
$configValues['CONFIG_DB_NAME'] = 'radius';

Переносим папку в директорию веб-сервера
- попутно не забываем установить права.
- DNS-имя вида radius.example.net создаем по вкусу, но можно и так: http://example.com/radius
- папку daloradius-0.9-9 можно переименовать во что-нибудь более удобоваримое, сделать alias или vhost (по вкусу)
- удалить файлик update.php

Заходим в админку:
логин: administrator
пароль: radius

Добавить нового пользователя просто: Management -> New User. Заполняем имя, пароль (сейчас нас интересует Username Authentication). Можно оставить без шифрования или указать MD5 или Chap (зависит от того, в каком формате будет передавать пароль клиент). Группу можно на указывать. Нажимаем Apply - и вуаля!

На сегодня всё, а в следующем выпуске расскажу, что со всем этим счастьем делать

10 Comments

  1. Замечательный материал! Он заставил меня купить VDS хостинг на месяц, кстати 190руб стоит.
    Настроил радиус, далорадиус, осталось разобраться с подключением микротика к радиусу.
    Жду продолжения!

      1. Как работает авторизация (процесс изнутри) в какие таблицы радиус смотрим и чего своего мы можем добавить в запрос.

  2. Классная серия статьей! Когда будут следующие статьи? Как это все можно реализовать в openWRT?

    1. С OpenWRT не разбирался, но там точно есть своя версия хотспота (Coova вроде).
      Логика работы будет та же, но есть нюансы 😉
      Насчёт продолжения пока не знаю, слишком много работы.

Leave a Reply