이번에도 보안관련 내용을 들고 온 맑입니다.

 

는 부분이 Header에 나타나는 서버 정보. 입니다. 이번주에는 어떤걸 주제로 할까 고민하다 nginx는 Header 정보가 깨끗할까 하고 살펴봤더니 기본적으로는 모든 정보를 제공하는 것을 확인할 수 있었습니다.

이러한 서버 정보를 제거하는 방법은 아래와 같습니다.

1. 기본적으로 Server: Nginx/1.4.5 정보를 헤더에서 없애는 방법은 아래 줄을 Server나 location, http 절에 추가하는 것이라고 합니다만,

  server_tokens off;

    제 테스트 환경에서는 제대로 동작하지 않아, 다른 방법을 찾아 보았습니다.

    위 옵션은 HttpCoreModule에 포함되어 제대로 동작할 경우, 별도 모듈을 설치하지 않아도 됩니다.

 

2. Header 값 변경

   . HttpHeadersMore module을 설치해야 합니다.

     다운로드 주소 : https://github.com/agentzh/headers-more-nginx-module/archive/v0.25.tar.gz

     이 모듈은 별도 설치가 되지 않아서 아래와 같이 재설치해 줘야 합니다.

  $./configure --prefix=/ngx145_header --add-module=./download/headers-more-nginx-module-0.25

   . 설치 후 아래와 같이 설정합니다. 

  more_set_headers 'Server: sarc';

    Apache와는 달리 Server header값도 변경 가능합니다.

 

3. Compile 시 소스 코드의 Nginx, 버전 변경

nbsp;  소스 푼 경로의 src/http/ngx_http_header_filter_module.c 파일에 nginx 제품 정보와 버전 정보가 표시되어 있습니다.

 static char ngx_http_server_string[] = "Server: nginx" CRLF;
 static char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

  위와 같은 소스 코드를 찾아서 아래와 같이 변경해 주면 됩니다.

 static char ngx_http_server_string[] = "Server: Sarc Web Server" CRLF;
 static char ngx_http_server_full_string[] = "Server: Sarc Web Server" CRLF;