Security

HSTS(HTTP Strict Transport Security) 설정

Dragonfog.net 2021. 8. 6. 10:57
반응형
#HTST 란?
HTTPS를 강제하는 사이트의 경우 HTTP로 접근할 때, 302 Redirect 하는 경우가 많음
이렇게 될 경우 취약점이 발생한다. (SSL Strip Attack : 하단참고)
유저(브라우저)에게 HTTPS 요청만 허용함을 알려주는 것을 HSTS라고 함.(응답 Header에 추가함.)
HSTS는 서버 응답 Header를 통해 등록이 이루어질수도 있지만, 
Google, Paypal, Twitter의 경우는 크롬 브라우저에 HSTS가 Preload 되도록 강제화 되어있음.

참고 : https://www.chromium.org/hsts


SSL Strip Attack이란?
SSL이 적용되어 있는 페이지에 공격자가 공격 대상의 HTTP Request를 스니핑 하여 SSL을 공격하는 방법
[공격대상] <- HTTP -> [공격자] <- HTTPS -> [HTTPS Server]
HTTPS로 강제 전환 (Nginx)
return 301 https://$host$request_uri;

 

HSTS 설정 방법

1)HTTP Header

Strict-Transport-Security “max-age=86400; includeSubdomains; preload”;

  • 옵션 설명
옵션명 설명 비고
max-age HSTS가 브라우저에 설정될 시간 값 초단위로 설정, Ex) 606024 = 86,400 = 1day
includeSubdomains HSTS가 적용될 도메인의 서브 도메인 적용 여부 해당값을 추가하게되면 example.com-> www.example.com, test.example.com까지 확장되어 적용됩니다.
preload HSTS가 브라우저 측에서 Preload 적용여부 추가시 브라우저 preload list에 추가됩니다.

- apache httpd

Header always set Strict-Transport-Security “max-age=86400; includeSubdomains; preload”

 

- nginx

add_header Strict-Transport-Security “max-age=86400; includeSubdomains; preload”;

 

- 설정 확인 (브라우저 Headers 정보 확인)

HSTS 해제방법

강제로 HSTS를 삭제하는 방법, 사용자의 브라우저에서 삭제해야함

 

1) 서버에서

- apache httpd

Header always set Strict-Transport-Security “max-age=0;”

 

- nginx

add_header Strict-Transport-Security “max-age=0”;

 

2) Chrome

chrome://net-internals/#hsts

반응형

'Security' 카테고리의 다른 글

log4j 취약점 탐지툴  (0) 2021.12.13
log4j shell 관련 내용 정리  (0) 2021.12.13