클라우드 플레어 101

20
클라우드 플레어 101 2016년 1월19일 작성: 오진석 www.facebook.com/chuckoh

Transcript of 클라우드 플레어 101

클라우드 플레어 101

2016년 1월19일

작성: 오진석

www.facebook.com/chuckoh

간단답변: 클라우드 플래어 = CDN + 파이어월

* 크롤러 및 봇 퇴치 * 각종 위 요소 블럭

클라우드 플래어가 뭐지?

1) DNS 를 클라우드 플래어(이 , CF 표기)가 제공하는 2개의 네임서버로 변경한다.

2) Anycast 라고 불리우는 네트웍 라우팅 기술을 사용해서, 가장 가까운 CF 데이터 터로 DNS 룩업

3) 오리지날 호스팅 주소가 1.2.3.4 인 경우, CF 의 데이터 터 99.99.99.99 로 변경.

4) CF 의 99.99.99.99 주소를 갖는 서버가 캐쉬 서버 할 및 파이어월 할

클라우드 플래어가 뭐지?

상세답변:

방문자 IP 주소, 요청 URI 분석, POST 호출 시 payload 내용, 얼마나 자주 요청을 보내는지 등의 특징

들을 분석해서 위협(threat) 인가를 판별한다.

5) 보수적인 캐쉬 정 갖고 있지만, 50% 정도의 hit-rate 기대

이미지, CSS, JavaScript 캐쉬 (X) HTML 컨텐츠 캐쉬 (O)

6) 60% 의 bandwidth 절약 효과 65% 의 requests 감소 효과 평균 로딩 시간 50% 감소 효과

클라우드 플래어 사용 클라우드 플래어 미사용

1. 클라우드 플래어 계정 생성후

2. 도메인명 registrar 페이지에 DNS 정보를 클라우드 플래어로 변경

3. 클라우드 플래어 상세정보 설정

클라우드 플래어 시작

클라우드 플래어 설정페이지 legend

★ 화이트 리스트 IP 주소 추가

1st Steps

1. CF 접속후 Firewall 택

2. IP 주소, IP 주소 대 대 또는 국가 코드에 기반한 규칙 작성후 레이블을 쓰고 Add 버튼 클릭

★ 퍼포먼스 셋팅 리뷰

싸이트에 세스하는 알려진 서비스들이 있는 경우 해당 서비스를 화이트 리스트에 추가

★ 퍼포먼스 셋팅 리뷰 (계속)

1. Speed > Prefetching

CF 의 prefetching 기능 (유저의 다음 으로 요청할 가능성이 높은 내용으로 캐쉬를 구성하는 기능)

prefetching 기능 사용법

1. Speed 메뉴 아래 Prefetch URLs 셋팅을 켠다.

2. prefetch 할 URL 리스트가 나열된 HTTP 응답 헤더를 삽입한다.

3. CF 는 manifest 파일안에 나열된 파일리스트를 prefetch 한다.

HTTP response header 의 예:

Link: </manifest.txt>; rel="prefetch"

manifest.txt 의 예:

/static/fetch1 //other.example.com/fetch2 http://another.example.com/fetch3

단, Enterprise customer 만 사용가능하다는게 함정.

★ 퍼포먼스 셋팅 리뷰 (계속)

잠깐! 가 이 어떻게 되는데?

★ 퍼포먼스 셋팅 리뷰 (계속)

2. Speed > Response Buffering

버퍼링 vs. 스트리밍

스트리밍은 파일을 받을때 해당 파일 일부를 메모리에 로드한 뒤 사용자에게 전송

버퍼랑은 파일 체를 메모리에 로드한 뒤에 사용자에게 전송

CF 기본값은 스트리밍이며, 이는 대용량 파일 전송시에 효과가 다.

다수의 작은 패킷들을 보내는 웹 서비스의 경우, Response Buffering 이 유리하다.

따라서, 아래의 메뉴를 통해 웹 서비스의 UseCase 에 적절한 셋팅을 해주면 된다.

