이 질문이 잘못된 포럼에 올라오면 미리 사과드립니다. 이것이 첫 번째 질문입니다!
내 고객은 호스팅을 위해 Alibaba Cloud(중국의 Aliaba Cloud)를 사용합니다. 다음 구조를 사용하여 서버에 마이크로사이트를 배포했습니다.
microsite.com -> CDN1 -> SLB -> 2x ECS -> DB ECS
oss.microsite.com -> CDN2 -> OSS
SLB 아래의 ECS 인스턴스에는 고정 세션이 있으며 HTML 응답만 제공합니다. 다른 모든 파일(js, css 등)은 OSS 도메인에서 제공됩니다. 또한 이러한 인스턴스는 데이터베이스를 사용하여 세션 데이터(예: 사용자 IP 주소, 마지막 활동의 타임스탬프 등)를 저장합니다.
3주 후에 데이터베이스 인스턴스의 스토리지 공간이 40GB 부족해졌습니다. 살펴보니 2,300만 개의 세션 항목이 있었습니다.
ECS 인스턴스는 연중무휴 100~150개 미만의 동시 연결을 유지하지만 실제 사용자(GA를 사용하여 추적)는 아마도 하루 10~15명입니다(활동은 아직 시작되지 않음).
고객 IT 부서에서 이것이 "훨씬 더 심각"할 것이기 때문에 "공격"이 아니라 "정상"이라고 말했기 때문에 혼란스럽습니다. 그들은 트래픽이 어디서 오는지 설명하지 않았습니다. 그러나 액세스 로그(tail -f access.log)에서 지속적인 요청 스트림을 볼 수 있습니다.
낮이든 밤이든 SSH를 통해 로그인할 때마다 항상 존재합니다. 마이크로사이트를 열거나 클라이언트에서 누군가를 열지 않는 한 GA는 비어 있습니다(링크가 아직 미디어에 푸시되지 않았기 때문입니다).
이것이 무엇인지 제안하는 사람이 있나요? 제가 보기에는 이것은 서버의 리소스를 고갈시키려는 시도이거나 실패한 DDoS인 것 같습니다. 그러나 아직 100~200개의 동시 연결이 있기 때문에 Alibaba Cloud는 방화벽/보안 규칙을 활성화하지 않았습니다. Alibaba Cloud 콘솔에 액세스할 수 없고 SSH를 통해서만 서버에 연결할 수 있습니다.
나는 이것이 "정상"이라는 것을 믿을 수 없었다. CloudFlare에는 봇 보호, JavaScript 챌린지 등을 위한 옵션이 있습니다. 알리바바 클라우드에는 아무것도 없는 것 같습니다. 아니면 그냥 상관하지 않습니다.
일부 기술 정보:
모든 ECS 인스턴스는 Ubuntu 20.04에서 실행됩니다. 웹 서비스는 PHP7.4 및 PHP7.4-FPM을 실행하는 Apache2입니다. 데이터베이스 인스턴스는 MySQL8입니다. 데이터베이스 인스턴스는 웹 서버 인스턴스의 연결만 허용하고, 데이터베이스 인스턴스는 SLB(AWS의 Elastic Load Balancer와 동일한 Load Balancer)의 HTTP 연결만 허용합니다. 이는 모든 트래픽이 SLB 아래의 인스턴스에 도달하려면 여전히 SLB를 통과해야 함을 의미합니다.
이런 일을 경험한 사람이 있나요? 그렇게 할 수 없다면 내 백엔드를 어떻게 보호할 수 있나요?
답변1
좋습니다. 문제를 찾았으므로 DDoS나 공격이 없었으므로 문제를 종료했습니다.
클라이언트 IT는 로드 밸런서를 기관총 서버 인스턴스로 설정했으며 액세스 로그에 표시되는 모든 트래픽은 실제로 상태 확인입니다.
이제 각 확인 시간을 합리적인 2~3분으로 설정하면 이러한 문제가 사라집니다.
모두에게 폐를 끼쳐드려 죄송합니다.