Назад | Перейти на главную страницу

Заблокировать IP-адреса на некоторое время на HAProxy

Я хотел бы занести в черный список IP-адреса, которые рассылают спам по определенному URL-адресу, но только на определенный период времени. допустим 10 минут.

Я подумываю создать таблицу стикеров, сохранить IP-адрес src и увеличить счетчик. Как только счетчик превышает X попыток, я это отрицаю.

В stick-table есть параметр истечения срока, но я заметил, что, пока в него записаны новые данные, счетчик истечения срока действия сбрасывается. Таким образом, параметр истечения срока действия распространяется на всю таблицу. Таким образом, записи никогда не истекают, пока ничего не будет добавлено в течение 10 минут.

Есть ли способ добиться такой временной блокировки?

Таблицы Stick на самом деле имеют срок действия, но он подсчитывается / рассчитывается для каждой записи, а не для таблицы.

По документы:

истекать
Определяет максимальную продолжительность записи в таблице с момента ее последнего создания, обновления или сопоставления. Задержка истечения срока действия определяется с использованием стандартного формата времени, как и различные тайм-ауты. Максимальная продолжительность - чуть более 24 дней. См. Раздел 2.2 для получения дополнительной информации. Если эта задержка не указана, сеанс не истечет автоматически, но старые записи будут удалены после заполнения. Убедитесь, что не использовали параметр «nopurge», если не указана задержка срока действия.

Так что вы можете использовать их для того, что хотите.

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

По сути, вам просто нужно несколько строк, чтобы он работал

stick-table type ip size 100k expire 10m store conn_rate(3s)
tcp-request connection reject if { src_conn_rate ge 10 }
tcp-request connection track-sc1 src

куда conn_rate(3s) следует изменить, чтобы отразить скорость подключения, которая должна вызвать временное занесение в черный список.