공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/네트워크

Deview 2021 - NAVER 암호화 트래픽을 책임지는 HTTPS 플랫폼 기술 - 2. 활용

inspirit941 2022. 6. 13. 00:07
반응형

L7 based Load balancing

스크린샷 2022-06-11 오전 10 17 15

 

기본적으로 L4 로드밸런서 method 제공. L7에서 받을 수 있는 데이터 기반으로 많은 기능을 추가로 제공함.

  • 네이버에서는 각 서비스 단위별로 운영하며, host header 기반 Route 아키텍처.

 

스크린샷 2022-06-11 오전 10 19 12

Path based Route

  • L7 로드밸런서의 특징.
  • 클라이언토 요청을 url path 기준으로 정의된 패턴에 부합하는 origin으로 라우팅.
  • 하나의 도메인에서도 static / dynamic 콘텐츠의 origin 분리해서 활용할 수 있음.

 

스크린샷 2022-06-11 오전 10 21 39

 

Circuit Breaker

  • 모든 origin에서 정상 응답이 불가능한 상황이 되면, 정상 연결될 때까지 다른 origin 군으로 연결해주거나 직접 응답하는 기능.
  • nfront가 redirect / static error page / parking 등을 클라이언트에 수행한다.

 

스크린샷 2022-06-11 오전 10 25 30

Web Application Firewall (WAF)

  • L7에서 지원하는 기능이기에 사용 가능.
  • https 요청도 복호화하기 때문에 암호화된 공격도 L7 데이터 기반으로 origin 보호하는 역할
  • 공격자의 url path, header, cookie에서 특정 패턴이 있을 경우 차단하는 식의 대응도 가능
  • 백단의 서버리소스 사용 없이 nfront (리버스 프록시) 단계에서 리소스 써서 방어함
  • Seamless한 적용이 기본. 기존 서비스에 영향을 주지 않고 제어패턴 변경이 가능함

Management / Monitoring

스크린샷 2022-06-11 오전 10 28 50

 

인증서 관리로는 세 가지 기술 사용

  • Multiple Chain of trust : 신뢰 체인 (chain of trust) 이슈에 대비해서 백업용 신뢰 체인 여러 개 구축
    • 신뢰 체인 : 상위 계층의 인증서 (CA 담당기관) 가 신뢰할 수 있는 상태라면, 해당 CA의 비밀 키로 암호화된 하위 인증서 또한 신뢰 가능하다고 간주하는 것.
      • 상위 인증서 기관의 공개키 (CA 기관)로 하위 인증서의 해시 값을 복호화할 수 있다.
  • OCSP Stapling : 클라이언트 접속 품질 향상을 위해 6시간마다 OCSP 업데이트.
  • Revocation Check : Chain of trust의 컴포넌트인 intermediate CA certification 이나 End Entity Certification에 이슈가 있을 경우... https 통신 전체의 신뢰도에 문제가 생길 수 있다는 뜻임. 따라서 6시간마다 OCSP Validation으로 Chain of trust에 이상 없는지 체크한다는 듯

 

스크린샷 2022-06-11 오전 10 35 25

 

수백 대의 HAProxy 노드를 모니터링. 모니터링할 데이터는 크게 두 종류

  • Resource Data : HA proxy에서 생성하며, 실시간으로 확인해야 할 값. RPS, Traffic, Error, CPU usage 등이 해당됨.
    • 자체 개발한 OpenTSDB로 1분마다 데이터 쌓이고, Grafana로 시각화
  • Deployed Data : config 파일, 인증서 등. mysql에 저장하고 웹에서 확인할 수 있도록 제공.

 

스크린샷 2022-06-11 오전 10 39 46

 

OpenTS와 mysql에 수집된 데이터를 분석해서, 문제 있을 경우 alert 제공.

  • nfront 팀 : 플랫폼 전체의 리소스 현황, 인증서 상태, 노드 상태 등
  • 네이버 개발자 : origin 다운되거나 정보 변경 시 alert, 쓰지 않는 도메인 검토하도록 체크.
    • 도메인별로 RPS / Error rate 임계치를 직접 설정하고 alert받을 수 있도록 하는 기능을 개발중이라고 함

 

