NGINX: 무조건적인 포괄적 리디렉션을 실행하는 서버에서 명백한 가짜 트래픽을 처리하는 방법은 무엇입니까?

NGINX: 무조건적인 포괄적 리디렉션을 실행하는 서버에서 명백한 가짜 트래픽을 처리하는 방법은 무엇입니까?

NGinx를 구성하는 동안 다소 흥미로운 문제를 발견했습니다. 저는 NGinx 1.13.8을 사용하여 HTTPS를 통해 모든 것을 제공하는 작은 웹 서버를 운영하고 있습니다. 이러한 구성의 일반적인 경우와 마찬가지로 포트 80에서 수신 대기하고 이를 달성하기 위해 다음 구성 조각을 사용하여 동일한 URI를 사용하여 포트 443에 대한 모든 요청에 ​​대한 포괄적 리디렉션을 발행합니다.

location / {
    return 301 https://$server_name$request_uri;
}

이것은 그 자체로 내가 필요한 것에 잘 작동했습니다. 그러나 분명히 가짜이고 쉽게 식별할 수 있는 트래픽이 발생하기 시작했습니다(약 5분 동안 임의의 기간 동안 겉으로 보기에 임의의 IP에서 수천 개의 새로운 연결을 얻었으며 모두 User-Agent 헤더에 공통 접두사가 포함되어 있었습니다. 동일한 요청( HEAD / HTTP/1.1), 모두 시간 초과될 때까지 연결을 열어두고 모두 리디렉션을 따르지 않습니다.

이상적으로는 낭비되는 리소스의 양을 최소화하기 위해 이러한 연결이 식별되는 즉시 닫고 싶습니다. 현재 이를 위해 수정된 구성 조각을 생각해 냈습니다.

location / {
    return 301 https://$server_name$request_uri;
}

location = / {
    if ($method = "HEAD") {
        set $drop M;
    }
    if ($http_user_agent ~* "Dalvik/2.1.0 (Linux U ") {
        set $drop "U${drop}";
    }
    if ($drop = "UM") {
        return 444;
    }
}

그러나 이것은 작동하지 않는 것 같습니다(로그에 여전히 301을 완전히 반환하는 이러한 트래픽 급증이 표시됨). 또한 첫 번째 위치 내에서 덜 구체적인 일치(User-Agent 헤더 또는 메서드의 포괄적인 일치)를 시도했습니다. 차단했는데 그것도 작동하지 않는 것 같습니다.

그래서 두 가지 질문이 있습니다.

  1. 왜 이것이 작동하지 않습니까?
  2. 방화벽에서 심층 패킷 검사를 수행하지 않고도 이 트래픽을 처리할 수 있는 더 좋은 방법이 있습니까?

관련 정보