Как сделать ограниченное количество попыток в c

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

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

Справочники

Параметр порогового значения блокировки учетной записи определяет количество неудачных попыток входа, из-за чего учетная запись пользователя будет заблокирована. Заблокированная учетная запись не может использоваться до сброса или до истечения срока действия указанного параметром политики блокировки учетной записи. Можно задать значение от 1 до 999 неудачных попыток регистрации или указать, что учетная запись никогда не будет заблокирована, установив значение 0. Если порог блокировки учетной записи установлен на число больше нуля, продолжительность блокировки учетной записи должна быть больше или равна значению счетчика блокировки учетной записи сброса после.

Атаки паролей brute force можно автоматизировать, чтобы попробовать тысячи или даже миллионы комбинаций паролей для любых или всех учетных записей пользователей. Ограничение количества неудачных входов, которые можно выполнить, практически исключает эффективность таких атак. Однако важно отметить, что атака с отказом в обслуживании (DoS) может быть выполнена на домене с настроенным порогом блокировки учетной записи. Вредоносный пользователь может программным образом предпринять серию атак паролей на всех пользователей в организации. Если количество попыток превышает значение порогового значения блокировки учетной записи, злоумышленник потенциально может заблокировать каждую учетную запись.

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

Возможные значения

Можно настроить следующие значения для параметра порогового значения блокировки учетной записи:

  • Определенный пользователем номер от 0 до 999
  • Не определено

Поскольку уязвимости могут существовать, когда это значение настроено, а когда оно отсутствует, организации должны взвешивать выявленные угрозы и риски, которые они пытаются смягчить. Сведения об этих параметрах см. в статье Countermeasure.

Рекомендации

Выбранный порог — это баланс между оперативной эффективностью и безопасностью и зависит от уровня риска организации. Чтобы разрешить ошибки пользователей и предотвратить грубые силовые атаки, Windows базовые показатели безопасности рекомендуют значение 10 может быть приемлемой отправной точкой для вашей организации.

Как и в случае с другими настройками блокировки учетных записей, это значение является скорее ориентиром, чем правилом или рекомендациями, так как "один размер не подходит всем". Дополнительные сведения см. в перенастройке блокировки учетной записи.

Реализация этого параметра политики зависит от операционной среды; векторы угроз, развернутые операционные системы и развернутые приложения. Дополнительные сведения см. в статье Implementation considerations in this article.

Местонахождение

Конфигурация компьютера\Windows Параметры\Security Параметры\Account Policies\Account Lockout Policy

Значения по умолчанию

В следующей таблице приведены фактические и действующие значения по умолчанию для этой политики. Значения по умолчанию также перечислены на странице свойств для параметра политики.

Тип сервера или объект групповой политики (GPO) Значение по умолчанию
Политика домена по умолчанию 0 недействительных попыток регистрации
Политика контроллера домена по умолчанию Не определено
Параметры по умолчанию отдельного сервера 0 недействительных попыток регистрации
Эффективные параметры контроллера домена по умолчанию 0 недействительных попыток регистрации
Параметры сервера-участника по умолчанию 0 недействительных попыток регистрации
Эффективные параметры по умолчанию GPO на клиентских компьютерах 0 недействительных попыток регистрации

Управление политикой

В этом разделе описываются функции и средства, доступные для управления этим параметром политики.

Требования к перезапуску

Нет. Изменения в этом параметре политики становятся эффективными без перезапуска компьютера при локальном сбережении или распространении через групповую политику.

Соображения реализации

Реализация этого параметра политики зависит от операционной среды. Рассмотрим векторы угроз, развернутые операционные системы и развернутые приложения. Пример:

Вероятность кражи учетной записи или атаки doS основана на разработке безопасности для систем и среды. Установите порог блокировки учетной записи с учетом известного и предполагаемого риска этих угроз.

При согласовании типов шифрования между клиентами, серверами и контроллерами домена протокол Kerberos может автоматически повторить попытки входа учетной записи, которые учитываются в пределах пороговых значений, установленных в этом параметре политики. В средах, где развернуты различные версии операционной системы, увеличивается число переговоров по типу шифрования.

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

