HTTP/1.0으로 이루어진 lighttpd의 요청을 차단하고 HTTP/1.1만 허용합니다.

HTTP/1.0으로 이루어진 lighttpd의 요청을 차단하고 HTTP/1.1만 허용합니다.

PHP로 생성된 웹페이지를 제공하는 lighttpd 웹 서버가 있습니다. 이 서버는 현재 DDoS 봇 공격으로 인해 많은 트래픽을 겪고 있는데, 이를 차단하거나 완화할 수 있는 방법을 찾고 있습니다.

내가 아는 한 lighttpd는 원격 IP 주소를 통한 요청을 차단할 수 있는 가능성을 제공합니다.

$HTTP["remoteip"] == "12.34.56.0/24" {
  url.access-deny = ( "" )
}

으로 들어가면 lighttpd.confIP 범위 12.34.56.0 - 12.34.56.255에서 들어오는 모든 요청이 차단됩니다.

그러나 DDoS의 특성상 단일 IP 주소나 범위는 매우 자주 변경되므로 차단하는 것이 불가능합니다.

액세스 로그를 조사한 결과 봇의 요청 대부분은 이전 HTTP/1.0 프로토콜을 사용하는 것으로 보이지만 대부분의 합법적인 트래픽은 HTTP/1.1을 사용하는 것으로 나타났습니다.

그래서 내 질문은 다음과 같습니다lighttpd에서 HTTP/1.0을 통해 들어오는 모든 요청을 차단/거부하고 HTTP/1.1을 통해 들어오는 요청을 허용하는 방법이 있습니까?

공식에서는 그런 가능성을 찾을 수 없었습니다lighttpd 구성 문서.

노트:

  • 일부 합법적인 트래픽도 HTTP/1.0을 사용할 수 있다는 것을 알고 있지만 이러한 트래픽도 차단해도 괜찮습니다.
  • 봇 요청은 사용자 에이전트 또는 HTTP 리퍼러에 대한 공통 패턴을 사용하지 않는 것 같으므로 정규식 패턴을 사용하는 것은 옵션이 아닌 것 같습니다.

답변1

에 대한 솔루션을 제공하는 대신 lighttpd다음을 사용하는 것이 좋습니다.실패2금지이는 모든 Unix 기반 시스템에 존재합니다. 로그 파일의 변경 사항을 감시하고 정규식 규칙에 따라 구문 분석하며 패턴이 일치하는 경우(귀하의 경우 HTTP/1.0) 원치 않는 연결을 차단하는 데 더 효과적인 시스템 방화벽 수준에서 이를 차단합니다.

또한 정상적인 요청보다 악의적인 요청이 더 많이 나타나는 비정상적인 트래픽이 발생하는 경우 다음 방화벽 규칙을 추가하여 DDoS 공격을 늦출 수 있습니다.

iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 127 -j ACCEPT

여전히 HTTP/1.0 수준을 차단하려면 lighttpd다음과 같이 HTTP 프로토콜을 일치시키십시오.

env.SERVER_PROTOCOL == "HTTP/1.0" {
  url.access-deny = ( "" )
} 

nginx(솔루션은 오래 전에 전환한 이후 테스트되지 않았지만 AFAIR에서는 작동할 수 있습니다.)

관련 정보