Вопрос или проблема
Как сделать аутентификацию в 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 или сообществу за дополнительной помощью.