스크린샷 2022-06-11 오전 10 42 35

 

로그 관리 - 매일 테라바이트 단위로 쌓이기 때문에 효율적인 관리가 반드시 필요한 영역

  • Core Component of ElasticSearch 앞단에 IO 퍼포먼스 최적화를 위해 rsyslog를 뒀음.
    • Structured 가능한 데이터는 column형태로 관리 -> Semi-Structured 형태의 데이터로 변환하는 용도
    • 어뷰저 패턴분석 등에 활용하고 있다고 함
  • 효율적인 용량관리를 위해 일정 시간이 지나면 하드웨어 스펙 낮은 곳에 아카이브 중.

User Friendly - 유저 사용성 향상 영역

 

스크린샷 2022-06-11 오전 10 48 43

대충 지금까지 설명한 서비스들 자동화하고 As a Service 형태로 제공하고 있다는 소리 같다.

 

스크린샷 2022-06-11 오전 10 49 32

 

HAProxy 로그데이터 쌓는 OpenTSDB를 바라보도록 설정한 JudgeD 컴포넌트

  • 실시간 리소스 현황, 사전에 정의한 Policy 기준으로 scale in / out 판단

리소스 매니저

  • busy / idle 노드 확인하고, 어떤 노드를 할당하고 회수할 것인지 결정

Ansible

  • 결정된 내용으로 Config Deploy 수행

여기에 적용된 Software Load balancer (SLB) : ECMP, BGP, IPVS 기반으로 자체 구현해 사용중

 

스크린샷 2022-06-11 오전 10 52 15

 

Encrypt 서비스

  • 개발용 도메인, 테스트용 도메인은 https 통신을 바로 지원할 수 있도록.
  • nfront에서 cert bot을 직접 설정, 관리 -> 서버 개발자가 인증서 관련해서 신경쓸 거 없도록 조치

TroubleShooting

스크린샷 2022-06-11 오전 10 54 13

 

애플아이디 로그인 실패 사례

  • 애플 측에서 ECDSA 지원 안해서 TLS handshaking이 끊긴 사례.
  • 당시에는 RSA 인증서 지원해서 해결.

 

스크린샷 2022-06-11 오전 10 55 20

 

intermediate CA untrusted 이슈. 정확히는 revocated됨

  • 해당 인증서 확인하고 텍스트파일 열어서 암호화된 인증서로 교체해서 해결
  • 인증서 갱신 주기가 짧으면 해결 가능했음

 

스크린샷 2022-06-11 오전 10 57 21

 

파이어폭스에서 발생한 현상.

기본적으로 http2는 Connection reuse를 유도한다.

  • 인증서가 와일드카드 방식이라면, 해당 인증서를 사용하는 도메인과 커넥션이 있을 경우 -> 신규 도메인 (예시의 경우 c.example.com) 과 연결할 때에도 기존 connection을 최대한 활용하도록 유도.
  • 같은 인증서를 쓴다고 해서 같은 ip를 사용할 필요는 없음. 당시 파이어폭스 버그. 꽤 예전이라고 함
  • 421 Misdirected Request 응답해서 lookup을 다시 하도록 유도해서 해결.

 

LoadMap (future)

 

스크린샷 2022-06-11 오전 11 01 13

 

어뷰징 탐지 강화를 위해 머신러닝 도입

스크린샷 2022-06-11 오전 11 02 29

 

HTTP/3 지원 / 연구중

 

스크린샷 2022-06-11 오전 11 03 23

 

SLB의 autoscaling 과정에서의 IPVS 대신, 더 Low level (L4) 이라 더 빠른 속도를 지원하는 eBPF / XDP 도입

 

스크린샷 2022-06-11 오전 11 04 47

 

Cloud 상품으로 개발

반응형