Как реализовать блокировку пользователя в 1С при неверном вводе пароля

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Требования служб информационной безопасности часто включают защиту учетных записей от перебора паролей (брутфорса). Стандартная задача — ограничить число попыток ввода пароля (например, до трех) и временно или постоянно блокировать доступ при превышении лимита. Рассмотрим подробно различные варианты решения этой задачи: от встроенных возможностей платформы «1С:Предприятие» до анализа журнала регистрации и сквозной доменной авторизации.

Вариант 1. Штатные параметры политики аутентификации платформы 1С

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

Настройка выполняется администратором системы следующим образом:

  1. Откроем базу в режиме «Конфигуратор».
  2. Перейдем в главное меню «Администрирование» → «Параметры информационной базы».
  3. В блоке параметров «Аутентификация» зададим необходимые ограничения:
    • Максимальное количество неуспешных попыток аутентификации — установим значение 3.
    • Длительность блокировки при превышении количества неуспешных попыток (в секундах) — укажем интервал задержки (например, 300 секунд, то есть 5 минут).
    • Коды дополнения имени пользователя при блокировке аутентификации — специальный суффикс, позволяющий администратору авторизоваться даже при активной блокировке.

Эти параметры можно настраивать и программно через функции ПолучитьПараметрыИнформационнойБазы() и УстановитьПараметрыИнформационнойБазы(). Проанализируем пример кода для программной установки парольной политики:


ПараметрыИБ = ПолучитьПараметрыИнформационнойБазы();
ПараметрыИБ.Вставить("МаксимальноеКоличествоНеуспешныхПопытокАутентификации", 3);
ПараметрыИБ.Вставить("ДлительностьБлокировкиПриПревышенииКоличестваНеуспешныхПопыток", 300);
УстановитьПараметрыИнформационнойБазы(ПараметрыИБ);

Важный нюанс безопасности: чтобы исключить ситуацию умышленной блокировки чужой учетной записи (когда один сотрудник намеренно вводит неверный пароль под логином коллеги), снимем у пользователей признак Показывать в списке выбора (ПоказыватьВСпискеВыбора = Ложь). В этом случае имя пользователя потребуется вводить вручную, что существенно усложнит злонамеренные действия.

Вариант 2. Использование доменной аутентификации (Active Directory)

Если в организации развернут домен Windows / Active Directory или FreeIPA, наиболее надежным и безопасным решением будет делегирование аутентификации операционной системе. В этом случае аутентификация 1С отключается, а вход выполняется по логину текущего сеанса ОС.

Преимущества такого подхода:

  1. Политики блокировки учетных записей (число попыток, время блокировки, сложность пароля) централизованно настраиваются в доменных групповых политиках (GPO).
  2. Пользователю не требуется запоминать и вводить отдельный пароль для входа в 1С.
  3. При увольнении или блокировке сотрудника в домене доступ ко всем базам 1С прекращается мгновенно.

Для настройки в карточке пользователя информационной базы включим флаг «Аутентификация операционной системы» и укажем путь вида DOMAIN\UserName.

Вариант 3. Анализ журнала регистрации через регламентное задание

Если требуется жестко запрещать вход пользователю на программном уровне (например, отключать признак ВходВПрограммуРазрешен в типовых конфигурациях с БСП) при обнаружении атак, настроим фоновый мониторинг журнала регистрации.

Платформа фиксирует неудачные попытки входа специальным событием Сеанс. Ошибка аутентификации. Разберем по шагам создание регламентной процедуры проверки:

  1. Создадим регламентное задание с расписанием запуска раз в 1–2 минуты.
  2. С помощью метода ВыгрузитьЖурналРегистрации() отберем события с ошибками аутентификации за последние несколько минут.
  3. Сгруппируем ошибки по именам пользователей. Если количество попыток превысило 3, деактивируем учетную запись пользователя или снимем флаг аутентификации 1С.

Посмотрим на пример реализации такого алгоритма:


// Период анализа - последние 10 минут
ИнтервалПроверки = 600; 
ДатаНачала = ТекущаяДатаСеанса() - ИнтервалПроверки;

ФильтрЖурнала = Новый Структура;
ФильтрЖурнала.Вставить("ДатаНачала", ДатаНачала);
ФильтрЖурнала.Вставить("Событие", "_$Session$_.AuthenticationError");

ТаблицаОшибок = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(ТаблицаОшибок, ФильтрЖурнала, "Пользователь, ИмяПользователя, Дата");

// Подсчитаем количество ошибок для каждого имени
СчетчикПопыток = Новый Соответствие;
Для Каждого Запись Из ТаблицаОшибок Цикл
    Имя = ВРег(СокрЛП(Запись.ИмяПользователя));
    Если ПустаяСтрока(Имя) Тогда
        Продолжить;
    КонецЕсли;
    
    ТекущееЧисло = СчетчикПопыток[Имя];
    Если ТекущееЧисло = Неопределено Тогда
        СчетчикПопыток.Вставить(Имя, 1);
    Иначе
        СчетчикПопыток.Вставить(Имя, ТекущееЧисло + 1);
    КонецЕсли;
КонецЦикла;

// Блокируем пользователей, превысивших лимит
Для Каждого КлючИЗначение Из СчетчикПопыток Цикл
    Если КлючИЗначение.Значение >= 3 Тогда
        ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(КлючИЗначение.Ключ);
        Если ПользовательИБ <> Неопределено И ПользовательИБ.АутентификацияСтандартная Тогда
            // Отключаем вход по стандартному паролю
            ПользовательИБ.АутентификацияСтандартная = Ложь;
            ПользовательИБ.Записать();
            
            ЗаписьЖурналаРегистрации("Безопасность.БлокировкаПользователя",
                УровеньЖурналаРегистрации.Предупреждение,,,
                СтрШаблон("Пользователь %1 заблокирован из-за превышения числа попыток входа.", КлючИЗначение.Ключ));
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Вариант 4. Настройки политик входа в Библиотеке стандартных подсистем (БСП)

В современных конфигурациях (1С:ERP, КА, УТ, ЗУП, БП) подсистема управления пользователями БСП предоставляет централизованные настройки входа.

В режиме «1С:Предприятие» перейдем в раздел «Администрирование» → «Настройки пользователей и прав» → «Настройки входа». Здесь доступны следующие параметры:

  1. Минимальная длина и сложность пароля.
  2. Срок действия пароля с требованием обязательной периодической смены.
  3. Запрет на использование ранее установленных паролей.

При совмещении штатных параметров информационной базы (ПараметрыИБ) и политик сложности паролей БСП система обеспечивает надежный уровень защиты без изменения исходного кода конфигурации.

← На главную