Может ли кто-нибудь помочь мне разобраться в настройке защиты от DDoS-атак HAProxy?

Может ли кто-нибудь помочь мне разобраться в настройке защиты от DDoS-атак HAProxy?

Я сейчас время от времени использую HAP, а теперь пытаюсь настроить защиту от DDoS-атак на каждом внешнем интерфейсе, чтобы блокировать соединение на 5 минут, если оно получает более 200 запросов в секунду с одного и того же исходного IP-адреса, принимая во внимание тот факт, чтомножественные исходные IP-адресаможет/будет использоваться для запуска атаки. Я посмотрел различные блоги и посты в Интернете, и чем больше я вижу, тем больше я запутываюсь в правильной конфигурации, которая мне нужна для моей цели.

Ниже приведены все конфигурации, которые я собрал на данный момент:

backend ip_rates_abuse
  stick-table type ip size 200k expire 5m store gpc0,conn_cur,conn_rate(10s),http_req_rate(10s),http_err_rate(10s)

frontend fe_dev_mydomain_com
  .....
  ## ----- TCP Layer DDoS protection ------------ ##
  timeout       tarpit 15s
  tcp-request   inspect-delay 5s
  #
  tcp-request   content reject if { src_conn_rate(ip_rates_abuse) ge 200 }
  tcp-request   content reject if { src_conn_cur(ip_rates_abuse) ge 500 }
  tcp-request   content reject if { src_get_gpc0(ip_rates_abuse) gt 0 }
  tcp-request   session track-sc0 src table ip_rates_abuse
  #
  ## ----- Application Layer DDoS protection ------------ ##
  acl           too_many_reqs sc_http_req_rate(0) gt 200
  http-request  track-sc1 src table ip_rates_abuse
  http-request  set-var(txn.ratelimited) str(RATE-LIMITED) if too_many_reqs
  http-request  capture var(txn.ratelimited) len 12
  http-request  deny deny_status 429 if too_many_reqs
  .....
  use_backend   be_waf if no_tarpit || tarpit_max_capacity

и затем в бэкэнде:

backend be_waf
  acl          too_many_clicks sc1_http_req_rate gt 200
  acl          mark_as_abuser sc0_inc_gpc0(ip_rates_abuse) gt 0
  tcp-request  content track-sc1 src table ip_rates_abuse
  tcp-request  content reject if too_many_clicks mark_as_abuser
  .....

Я почти уверен, что не понял ряд вещей, но правильно ли я сделал? Мне кажется, что это немного перебор, и, похоже, тоже не работает. Может ли кто-нибудь подсказать мне минимальную конфигурацию, которая мне нужна для достижения моей цели, пожалуйста?

Связанный контент