System Engineering/Server(Web&WAS)

Server #6. Apache ServerTokens 설정

ZunoXI 2022. 9. 28.

개요

 

이번 포스팅에서는 Apache 웹서버 운영 시 취약점으로 지적받을 수 있는 ServerTokens에 대해 기술하려 한다. 최근 사내 모의해킹 취약점 건으로 특정 서비스의 도메인으로 curl --head url 명령어 입력 시 운영중인 Apache 웹서버의 정보, 서버 OS 정보가 표기되는 것이 지적되었다. 평소 별생각 없이 운영했었는데, 외부에서 이 정보를 탈취했을 시 악의적으로 이용할 수 있을 것이라는 것에 경각심이 들어 보안조치를 시작했다. 

 

 

 


 

 

정보 노출

 

서비스 중인 url에 curl 명령어로 head 값을 조회했을 때 ServerTokens에 대한 별도 설정이 없다면 아래와 같이 표시된다.

 

 

위에 표시된 것처럼 "Server" 부분에 현재 서비스 중인 apache 웹서버에 대한 버전 정보, OS 정보, 모듈 정보 등이 표시된다. 이 내용은 악의적으로 활용될 시 서버의 중요 정보를 제공해주는 요인이 되므로 보안 취약점에 해당된다고 할 수 있다. 

 

 

 


 

 

설정

 

 

 

ServerTokens의 설정을 어떻게 하느냐에 따라 서버 정보를 표시하는 정도가 달라진다. ServerTokens 설정 값은 Full, OS, Minimal, Minor, Major, Prod로 분류되며, 이 중 별도 설정하지 않았다면 OS가 default 값으로 들어가고, 보안 취약점 조치를 위해서는 Prod로 설정하는 것이 권장된다. 분류별 상세 내용은 아래와 같다.

 

 

Prod : Apache 표시

Major : Apache 2 표시

Minor : Apache 2.4 표시

Min : Apache 2.4.6 표시

OS : Apache 2.4.6 (centOS) 표시

Full : 모든 웹서버, OS 서버, 모듈 등 정보 표시

 

 

필자의 웹서버 환경은 linux로 리눅스 환경에서 아래와 같이 ServerTokens에 대한 설정을 Prod로 설정했다. 또한, 설정하는 김에 ServerSignature도 함께 설정했는데,  ServerSignature는 브라우저에 웹서버가 페이지를 만들어야 하는 경우(일반적으로 에러 페이지 같은 것)에 웹서버 정보를 얼마나 노출시킬까에 대한 설정으로 함께 OFF 설정하는것이 보안상 좋다. On으로 설정되어있다면 서버 버전 출력한다.

 

 

 

 

위 설정 시 중요한 것은 일반적인 경우 /etc/httpd/conf/httpd.conf 파일에 옵션을 주지만 webserver root 디렉터리에서 반드시 "grep -r ServerTokens ." 명령어를 입력하여 이미 설정된 conf 파일이 없는지 확인하여 겹치지 않게 하는 것이 필요하다.

 

 

 

 

설정을 완료 및 웹서버 재기동 시 아래와 같이 출력되면 정상적으로 적용되었다고 할 수 있다.

 

반응형

댓글