로드 밸런서 뒤에 수백 개의 웹 서버를 실행하여 수많은 응용 프로그램으로 많은 다른 사이트를 호스팅합니다 (이는 제어 할 수 없음). 매월 약 한 번, 사이트 중 하나가 해킹 당하고 일부 스크립트 또는 은행을 공격하기 위해 홍수 스크립트가 업로드됩니다. 과거에는 항상 개별 웹 서버에서 나가는 UDP 트래픽을 차단하여 효과적으로 해결 된 UDP 홍수였습니다. 어제 그들은 많은 TCP 연결을 사용하여 서버에서 포트 80으로 미국 대형 은행을 플러딩하기 시작했습니다. 이러한 유형의 연결은 응용 프로그램에 완벽하게 유효하기 때문에 차단하는 것만으로는 적합한 솔루션이 아닙니다.
다음 대안을 고려하고 있습니다. 어느 것을 추천 하시겠습니까? 이것들을 어떻게 구현 했습니까?
- 소스 포트! = 80으로 웹 서버 (iptables) 나가는 TCP 패킷 제한
- 동일하지만 큐잉 (tc)
- 서버 당 사용자 당 전송 속도 제한 응용 프로그램 서버 당 잠재적으로 1000 명의 다른 사용자가 있기 때문에 상당한 관리 부담이 있습니다. 어쩌면 이것은 : 사용자 당 대역폭을 어떻게 제한 할 수 있습니까?
- 다른 거있어?
당연히 해커가 호스팅 사이트 중 하나에 침입 할 가능성을 최소화하는 방법을 찾고 있지만 그 메커니즘은 100 % 방수가되지 않으므로 침입의 영향을 심각하게 제한하고 싶습니다.
업데이트 : 현재이 규칙을 테스트하고 있어이 특정 공격을 막을 수 있습니다. 좀 더 일반적인 것으로 어떻게 제안 하시겠습니까? SYN 패킷에 대한 속도 제한 만있을 때 알려진 TCP DoS 공격이 누락 되었습니까?
iptables -A OUTPUT -p tcp --syn -m limit --limit 100/min -j ACCEPT
iptables -A OUTPUT -p tcp --syn -m limit --limit 1000/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A OUTPUT -p tcp --syn -j REJECT --reject-with tcp-reset
건배!