HTTPQUERY
한국어

Server

사용법

서버는 요청을 처리하는 소프트웨어와 선택적인 버전 정보를 알리기 위해 Server 헤더를 포함시킵니다. 값은 User-Agent 요청 헤더와 비슷한 제품 토큰 형식을 따릅니다. 하나 이상의 제품 이름이 있고, 각각 선택적으로 버전과 주석이 뒤따릅니다.

Server에 담기는 상세도는 배포 환경에 따라 다릅니다. 구체적인 소프트웨어 버전을 드러내면 보안 위험이 생깁니다. 공격자는 특정 버전의 웹 서버, 프레임워크, 운영체제에 알려진 취약점을 찾아 스캔합니다. 상세한 Server 헤더는 이런 정찰을 쉽게 만듭니다.

참고

Server 헤더에 버전 정보를 드러내면 알려진 취약점을 스캔하는 공격자를 돕게 됩니다. 운영 환경에서는 값을 일반적인 제품 이름으로 제한하거나 헤더를 완전히 제거하는 편이 좋습니다.

이 위험을 완화하는 흔한 방법은 다음과 같습니다.

대부분의 웹 서버는 Server 헤더 값을 제어하는 설정 옵션을 제공합니다. nginx는 server_tokens 디렉티브를 사용합니다. Apache는 ServerTokens와 ServerSignature를 사용합니다. 리버스 프록시와 CDN은 오리진 서버의 값을 자신의 식별자로 덮어쓰는 경우가 많습니다.

product

서버 소프트웨어를 식별하는 하나 이상의 제품 토큰입니다. 각 토큰은 슬래시로 구분된 버전과 괄호 안의 주석을 선택적으로 포함합니다.

Server: <product>/<version> (<comment>)

여러 제품은 공백으로 구분되어 중요도 순으로 나열됩니다.

예시

버전 번호를 노출하지 않고 서버 소프트웨어만 알리는 최소한의 응답입니다. 운영 환경에서 권장되는 방식입니다.

Server: nginx

일부 서버는 버전 정보와 운영체제 정보를 포함합니다. 이 형식은 버전 기반 스캔에 더 많은 공격 표면을 노출합니다.

Server: Apache/2.4.57 (Ubuntu)

CDN과 클라우드 플랫폼은 오리진 서버의 값을 자신의 제품 이름으로 대체하는 경우가 많습니다.

Server: cloudflare

사용자 정의하거나 의도적으로 모호하게 둔 값은 기반 기술 스택을 감춥니다.

Server: webserver

설정

운영 환경에서 정보 유출을 줄이려면 Server 헤더를 억제하거나 최소화하십시오.

nginx:

server_tokens off;

이렇게 하면 값이 버전 번호 없는 nginx로 줄어듭니다. 헤더를 완전히 제거하려면 headers-more 모듈이 필요합니다.

more_clear_headers Server;

Apache:

ServerTokens Prod
ServerSignature Off

ServerTokens Prod는 값을 버전이나 모듈 정보 없는 Apache로 줄입니다. ServerSignature Off는 오류 페이지에서 서버 정보를 제거합니다.

IIS:

URL Rewrite 아웃바운드 규칙으로 헤더를 제거하거나 applicationHost.config에 removeServerHeader=“true”를 설정하십시오(.NET 8+).