Freeradius доступ в рабочие часы и в рабочие дни

Вопрос или проблема

Как сделать аутентификацию в Freeradius только в рабочие часы и в рабочие дни. Я думал, что это можно сделать через Policy.d, написав политику. Но я не понимаю, как это сделать. Я пытался сделать это

Рабочие_Часы {
        если (час >= 12 && час < 20) {
            обновить контроль {
                Auth-Type := "Accept"
            }
        } еще {
            обновить контроль {
                Auth-Type := "Reject"
            }
        }
}

Это не работает.

Я хочу создать группы в AD Samba ACL_Allow_24, ACL_Allow_Workhours. Люди из этих AD групп будут допускаться постоянно и только в рабочие часы. Как это сделать?

Ответ или решение

Чтобы настроить аутентификацию в FreeRADIUS только во время рабочего дня и в рабочие часы, необходимо создать специальную политику в policy.d. Давайте рассмотрим, как это сделать правильно, учитывая ваши требования по группам Active Directory (AD) и временным ограничениям.

Шаг 1: Настройка групп в Active Directory

Сначала убедитесь, что у вас есть необходимые группы в AD Samba: ACL_Allow_24 и ACL_Allow_Workhours. Ваша цель заключается в том, чтобы члены группы ACL_Allow_24 имели доступ в любое время, а члены группы ACL_Allow_Workhours — только в рабочие часы.

Шаг 2: Определение рабочего времени

Рабочие часы, как правило, с 9:00 до 18:00 (или с 12:00 до 20:00 по вашему примеру). Важно определить эти часы в вашей конфигурации.

Шаг 3: Создание политики в FreeRADIUS

Перейдите в директорию policy.d вашего FreeRADIUS и создайте новый файл, например business_hours, где вы будете определять политику аутентификации. Вот пример, который может помочь вам настроить доступ:

business_hours {
    update control {
        Auth-Type := "Reject"
    }

    if (User-Name =~ ".*@yourdomain.com") {
        if (LDAP-Group =~ "ACL_Allow_24") {
            update control {
                Auth-Type := "Accept"
            }
        } else if (LDAP-Group =~ "ACL_Allow_Workhours") {
            # Получение текущего часа и дня недели
            update control {
                Current_Hour := `%{expr: %{control:request.start} / 3600 }`
                Current_Weekday := `%{expr: %{control:request.start} / 86400 % 7 }`
            }

            # Проверяем, является ли это рабочим временем в рабочие дни
            if (Current_Weekday >= 1 && Current_Weekday <= 5) { # Пн - Пт
                if (Current_Hour >= 9 && Current_Hour < 18) { # Рабочие часы
                    update control {
                        Auth-Type := "Accept"
                    }
                }
            }
        }
    }
}

Шаг 4: Подключение политики к конфигурации FreeRADIUS

После создания политики не забудьте подключить ее в вашем основном файле конфигурации FreeRADIUS (например, sites-enabled/default). В секции authorize добавьте вызов вашей политики:

authorize {
    ...
    business_hours
    ...
}

Шаг 5: Тестирование конфигурации

После внесения всех изменений, перезапустите FreeRADIUS и проведите тестирование, чтобы убедиться, что все работает как задумано. Используйте radtest для симуляции аутентификации.

Заключение

Таким образом, вы сможете контролировать доступ пользователей в FreeRADIUS согласно заданным временным рамкам. Обратите внимание на то, что вам следует внимательно следить за форматом времени и тем, как данные извлекаются из запроса аутентификации.

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

Оцените материал
Добавить комментарий

Капча загружается...