하나의 IP 주소에서 1분 프레임으로 웹 콘텐츠 다운로드를 제한합니다(iptables 사용) [닫기]

하나의 IP 주소에서 1분 프레임으로 웹 콘텐츠 다운로드를 제한합니다(iptables 사용) [닫기]

다운로드 트래픽을 제한하기 위해 iptables에 어떤 규칙을 적용할 수 있습니까? 예를 들어 클라이언트가 1분에 하나의 IP 주소에서 400KB만 다운로드할 수 있도록 제한해야 합니까? 더 많이 다운로드하면 5분 동안 IP를 차단합니까? Apache/nginx가 아니라 iptabes입니다. 1분 안에 400kb 이상을 얻으려는 사람들을 위해 네트워크 연결을 끄고 싶습니다.

답변1

이 답변은 이것이 다음과 같다고 가정합니다.XY 문제, 실제로 원하는 것은 DoS 공격을 방지하기 위해 사용자당 서버 리소스 사용량을 제한하는 방법입니다.

첫째, 단지 iptables를 사용하는 것 외에 다음과 같은 더 나은 옵션이 있습니다.

  1. 사용 중인 서버 소프트웨어에 내장된 속도 제한을 사용하세요. 대부분의 주요 웹 서버는 이 모듈을 내장 또는 표준 모듈로 지원합니다. 이는 단일 시스템의 특정 서비스에 대한 액세스를 제한하는 표준 방법이기도 합니다. 이는 iptalbe를 사용하는 것보다 세 가지 주요 이점이 있습니다.
    • 누구도 차단하지는 않지만 대역폭 제한을 초과하는 것을 허용하지 않습니다(소스 IP당 연결 수를 제한하는 경우).
    • 애플리케이션 수준 정책으로 인해 방화벽이 복잡해지지 않습니다.
    • 일반적으로 설정이 쉽습니다. NGinx의 경우 실제로 한 줄입니다(또는 소스당 연결 제한을 포함하는 경우 5줄). Apache의 경우 두 줄입니다(모듈을 로드하는 줄 제외).
  2. 속도 제한을 제공하려면 일부 역방향 프록시 소프트웨어(어떤 경우에는 애플리케이션 서버에서 직접 실행될 수도 있음)를 사용하십시오. Squid는 이 접근 방식의 가장 좋은 예 중 하나이지만 대부분의 역방향 프록시 옵션은 이를 일부 지원합니다. 이는 백엔드 시스템이 여러 개인 경우 표준 접근 방식입니다.
  3. TCP 창 크기 조정 매개변수를 조정합니다. 이는 신뢰할 수 있고 올바르게 수행되면 클라이언트가 중단되지 않으며 일단 안정되면 동적 조정이 필요하지 않습니다. 그러나 설정이 간단하지 않으며 스마트 클라이언트는 이 문제를 해결하여 성능을 향상시킬 수 있습니다. 이는 모든 서버 소프트웨어의 일부 작업으로 수행할 수 있지만 연결당 속도 제한으로 제한됩니다.
  4. 진정한 연결당 속도 제한을 적용하려면 iptables의 연결 태그와 함께 네트워크 장치 대기열 규칙을 사용하세요. 설정하기가 매우 복잡하지만 두 가지 분명한 장점이 있습니다. 즉, 100% 프로토콜에 구애받지 않고(무엇이든 사용할 수 있음) 극도로 결정적인 동작을 제공하므로(테스트가 단순화됩니다).

어떤 이유로든 iptables만 사용할 수 있는 경우 세 가지 일반 옵션이 있습니다.

  1. limit성냥만 사용하세요. 이를 통해 단위 시간당 패킷 수를 제한할 수 있습니다. 링크의 MTU에 대해 몇 가지 간단한 계산을 수행하면 요청하는 대역폭의 상한을 쉽게 파악할 수 있습니다. 예를 들어, MTU가 1500(이더넷 표준)인 링크에서 분당 400KB를 얻으려면 초당 4패킷 제한이나 분당 267패킷 제한을 고려해야 합니다(둘 다 정확하지는 않습니다). 모두 1% 이내입니다.) 그러나 규칙을 추가해야 합니다.규칙과 일치하는 모든 항목이 제한 사항을 공유하므로 클라이언트 IP입니다.
  2. 약간 더 복잡한 설정에서는 매칭을 대신 사용할 수 있습니다 hashlimit. 그러면 더 나은 처리가 가능하지만 위와 동일한 클라이언트별 규칙이 적용됩니다.
  3. 속도 제한에 절대적으로 반응하고 싶다면(매우 나쁜 생각입니다. 여기서는 아무리 강조해도 지나치지 않습니다. 이렇게 하면 많은 수준에서 사용자 기대가 무너지고 본질적으로 디버깅이 어려워지고 디버깅이 어려워질 것입니다.) 더 세게) 그런 다음 rateest경쟁과 목표를 살펴보세요. 목표는 일치 항목과 일치시킬 수 있는 데이터를 수집합니다. 그러면 LOG 대상을 사용하여 IP를 차단할 수 있는 사용자 공간 도우미 프로그램의 작업을 트리거할 수 있습니다.

관련 정보