Как настроить авторизацию на Freeradius для captive portal с разделением на user и admin?

Ссылка скопирована
1 ответ

Всем привет, я пытаюсь настроить авторизацию freeradius для своего captive portal. Я использую:
в качестве WIFI роутера openwrt-22.03 + coova-chilli;
freeradius 3 + postgresql;

radius=# dt
List of relations
Schema | Name | Type | Owner
--------+---------------+-------+----------
public | macs | table | postgres
public | nas | table | postgres
public | nasreload | table | postgres
public | radacct | table | postgres
public | radcheck | table | postgres
public | radgroupcheck | table | postgres
public | radgroupreply | table | postgres
public | radpostauth | table | postgres
public | radreply | table | postgres
public | radusergroup | table | postgres
(10 rows)

radius=# select * from radcheck;
id | username | attribute | op | value
-----+-------------------------+--------------------+----+-----------
326 | admin | Cleartext-Password | := | admin
327 | magicbook | Cleartext-Password | := | 33467784

radius=# select * from radusergroup;
id | username | groupname | priority
----+-----------+-----------+----------
8 | admin | admin | 0
9 | magicbook | user | 0
(2 rows)

radius=# select * from radgroupreply;
id | groupname | attribute | op | value
----+-----------+--------------+----+---------------------
1 | user | Service-Type | := | Framed-User
2 | admin | Service-Type | := | Administrative-User

radius=# select * from macs;
id | username | callingstationid
----+-----------+-------------------
25 | admin | 8C-7A-3D-90-07-08
27 | magicbook | 7C-C2-C6-1F-49-EE
(2 rows)

captive portal я создаю сам на языке js - https://github.com/Pavewleln/captive_portal. Сайт на html/css/js
также у меня есть свой сервер на Nodejs + expressjs, который обрабатывает все что приходит с сайта и направляет в freeradius и наоборот.

Не спрашивайте почему именно такие технологии, не я выбирал, так нужно.

У меня вроде как настроена самая простая авторизация, просто по username + password. У меня так же настроена авторизация дополнительно по MAC адресу, но в данный момент она отключена.
Настраивал по этому источнику - https://gist.github.com/nasirhafeez/6669b24aab0bda...

Я хочу настроить авторизацию для пользователя обычного и для админа. Я так понял нужно испольозвать группы, либо просто в radcheck класть еще аттрибут, по которму можно будет проверить. Но когда я кладу в radusergroup чтолибо, то username , к которму привязана данная группа, больше не будет входить в систему.

RADIUS request: {
[1] code: 'Access-Request',
[1] secret: 'testing123',
[1] attributes: [
[1] [ 'User-Name', 'magicbook' ],
[1] [ 'User-Password', '33467784' ],
[1] [ 'Calling-Station-Id', '8C-7A-3D-90-07-08' ]
[1] ]
[1] }
[1] RADIUS response: {
[1] code: 'Access-Reject',
[1] identifier: 137,
[1] length: 36,
[1] authenticator: ,
[1] attributes: { 'Reply-Message': 'Wrong Password' },
[1] raw_attributes: [ [ 18, ] ]
[1] }

Это пример что мне приходит с сайта, и что мне отвечает freeradius. ( Код можно посмотреть вот здесь https://github.com/Pavewleln/captive_portal (server/controllers/user.controller.ts)).

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

Как мне это исправить, как правильно настроить авторизацию, а также авторизацию админа и user.
Если есть другие варианты настройки, то я готов отказаться от этой.
Был бы безумно благодарен, если бы ктонибудь скинул пример похожего captive portal, вплане тоже на nodejs.

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Ирина WP Ответ

Для настройки авторизации на Freeradius для captive portal с разделением на user и admin, вам потребуется выполнить следующие шаги:

1. Установка Freeradius:
- Установите Freeradius на ваш сервер с помощью пакетного менеджера вашей операционной системы (например, apt-get install freeradius).

2. Настройка базы данных:
- Создайте базу данных для хранения пользователей и администраторов.
- Добавьте таблицы для пользователей и администраторов, а также необходимые поля (например, username, password, role).
- Заполните таблицы данными пользователей и администраторов.

3. Настройка Freeradius:
- Отредактируйте файл настройки Freeradius (обычно находится в /etc/freeradius/radiusd.conf) и добавьте соответствующие настройки для вашей базы данных.
- Создайте файлы конфигурации для авторизации пользователей и администраторов, используя модуль sql.
- Настройте доступ к captive portal для пользователей и администраторов, используя соответствующие ACL и правила.

Пример настройки авторизации на Freeradius для пользователей (user) и администраторов (admin) с использованием базы данных MySQL:

authorize {
    sql
    if (User-Name == "%{User-Name}" && User-Password == "%{User-Password}") {
        update control {
            Auth-Type := Accept
        }
    }
}
 
authenticate {
    Auth-Type SQL {
        sql
    }
}

authorize { sql if (User-Name == "%{User-Name}" && User-Password == "%{User-Password}") { update control { Auth-Type := Accept } } } authenticate { Auth-Type SQL { sql } }

4. Тестирование:
- Проверьте работоспособность настройки, попробовав авторизоваться как пользователь и как администратор.
- Убедитесь, что captive portal открывается только для пользователей или администраторов, в зависимости от их роли.

После выполнения всех этих шагов, вы сможете успешно настроить авторизацию на Freeradius для captive portal с разделением на пользователей и администраторов. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно