Ограничение количества неудачных соединений
Спецификация
<​ограничение количества неудачных соединений​>::=
ALTER USER [имя пользователя]
LOGIN ERROR {LIMIT лимит ошибок | UNLIMITED
| TIMEOUT {NUMBER длительность блокировки
| AFTER количество ошибок}
| NO TIMEOUT}
<​лимит ошибок​>::=
целое положительное число
<​длительность блокировки​>::=
целое положительное число
<​количество ошибок​>::=
целое положительное число
Синтаксические правила
  1. Допустимые значения параметров:

    • <​лимит ошибок​>: от 1 до 100;

    • <​длительность блокировки​>: от 1 до 100;

    • <​количество ошибок​>: от 2 до 100.

Общие правила
  1. Конструкция ограничивает попытки несанкционированного доступа к БД (например, злоумышленник под известным ему именем пользователя БД пытается подобрать пароль).

  2. Параметры конструкции:

    • <​лимит ошибок​> задает количество последовательных неудачных попыток соединения с БД, после которых доступ к БД блокируется.

      alter user TEST login error limit 5;

      Чтобы разрешить данному пользователю вновь повторить попытки соединиться с БД, администратор СУБД (или любой пользователь с правами DBA) должен разблокировать доступ к БД с помощью команды:

      ALTER USER <​пользователь​> UNLOCK;
    • UNLIMITED – количество неудачных попыток соединения с БД не ограничено (опция по умолчанию);

    • TIMEOUT NUMBER <​длительность блокировки​> задает количество секунд, в течение которых все попытки соединения с БД после <​количества ошибок​> будут отвергаться, т.е. удачно соединиться с БД можно будет только по истечении указанного периода времени;

      alter user guest login error limit 3;
      username GUEST/111    // неправильный пароль
      username GUEST/222    // неправильный пароль
      username GUEST/333    // неправильный пароль
      username GUEST/'12345678'// правильный пароль, блокировка доступа
    • <​количество ошибок​> задает количество неудачных последовательных попыток соединения с БД, после которых временно блокируется доступ к БД (если задано значение <​длительность блокировки​>). При достижении лимита неудачных последовательных попыток соединения с БД в журнал linter.out добавляется сообщение вида:

      SECURITY WARNING: login "TEST" is locked after 4 unsuccessful login attempts;
    • NO TIMEOUT отменяет установленную <​длительность блокировки​>.

    Примечание

    Владелец БД не может быть заблокирован конструкцией ALTER USER LOGIN ERROR LIMIT, иначе может оказаться, что некоторые действия по администрированию БД выполнить не сможет уже никто и никогда. При необходимости можно воспользоваться временной блокировкой владельца БД по ALTER USER LOGIN ERROR TIMEOUT. При успешном соединении владельца БД после ряда неудачных последовательных попыток соединения в журнал linter.out добавляется сообщение вида:

    SECURITY WARNING: database owner's successful login after many previous unsuccessful logins
  3. Изменение текущего значения <​лимита ошибок​> как в сторону увеличения, так и в сторону уменьшения не сбрасывает (не обнуляет) значение счетчика неудачных попыток доступа к БД.

    Например, была выполнена команда LOGIN ERROR LIMIT 10. После 5 последовательных неудачных попыток была выполнена команда
    LOGIN ERROR LIMIT 2. Поскольку до этого уже было 5 неудачных попыток, то следующая неудачная попытка доступа приведет к блокировке пользователя.