Strict-Transport-Security 헤더에 includeSubDomains 추가 방법

클라이언트가 유용한 보안 스캐너를 사용했고, 이제 Strict-Transport-Security 헤더에 ‘includeSubdomains’가 포함되어야 한다고 생각합니다.

app.yml에 다음 두 가지를 모두 추가했습니다:


  after_ssl:
    - replace:
        filename: /etc/nginx/conf.d/outlets/server/20-https.conf
        from: "max-age=31536000;"
        to:  "max-age=31536000; includeSubDomains;"
    - replace:
        filename: /etc/nginx/conf.d/outlets/discourse/20-https.conf
        from: "max-age=31536000;"
        to:  "max-age=31536000; includeSubDomains;"
- exec: sed -i "s/add_header Strict-Transport-Security 'max-age=31536000';/add_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;/" /etc/nginx/conf.d/outlets/discourse/20-https.conf /etc/nginx/conf.d/outlets/server/20-https.conf

둘 다 작동하지 않습니다. 두 번째 코드 블록의 sed 명령을 컨테이너 안에서 직접 실행하면 nginx를 재시작한 후 요청한 대로 동작합니다.

왜 작동하지 않는지 이해가 되지 않습니다.

또한, 이 설정은 원래 템플릿에 있었지만 2014년에 제거된 것 같습니다. 하지만 최근 게시물 중 일부에는 includeSubdomains가 포함된 헤더가 표시되고 있습니다.

아무런 실마리도 없습니다.

음.. 여기서는 답변을 얻지 못하고 있는 것 같습니다. 이 주제는 Development 또는 #installation:hosting에 올려야 하나요? :thinking:

글쎄요, 제가 거기로 옮겼지만, 원래 문제는 누군가가 includeSubDomains를 설정하지 않는 것이 보안 문제라고 주장했다는 것입니다.

STS 헤더에 IncludeSubDomains가 있는 것이 중요한지 알고 있고 그걸 신경 쓰는 사람이 이 문제를 해결해 주었으면 좋겠습니다. 그러면 제가 이 사람에게 수십만 개의 다른 사이트들이 동의하지 않는다고, 그리고 누군가가 이 "보안 결함"을 찾기 위해 실행한 스크립트가 틀렸을 수도 있다고 알려줄 수 있을 것 같습니다.

그래서 아마도 이 제목을 "STS 헤더에 includeSubDomains가 없는 것은 해롭다"로 변경해야 할 것 같습니다.

저는 그것을 보안 문제라기보다는 설정 선택 사항이라고 부를 것입니다.

포럼이 apex 도메인에 있는지, 아니면 아닌지 어떻게 되나요?

저는 항상 사람들에게 도메인 내의 다른 호스트명에 영향을 미치는 헤더를 설정하는 데 매우 신중해야 한다고 말하며, 해당 호스트에서 HSTS를 사용하려면 각각의 해당 호스트에서 헤더를 설정하도록 권장합니다.

제가 생각할 수 있는 유일한 타당한 이유는 그것이 불가능한 경우, 예를 들어 포럼이 apex 도메인에 있고 클라이언트가 외부에서 호스팅되는 다른 호스트(예: hostedshopify.example.com 등)의 HSTS 헤더를 제어할 수 없는 경우입니다. 그런 경우 그들은 기본적으로 가장 적은 저항을 받는 경로인 당신에게 찾아오는 것입니다 :slight_smile:

아니요.

그렇게 생각했던 것 같습니다. 다만, 그걸로 설명을 잘 못 드렸을 뿐이죠.

감사합니다. 아펙스 도메인이 아니므로, 각 호스트가 자신의 규칙을 강제하는 것이 모범 사례(Best Practice)라고 그들에게 알려드리겠습니다.

정말 감사합니다. 큰 도움이 되었습니다. 적어도 이제 제가 이해하고 있다는 데 꽤 확신이 생겼습니다.