HTTP Strict Transport Security(HSTS)는 프로토콜 다운그레이드 공격과 쿠키 하이재킹으로부터 웹사이트를 보호하는 데 도움이 되는 웹 보안 정책 메커니즘입니다. 이를 통해 웹 서버는 웹 브라우저(또는 기타 준수하는 사용자 에이전트)가 안전한 HTTPS 연결을 사용해서만 상호 작용해야 하며 안전하지 않은 HTTP 프로토콜을 통해서는 절대 상호 작용해서는 안 된다고 선언할 수 있습니다.
빠른 가이드: HSTS 구현
-
귀하의 웹사이트가 HTTPS를 통해 완벽하게 접근 가능한지 확인하세요.
-
웹 서버 응답에 Strict-Transport-Security 헤더를 추가합니다.
엄격한 운송 보안 : max-age = 300; includeSubDomains; 예압
-
온라인 도구와 브라우저 개발자 도구를 사용하여 HSTS 구현을 테스트하세요.
-
올바른 구현을 확인한 후 max-age 값을 늘립니다.
-
최고 수준의 보안을 위해 HSTS 사전 로드 목록에 도메인을 제출하는 것을 고려하세요.
이제 HSTS의 세부 사항, 이점, 구현 시 고려사항에 대해 알아보겠습니다.
HSTS에 대한 자세한 이해
HSTS는 어떤 문제를 해결하는가?
HSTS는 웹사이트가 추가 보호 없이 HTTPS에만 의존할 때 발생하는 여러 보안 취약점을 해결하기 위해 개발되었습니다.
- SSL 스트리핑 공격: 공격자는 초기 HTTP 요청을 가로채서 사용자를 보안되지 않은 버전의 사이트로 리디렉션할 수 있습니다.
- 혼합 컨텐츠: 페이지의 일부 리소스는 여전히 HTTP를 통해 로드될 수 있으며, 이는 보안 취약점을 발생시킬 수 있습니다.
- 사용자 행동: 사용자는 URL을 입력할 때 수동으로 "http://"를 입력하거나 프로토콜을 완전히 생략할 수 있으며, 그로 인해 보안되지 않은 연결에 노출될 가능성이 있습니다.
HSTS는 사용자가 HTTP를 통해 사이트에 액세스하려고 할 때에도 모든 연결이 HTTPS를 사용하도록 강제함으로써 이러한 문제를 완화합니다.
HSTS 작동 방식
웹 서버가 응답으로 HSTS 헤더를 보내면 브라우저에 다음 사항을 지시합니다.
- 모든 안전하지 않은 HTTP 링크를 안전한 HTTPS 링크로 자동 변환합니다.
- 사용자가 인증서 경고를 우회하지 못하도록 방지합니다.
- 지정된 기간(max-age 지시어에 의해 정의됨) 동안 이 지침을 기억합니다.
HSTS 헤더 구성 요소에 대한 세부 내용은 다음과 같습니다.
- 최대 연령: 브라우저가 HTTPS를 강제로 적용해야 하는 시간(초)을 지정합니다.
- 하위 도메인 포함: (선택 사항) 현재 도메인의 모든 하위 도메인에 HSTS 정책을 적용합니다.
- 프리로드: (선택 사항) 도메인 소유자가 자신의 도메인을 브라우저에 미리 로드하는 데 동의함을 나타냅니다.
HSTS 구현의 이점
- 보안 강화: 중간자 공격, SSL 스트리핑, 쿠키 하이재킹으로부터 보호합니다.
- 향상된 사용자 경험: HTTP 요청을 자동으로 HTTPS로 리디렉션하여 지연 시간을 줄입니다.
- SEO 혜택: 검색 엔진은 보안이 강화된 웹사이트를 선호하여 검색 순위를 향상시킬 수 있습니다.
- 규정 준수: 데이터 보호 및 개인정보 보호에 대한 다양한 규제 요구 사항을 충족하는 데 도움이 됩니다.
웹 서버에 HSTS 구현
1단계: HTTPS를 위한 웹사이트 준비
HSTS를 구현하기 전에 HTTPS를 통해 웹사이트가 완벽하게 작동하는지 확인하세요.
- SSL을 얻으세요/TLS SSL.com과 같은 신뢰할 수 있는 인증 기관의 인증서.
- 웹 서버에 인증서를 설치합니다.
- HTTPS를 사용하도록 웹 서버를 구성하세요.
- 모든 내부 링크를 HTTPS를 사용하도록 업데이트합니다.
- 모든 외부 리소스(스크립트, 이미지 등)가 HTTPS를 통해 로드되는지 확인하세요.
2단계: HSTS 헤더 추가
구성을 테스트하려면 짧은 max-age 값이 있는 HSTS 헤더를 추가하여 시작합니다. 예를 들어, max-age=300(5분)을 사용합니다.
아파치
.htaccess 파일이나 서버 구성에 다음을 추가하세요.
헤더 항상 Strict-Transport-Security를 설정하세요 "max-age=300; includeSubDomains; 사전 로드"
Nginx에
Nginx 구성의 서버 블록에 다음을 추가하세요.
add_header 엄격한 운송 보안 "max-age=300; includeSubDomains; 사전 로드" 언제나;
IIS
IIS의 경우 web.config 파일을 통해 헤더를 추가할 수 있습니다.
<시스템.웹서버>
<http프로토콜>
<사용자 정의 헤더>
<더하다 name="엄격한 운송 보안" 가치="max-age=300; includeSubDomains; 사전 로드"/>
</사용자 정의 헤더>
</http프로토콜>
</시스템.웹서버>
3단계: HSTS 구현 테스트
헤더를 추가한 후에는 구현을 테스트하는 것이 중요합니다.
-
온라인 도구 사용: SSL Labs나 Security Headers와 같은 도구를 사용하면 HSTS 헤더가 있고 올바르게 구성되었는지 확인할 수 있습니다.
-
브라우저 개발자 도구:
-
브라우저(예: Chrome, Firefox)에서 웹사이트를 엽니다.
-
F12 키를 눌러 개발자 도구를 엽니다.
-
네트워크 탭으로 이동합니다.
-
페이지를 새로 고치고 초기 요청(일반적으로 귀하의 도메인)을 선택합니다.
-
헤더 섹션에서 Strict-Transport-Security 헤더를 찾아 전송이 완료되었는지 확인하세요.
-
-
HTTPS 적용 테스트:
-
http://를 통해 웹사이트에 접속해보고 https://로 리디렉션되는지 확인하세요.
-
includeSubDomains 지시문을 포함한 경우 하위 도메인도 보호되는지 확인하세요.
-
4단계: max-age 값 증가
HSTS 구현이 짧은 최대 기간으로 올바르게 작동하는지 확인한 후에는 최대 기간을 31536000년(최대 기간=XNUMX)과 같이 더 길게 늘릴 수 있습니다.
아파치
헤더 항상 Strict-Transport-Security를 설정하세요 "max-age=31536000; includeSubDomains; 사전 로드"
Nginx에
add_header 엄격한 운송 보안 "max-age=31536000; includeSubDomains; 사전 로드" 언제나;
IIS
<시스템.웹서버>
<http프로토콜>
<사용자 정의 헤더>
<더하다 name="엄격한 운송 보안" 가치="max-age=31536000; includeSubDomains; 사전 로드"/>
</사용자 정의 헤더>
</http프로토콜>
</시스템.웹서버>
5단계: HSTS 사전 로딩 고려
HSTS 사전 로딩은 브라우저에 하드코딩된 HSTS 지원 사이트 목록에 도메인을 포함시켜 보안을 강화합니다. 사이트를 사전 로딩하려면:
- HSTS 헤더에 다음이 포함되어 있는지 확인하세요.
preload
지시문에서. - HSTS 사전로드 목록 제출 웹사이트를 방문하세요.
- 도메인을 입력하고 제출 과정을 따르세요.
참고: 사전 로딩은 강력한 보호 기능이지만 실행 취소하기 어려울 수 있습니다. 제출하기 전에 사이트가 장기 HTTPS 전용 액세스에 적합한지 확인하세요.
모범 사례 및 고려 사항
- 짧은 최대 연령으로 시작하세요: 낮은 값(예: max-age=300)으로 시작하여 모든 것이 제대로 작동하는지 확인하면서 점진적으로 증가시킵니다. 이렇게 하면 구성 오류가 발생해도 사용자가 잠기는 것을 방지할 수 있습니다.
- includeSubDomains를 사용할 때는 주의하세요: 이 옵션을 사용하기 전에 모든 하위 도메인이 HTTPS를 사용할 수 있는지 확인하세요.
- 장기적 계획: HSTS가 구현되면 HTTP로 다시 전환하는 것이 어려울 수 있습니다. 조직이 HTTPS를 유지하기 위해 최선을 다하고 있는지 확인하세요.
- 정기 모니터링: HTTPS 구성을 지속적으로 모니터링하여 인증서가 유효하고 올바르게 구성되었는지 확인하세요.
- 사용자 교육: HSTS가 많은 부분을 자동으로 처리하지만, 사용자에게 HTTPS의 중요성과 보안 경고에 주의하도록 교육하세요.
잠재적인 과제 및 솔루션
혼합 콘텐츠 문제
- 과제: 일부 리소스가 아직 HTTP를 통해 로드되고 있습니다.
- 해법: CSP(콘텐츠 보안 정책) 헤더를 사용하여 혼합 콘텐츠를 감지하고 보고합니다.
인증서 만료
- 과제: 만료된 인증서로 인해 엄격한 HSTS 정책으로 인해 사용자가 잠길 수 있습니다.
- 해법: 자동화된 인증서 갱신 및 모니터링 시스템을 구현합니다.
역방향 프록시 합병증
- 과제: HSTS 헤더가 일부 역방향 프록시 설정을 통해 올바르게 전파되지 않을 수 있습니다.
- 해법: 역방향 프록시가 HSTS 헤더를 올바르게 전달하거나 설정하도록 구성되어 있는지 확인하세요.
개발 및 테스트 환경
- 과제: HSTS는 HTTPS가 아닌 개발 환경에 대한 액세스를 복잡하게 만들 수 있습니다.
- 해법: HSTS가 활성화되지 않은 개발/스테이징용으로 별도의 도메인을 사용하세요.
결론
HTTP Strict Transport Security(HSTS)는 강력한 도구입니다. HSTS는 보안 연결을 강제함으로써 귀하의 웹사이트와 사용자를 다양한 공격으로부터 보호합니다. 구현에는 신중한 계획과 실행이 필요하지만, 보안상의 이점은 초기 설정의 복잡성을 훨씬 능가합니다.
웹 보안은 지속적인 프로세스라는 점을 기억하세요. HSTS 정책을 정기적으로 검토하고 업데이트하고, HTTPS 구현을 모니터링하고, 새로운 웹 보안 모범 사례에 대한 정보를 얻어 웹사이트와 사용자를 안전하게 유지하세요.