단, Enterprise customer 만 사용가능하다는게 함정.

★ 퍼포먼스 셋팅 리뷰 (계속)

1. Speed > Prefetching

CF 의 prefetching 기능 (유저의 다음 으로 요청할 가능성이 높은 내용으로 캐쉬를 구성하는 기능)

prefetching 기능 사용법

1. Speed 메뉴 아래 Prefetch URLs 셋팅을 켠다.

2. prefetch 할 URL 리스트가 나열된 HTTP 응답 헤더를 삽입한다.

3. CF 는 manifest 파일안에 나열된 파일리스트를 prefetch 한다.

HTTP response header 의 예:

Link: </manifest.txt>; rel="prefetch"

manifest.txt 의 예:

/static/fetch1 //other.example.com/fetch2 http://another.example.com/fetch3

단, Enterprise customer 만 사용가능하다는 게 함정.

★ 퍼포먼스 셋팅 리뷰 (계속)

3. Speed > Mirage

Mirage 의 3대 속성

1. 사용자의 접속 디바이스와 커넥션 종류를 분석하여 최적화.

2. 낮은 해상도별 적합한 고/저 해상도 이미지를 전송. viewport 안에 보일때만 lazy loading 처리.

3. 페이지의 모든 이미지 리퀘스트를 하나의 리퀘스트를 통합.

Rocket Loader, CF 의 JavaScript performance accelerator 와 같은 메커니즘 사이트 일부분에서 Mirage 기능을 Off 시키려면 Page Rules 메뉴에서 fine grained 룰 지정가능

CF 의 Mirage 기능은 이미지 로딩 속도를 향상 시킨다.

4. Speed > Polish

CF 의 Polish 기능은 이미지 로딩을 빠르게 하기 위해 이미지들을 압축 고 메타 데이터를 제거한다.

★ 퍼포먼스 셋팅 리뷰 (계속)

5. Speed > Railgun

Railgun 은 CF가 기본적으로 정적 컨텐츠만을 캐쉬하는 것을 보완키 위해 만든 동적 HTML 컨텐츠 캐쉬 기술.

추천 셋팅) Visitor <--> CloudFlare <--> Railgun(s) <--> Load Balancer/Firewall/NAT <--> Webserver(s)

비추 셋팅) Visitor <--> CloudFlare <--> Load Balancer/Firewall/NAT <--> Railgun(s) <--> Webserver(s)

아마존 EC2 셋업과 같이 사용하기 위해서 AWS Marketplace 에 Railgun 이 제공되고 있다.

CF와 웹서버간 요청시 HTML markup 이 변한 경우만 memcached 를 이요하여 체크, 변한 경우만 해당 markup 의 내용만 전송.

대략 143% 의 HTML 페이지 로딩 성능 향상 효과. (Reddit 5분동안 2.15% 만 변화, NewYork Times 5분간 0.6% 만 변화)

64bit Linux 서버에만 설치 가능한 daemon: 추가적인 기술 검토 및 효과에 대한 검증/테스트 필요.

Listener

Sender

TCP 통신

★ 보안(Security) 셋팅 리뷰

Firewall > Security Level

Essentially off: 아주 심각한 위반자에게만 CAPTCHA Challenge Low: 매우 위 적인 방문자들에게 CAPTCHA Challenge Medium (디폴트): 적당히 위 적인 또는 매우 위 적인 방문자들에게 CAPTCHA Challenge

High: 최근 14일 내에 위 적인 행동을 보인 방문자들에게 CAPTCHA Challenge I’m Under Attack: DDoS 공 을 받을 때만.

* 페이지별 커스텀 보안 수 을 설정하려면 Page Rules 설정한다.

★ 보안(Security) 셋팅 리뷰 (계속)

Firewall > Challenge Passage

★ 문제가 있는 사용자가 새로운 CAPTCHA Challenge 페이지를 보기 위한 기간 설정 ★ CF는 8 시간부터 시작하는 것을 추 -> 현재 5분으로 설정 (누가? 왜? 검토) ★ WAF (Web Application Firewall) 에 발행한 CAPTCHA Challenge 는 이 설정과 무관

