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

Каким образом можно реализовать ограничение по времени, при нескольких неудачных попытках аутентификации пользователя к базе данных PostgreSQL? Допустим пользователь 5 раз ввел неправильный пароль, как сделать так, чтобы для следующей попытки ему пришлось подождать, к примеру, 3 минуты. Реализация планируется с целью защиты БД от атак "грубой силой".


Ответы (1 шт):

Автор решения: Мелкий

Никак штатными средствами самой СУБД.

На уровне расширения такую логику возможно реализовать через ClientAuthentication_hook функцию обратного вызова. Смотрите крошечный contrib auth_delay как пример самодостаточного кода расширения.

Возможно, реализуемо сторонними средствами вроде fail2ban того же.


Не имеет смысла защищать базу от брутфорса пароля. И я серьёзно. Если вам захотят навредить - открытого в мир порта базы уже достаточно самого по себе для проведения DoS атаки. Да, речь даже не про DDoS. Флудом на открытие соединения кладётся элементарно.

База не должна быть доступна по сети откуда не надо.

→ Ссылка