🌐 Как остановить запросы с пустым или неправильным заголовком хоста

by itisgood

Обработайте домены, которые не определены в конфигурации, с помощью выделенного бэкэнда.

HAProxy версия.

$ sudo haproxy -v
HA-Proxy version 1.8.19-1 2019/02/12
Copyright 2000-2019 Willy Tarreau <willy@haproxy.org></willy@haproxy.org>
Создайте бэкэнд, выделенный для обработки доменов, которые не определены в конфигурации, и установите его в качестве бэкенда по умолчанию.
backend backend-no-match
  http-request deny deny_status 400
Пример конфигурации внешнего frontend и внутреннего backend  интерфейсов с использованием этого решения.
frontend web-frontend
  bind :80
  #bind :443 ssl crt /etc/ssl/cert/  

  mode http

  acl is-production hdr_dom(host) -i www.example.org
  acl is-staging    hdr_dom(host) -i staging.example.org
  acl is-monitoring hdr_dom(host) -i monitoring.example.org

  use_backend backend-local-production if is-production
  use_backend backend-local-staging    if is-staging
  use_backend backend-local-monitoring if is-monitoring
  
  default_backend backend-no-match


backend backend-local-production
  server production-a 192.0.2.11:80
  server production-b 192.0.2.12:80

backend backend-local-staging
  server staging-a 192.0.2.21:80

backend backend-local-monitoring
  server monitoring 192.0.2.240:80

backend backend-no-match
  http-request deny deny_status 400
Эта конфигурация немедленно остановит запросы с пустым или неправильным заголовком хоста.
$ curl -H "Host: test.example.org" http://192.0.2.5
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>
$ curl http://192.0.2.5
<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>
Рекомендуется использовать этот тип определения, поскольку в дальнейшем это избавит вас от проблем.

You may also like

Leave a Comment