Security Level 설정에 의한 Challenge 는 사용자 IP 주소를 근거로 발행 WAF 는 사용자가 도메인 상에서 취한 액션이 의심되는 경우 발행

Firewall > IP Firewall

Access Rules (IP주소와 국가코드로 지정 가능한 규칙)

IP 주소, IP 대역대, 또는 국가 코드 에 대하여 Block : 반드시 블럭시켜야만 하는 경우만 Challenge : 의심이 되는 경우 CAPTCHA Challenge 보이도록 Challenge Passage 지난 후 또 물어봄. Whitelist : 절대 블락을 안시켜야하는 이유가 분명한 경우만

이유 (Add a note) 아래와 같이 기정의된 포맷으로만 반드시 올리도록 하는 정책적인 practice 필요 언제, 누가, 무슨이유 때문에 올렸는지 반드시 기록 요망. (예) 2016년1월17일, 홍길동 과장, xx 해킹이 의심되어서 어쩌구 저쩌구

정 의 일환

★ 보안(Security) 셋팅 리뷰 (계속)

★ 보안(Security) 셋팅 리뷰 (계속)

Firewall > Web Application Firewall

팬시 워드로 표 하면, Application 레이어 (OSI 모델 레이어 7) 상의 트래픽을 필터링하는 Firewall

CF 에 기존에 익히 알려진 XSS 공 , SQL 인젝션 공 같은 공 패턴들을 자동으로 차단.

CF 에 몰려드는 청난 새로운 트래픽을 분 하여 자동으로 공 패턴들을 차단.

사용자가 개별적으로 자기한테 들어오는 공 패턴들을 분 하여 이를 막는 규칙을 추가 가능.

Package: CloudFlare Rule Set

Package: OWASP ModSecurity Core Rule Set

Simulate (의미: 의심되니까 뭔 행동을 하진 말고 그냥 로그만 쌓아)

Challenge (의미: 의심되니까 이 자식 CAPCHA 페이지 보이게 해)

Block (의미: 의심되니까 이 자식 막아)

Browser Integrity Check

요청의 HTTP 헤더 정보중 브라우저 정보가 이상하면 자동 차단

OWASP 는 또 뭐니?

Open Web Application Security Project 의 약자. 웹 보안의 취약점 및 해 책 등을 무료로 보급하는

온라인 커뮤니티. 미국에 시작된 비영리 단체로 현재는 유 비영리단체로도 등록.

★ 보안(Security) 셋팅 리뷰 (계속)

누가 제 무슨 이유로 변경했나? 명확하게 할 필요성.

★ 보안(Security) 셋팅 리뷰 (계속)

Sensitivity 옵션과 그 의미

Off (일단, OWASP 보안 규칙을 모두 끄자)

Low (자극에 반응이 둔감. 의심되는 활동을 점수화 하여, 그 점수의 합을 판단 기준화.)

High (자극에 반응이 민감.)

Firewall > OWASP ModSecurity Core Rule Set

데이터 크롤러를 블럭하기 시작!

그래서 뭐?

앞으로 어떻게 해야만?

생각해 볼 수 있는 옵

작업 메뉴얼화 (작업자들이 각각의 규칙에 대한 정확한 이 필요)

파이어월 규칙 추가나 수정시 문서화.

제 확인니아 이메일을 통해서, 모든 담당자들에게 통보할 알림 정 필요.

현재까진 아무런 정책이 없소이다 !

수고하셨습니다.

Because nothing’s ever going to be perfect. and,

everyday, we have to deal with new problems and new

technologies. So, we don’t care about 2% you might

already known. Instead, we really wanna know how

you’re gonna deal with the 98% you don’t know yet.

from lab80.co recruiting ad

Inspirational quote

갖고 있는 실력 < 문제해결과 자기개발을 위한 태도