HSTS(HTTP Strict Transport Security)는 웹사이트가 HTTPS 연결만 사용하도록 브라우저에 지시하는 웹 보안 정책이다.
이를 통해 중간자 공격(man-in-the-middle attack)과 같은 보안 위협을 방지할 수 있다는 장점이 있는데 설정을 위해서는 웹 서버의 설정을 변경해야 한다.
목차(Contents)
워드프레스 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 preload 목록에 등록하기
웹 서버에서 HSTS를 설정하더라도 처음 사이트에 방문한 사용자에게는 적용되지 않기 때문에 여전히 보안상 문제가 발생할 수 있다.
이를 방지하고자 한다면 HSTS preload 목록에 사이트를 등록하면 되는데 목록에 있는 사이트는 웹 브라우저에서 강제로 HTTPS 접속을 하기 때문에 처음 사이트를 방문하더라도 중간자 공격 같은 보안 위협에서 조금 더 안전해진다고 볼 수 있다.
다만 한번 목록에 등록하면 취소나 변경하기 힘들며 상당한 시간이 소요될 수 있기 때문에 사이트가 영구적으로 HTTPS를 사용할 것이 확실할 때만 등록하자.
– HSTS preload 목록 등록
등록 방법은 어렵지 않다.
nginx 웹 서버에서 HSTS 설정을 했다면 아래의 사이트에 접속하여 자신의 사이트 주소를 입력하고 버튼을 클릭.
약관에 동의하고 다시 버튼을 클릭하면 등록을 할 수 있다.
그 외 내용
참고로 아파치 서버의 경우 .htaccess 파일에 아래의 값을 추가하면 된다.
Header always set Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”