본문 바로가기
Security/보안가이드

[보안가이드] Apache Header Version 정보 노출 방지

by 선인장 🌵 2023. 1. 9.
728x90
728x90

Apache Header Version 정보 노출 방지

Apache Web Server를 통해서 서비스를 하는 경우 기본 설정 그대로 사용할 경우 Response Header에 현재 사용하고 있는 Apache Version 정보가 노출된다.

Apache Version 정보가 노출이 되어도 문제가 없다고 생각할 수 있으나, 매우 큰 오산이다.

이렇게 Version 정보가 노출이 된 경우 해당 Apache Version에 알려진 취약점을 이용하여 좀 더 쉽게 공격이 가능하다.

쉽게 이야기해보면 Version 정보를 모른다면 100번 만에 공격이 성공될 수 있겠지만, Version 정보를 안다면 해당 버전에 맞는 취약점등을 이용하여 단 한 번 만에도 공격이 성공될 수 있다.

그러니 별 문제 아니라고 생각하지 말고 반드시 서비스를 사용하는 경우 Apache Version 정보를 제거하여 사용하도록 하자.

그럼 어떻게 적용하면 되는지 한번 알아보도록 하자.

[보안가이드] Apache(httpd) Header Version 정보 노출 방지

728x90

1. 기본 Header Version 정보 확인

일단 Apache 최초 설치 후 아무런 설정을 하지 않은 상태로 구동을 하였다면 아마도 아래와 같이 Response Header에 설치한 Apache Version에 대해서 확인할 수 있을 것이다. 

  • $ curl -i {서비스 주소}
# Response Header Apache Version 확인

$ curl -i http://127.0.0.1:8080
HTTP/1.1 200 OK
Date: Sat, 07 Jan 2023 05:51:56 GMT
Server: Apache/2.4.54 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html

Response Header에서 "Apache/2.4.54"라는 Version 정보를 확인할 수 있다. 

Apache가 설치된 위치에서 Version을 확인해보면 동일하게 나오는 것을 확인할 수 있다.

  • $ httpd -version
# Apache Version 확인

$ ./httpd -version
Server version: Apache/2.4.54 (Unix)
Server built:   Dec 21 2022 11:26:04
728x90

2. Apache Version 제거 설정 하기 

그럼 이제 Response Header에서 Version 정보가 노출이 되지 않도록 설정하는 방법을 알아보도록 하자.

Apache의 기본 설정 파일인 http.conf에서 아래 옵션들을 추가해 주도록 하자.

  • ServerTokens Prod
  • ServerSignature Off

특히 ServerTokens 옵션은 설정에 따라 노출되는 정보가 다를 수 있으니 참고하도록 하자.

옵션 제공하는 정보 노출 정보
Prod 웹 서버 종류 Server : Apache
Min 웹 서버 종류 + 버전 Server : Apache/2.4.54
Major 웹 서버 종류 + 버전 Server : Apache/2
Minor 웹 서버 종류 + 버전 Server : Apache/2.4
OS 웹 서버 종류 + 버전 + 운영체제 Server : Apache/2.4.54 (Unix)
Full 웹 서버의 모든 정보 Server : Apache/2.4.54 (Unix) DAV/2 ~
 

core - Apache HTTP Server Version 2.4

This directive enables operating system specific optimizations for a listening socket by the Protocol type. The basic premise is for the kernel to not send a socket to the server process until either data is received or an entire HTTP Request is buffered.

httpd.apache.org

# http.conf 설정 및 확인

$ vi http.conf
... 이하 생략 ...
ServerTokens Prod
ServerSignature Off
... 이하 생략 ...


# 적용 및 재시작 후 확인

$ curl -i http://127.0.0.1:8080
HTTP/1.1 200 OK
Date: Sat, 07 Jan 2023 05:55:32 GMT
Server: Apache
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: "2d-432a5e4a73a80"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html

이번에는 Apache Version 정보를 제거하는 방법에 대해서 알아보았다. 

물론 이 방법만으로 모든 공격을 막아낼 수는 없다. 

하지만 조금이라도 정보 노출을 줄여 쉽게 공격을 당하지 않도록 설정하여 서비스를 하는 편이 더 좋을 것이라고 생각한다.

728x90
728x90


🌵댓글

 

loading