서기록

2023-11-17 금요일 / seogilang

  HSTS(HTTP Strict Transport Security)는 웹사이트가 HTTPS 연결만 사용하도록 브라우저에 지시하는 웹 보안 정책이다.

  이를 통해 중간자 공격(man-in-the-middle attack)과 같은 보안 위협을 방지할 수 있다는 장점이 있는데 설정을 위해서는 웹 서버의 설정을 변경해야 한다.

 

워드프레스 nginx HSTS 설정하기

 사용자에 따라 웹 서버를 구축한 방식이 다르기 때문에 이를 감안하고 보는 것이 좋다.

 

1. nginx 설정 파일 실행.

 현재 사용 중인 사이트의 설정 파일 열자.

 우분투 기준 /etc/nginx/sites-enabled/default의 파일의 설정을 변경하면 되지 않을까 한다.

 

2. 헤더 값 추가.

 파일을 열었다면 HTTPS의 server 블록에 아래의 강조된 값을 추가하자.
(구성에 따라서는 location 블록에 추가해야 할 수도 있다)

 server {

  listen 443 ssl http2 default_server;

  listen [::]:443 ssl http2 default_server;

  

  add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload” always;

  …

 }

 

3. 서버 재시작.

 값을 추가했다면 nginx 서버를 재시작하자.

 sudo service nginx restart

 

4. HSTS 적용 확인.

 웹 서버 설정 후 HSTS가 웹 브라우저의 개발자 도구를 통해 사이트에 적용됐는지 확인해 보자.

 [F12]로 개발자 도구를 열고 [네트워크] 탭으로 이동.

 [F5]를 눌러 페이지를 새로고침 한 뒤 이름 부분에서 현재 페이지를 선택하고 [헤더]에서 Strict-Transport-Security가 보인다면 사이트에 HSTS가 정상적으로 적용됐다고 보면 된다.

HSTS 설정 사이트 적용 확인

 

HSTS preload 목록에 등록하기

 웹 서버에서 HSTS를 설정하더라도 처음 사이트에 방문한 사용자에게는 적용되지 않기 때문에 여전히 보안상 문제가 발생할 수 있다.

 이를 방지하고자 한다면 HSTS preload 목록에 사이트를 등록하면 되는데 목록에 있는 사이트는 웹 브라우저에서 강제로 HTTPS 접속을 하기 때문에 처음 사이트를 방문하더라도 중간자 공격 같은 보안 위협에서 조금 더 안전해진다고 볼 수 있다.

 다만 한번 목록에 등록하면 취소나 변경하기 힘들며 상당한 시간이 소요될 수 있기 때문에 사이트가 영구적으로 HTTPS를 사용할 것이 확실할 때만 등록하자.

 

HSTS preload 목록 등록

 등록 방법은 어렵지 않다.

 nginx 웹 서버에서 HSTS 설정을 했다면 아래의 사이트에 접속하여 자신의 사이트 주소를 입력하고 버튼을 클릭.

 약관에 동의하고 다시 버튼을 클릭하면 등록을 할 수 있다.

 @HSTS Preload List Submission

HSTS preload 목록 등록 사이트

 

그 외 내용

 참고로 아파치 서버의 경우 .htaccess 파일에 아래의 값을 추가하면 된다.

 Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”