Дополнительные сведения о базовых рекомендациях Windows безопасности для блокировки учетных записей см. в дополнительных сведениях о настройке блокировки учетной записи.

Вопросы безопасности

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

Политика порогового уровня блокировки будет применяться как к локальным пользователям компьютеров-членов, так и к пользователям домена, чтобы разрешить смягчение проблем, описанных в статье "Уязвимость". Встроенная учетная запись администратора, в то время как учетная запись с высокой привилегией, имеет другой профиль риска и исключена из этой политики. Это гарантирует отсутствие сценария, в котором администратор не может войти для устранения проблемы. В качестве администратора доступны дополнительные стратегии смягчения, например надежный пароль. См. также приложение D. Защита Built-In учетных записей администратора в Active Directory.

Уязвимость

Атаки паролей грубой силы могут использовать автоматизированные методы, чтобы попробовать миллионы комбинаций паролей для любой учетной записи пользователя. Эффективность таких атак может быть практически устранена, если ограничить количество неудачных попыток войти, которые могут быть выполнены. Однако doS-атака может выполняться на домене с порогом блокировки учетной записи. Злоумышленник может программным образом предпринять серию атак паролей на всех пользователей организации. Если количество попыток превышает порог блокировки учетной записи, злоумышленник может заблокировать каждую учетную запись без особых привилегий или проверки подлинности в сети.

Автономные атаки паролей не противодействовать этому параметру политики.

Противодействие

Так как уязвимости могут существовать, когда это значение настроено, а не настроено, определяются два различных контрмеры. Организации должны взвешивать выбор между ними, исходя из выявленных угроз и рисков, которые они хотят смягчить. Два варианта противодействия:

Настройка порогового значения блокировки учетной записи до 0. Эта конфигурация гарантирует, что учетные записи не будут заблокированы, и предотвратит doS-атаку, которая намеренно пытается заблокировать учетные записи. Эта конфигурация также помогает уменьшить количество вызовов службы поддержки, так как пользователи не могут случайно заблокировать свои учетные записи. Поскольку это не предотвращает грубую силовую атаку, эту конфигурацию следует выбирать только в том случае, если оба следующих критерия явно выполнены:

  • Параметр политики паролей требует, чтобы у всех пользователей были сложные пароли из восьми или более символов.
  • Существует надежный механизм аудита, который оповещает администраторов о сбойных входных записях в среде.

Настройте **** параметр пороговой политики блокировки учетной записи на достаточно высокое значение, чтобы предоставить пользователям возможность случайно неправильно вводить пароль несколько раз до блокировки учетной записи, но убедитесь, что грубая атака пароля по-прежнему блокирует учетную запись.

Windows безопасности рекомендуется настроить пороговое значение в 10 недействительных попыток входа, что предотвращает случайные блокировки учетных записей и уменьшает число вызовов службы поддержки, но не предотвращает doS-атаку.

Использование такого типа политики должно сопровождаться процессом разблокирования заблокированных учетных записей. Эта политика должна быть реализована при необходимости, чтобы уменьшить массовые блокировки, вызванные атакой на системы.

Возможное влияние

Если этот параметр политики включен, заблокированная учетная запись не может быть сброшена администратором или до истечения срока блокировки учетной записи. Включение этого параметра, скорее всего, создает ряд дополнительных вызовов службы поддержки.

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

Если настроить этот параметр политики на число больше 0, злоумышленник может легко заблокировать любые учетные записи, для которых известно имя учетной записи. Эта ситуация особенно опасна, учитывая, что для блокировки учетных записей не требуется никаких учетных данных, кроме доступа к сети.

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

limit-password-attempts-windows-10

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

Ограничение количества попыток ввода пароля через командную строку

Если вы захотите отключить блокировку входа при неверном вводе пароля, то используйте эту команду: net accounts /lockoutthreshold:0

Ограничение количества попыток ввода пароля через редактор локальной групповой политики

Внимание: данный способ не работает в Windows 10 Домашняя, т.к. в этой операционной системе нет редактора локальной групповой политики.

О бойти локальный системный пароль администратора или пользователя Windows для профессионала всё равно что раз плюнуть, ведь он точно знает, что нужно делать и какие инструменты для этого необходимо использовать. А вот любопытный профан, желающий получить доступ к чужому компьютеру, наверняка займётся обычным перебором, пытаясь таким образом угадать пароль. Причем заниматься этим неблаговидным делом он может сколько угодно, так как никаких ограничений для повторного ввода пароля в Windows не установлено.

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

Никаких сторонних утилит вам для этого не понадобиться. Для установки ограничений мы будем использовать редактор политик безопасности. Запустите от имени администратора консоль CMD выполните команду secpol.msc.

secpol.msc

Политика блокировки учётной записи

Пороговое значение блокировки

Пороговое значение блокировки

После этого вам станут доступны настройки временного интервала между неудачными попытками ввода пароля. По умолчанию этот период времени, в течение которого повторный ввод пароля будет недоступен, равняется получасу, вы же можете установить его больше или меньше.

Настройки временного интервала

Также вы можете задать время блокировки учётной записи.

Время блокировки учётной записи

Рекомендуем устанавливать его равным периоду времени до сброса счетчика блокировки. Если это значение установить равным 0, учётная запись останется заблокированной до тех пор, пока её не разблокирует сам администратор.

Я хочу ограничить неудачные попытки входа в систему. Например, если конкретный пользователь попытается войти в систему с неправильным именем пользователя или паролем 4 раза, я должен показать CAPTCHA в 4-й раз вместо блокировки в течение определенного времени и продолжать показывать CAPTCHA, если он не поставляет действительное имя пользователя и пароль. После того, как пользователь успешно выполнил вход в систему, попытка входа в систему сбрасывается в ZERO.

Является ли идея проверки имени пользователя вместо IP-адреса ОК в точке безопасности? Можно ли реализовать этот подход без использования базы данных ?, так как мне кажется, мне не нужно хранить время, потому что я просто покажу recaptcha? Пожалуйста, дайте свое мнение.

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

Что-то вроде того.

РЕДАКТИРОВАТЬ:

Это действительно старый код, и я вижу некоторые проблемы с ним сейчас. Но, по крайней мере, вы всегда должны использовать PDO (подготовленные инструкции) для вставки данных в вашу базу данных.

Что вы защищаете?

Случайный пользовательский контент, имя пользователя.

Банковская информация (я сомневаюсь.) Или другие конфиденциальные данные, IP может быть в порядке, если вы используете диапазоны.

Вы спрашиваете, как это сделать или что вы должны использовать?

Вам нужно время, как бы вы определили, продлилась ли попытка входа в систему? Если я не смогу войти в систему 4 раза в течение 10-летнего промежутка времени, я бы заблокирован. Вы хотите заблокировать тех, кто пытается выполнить несколько попыток входа в течение короткого промежутка времени.

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

Чтобы разработать, какую безопасность реализовать: комбинация !

Объедините используемое имя пользователя и IP-адрес и сохраните их в своей базе данных.

  1. Используйте попытки входа в ваше имя пользователя, чтобы защитить своих пользователей от попыток.
  2. Используйте информацию IP-адреса, чтобы наблюдать только за обнаружением, и при необходимости предпринимайте действия.

Вы должны сохранить попытки в базе данных и проверить пользователя.

Лучший способ сделать это – использовать базы данных.

Вам необходимо создать отдельную таблицу в вашей базе данных, в которой будут храниться три переменные:

(a) IP-адрес (где пользователь пытается войти в систему) (b) Количество попыток входа в систему (c) дата / время (или: текущая метка времени)

Единственная проблема с этим подходом заключается в первой переменной: IP-адрес

Что делать, если человек находится в интернет-кафе? Или используя общественный Wi-Fi? Или горячая точка? Или, школа? офис? и т. д.

Если вы заблокируете IP-адрес, это повлияет на всех, кто пытается войти на ваш сайт с этого места.

Это не проблема, если ваш веб-сайт касается чего-то вроде банка или военной установки или Пентагона.

Но если ваш сайт – это бизнес (покупка и продажа, игра, что угодно), то блокирование определенного адреса будет только мочиться у ваших клиентов!

Читайте также: