운영하는 서버의 자세한 정보는 공격자에게 유용한 정보를 제공합니다.


다음과 같이 curl 명령어로 서버가 보내오는 HTTP 응답 헤더를 살펴 봅시다.

$ curl -I unsecure.lesstif.com

Date: Wed, 23 Aug 2017 14:15:57 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Server: Apache/2.2.15 (CentOS) mod_ssl/2.2.15 OpenSSL/1.0.1e-fips PHP/5.3.3
Set-Cookie: PHPSESSID=2op2o2ieiditvut5dvd998ib31; path=/
X-Powered-By: PHP/5.3.3
CODE
서버 정보 노출 확인


Server 헤더를 보면 현재 사용하는 서버 제품(Apache)과 버전(2.2.24), 모듈(mod_ssl, PHP, mod_jk ..)과 버전등 굉장히 상세한 정보를 보여주고 있으며 공격자는 해당 제품과 버전의 취약점을 찾아서 공격할 수 있습니다.

편리하게 chrome 등의 브라우저에서 서버 정보 노출을 확인하려면 wappalyzer 를 사용하면 크롬이나 파이어 폭스에서 서버에서 사용하는 기술을 확인할 수 있습니다.


Server Token Off

apache httpd 는 httpd.conf 에 다음과 같이 설정하면 표시 정보를 최소화할 수 있습니다.

ServerTokens Prod
ServerSignature Off
CODE


nginx 는 nginx.conf 의 http 항목에 다음 내용을 추가합니다.

http {
    server_tokens off;
CODE


X Powered By 헤더 제거

wappalyzer 라고 하는 브라우저 플러그인으로 웹 사이트가 사용한 기술이 무엇인지 식별해 줍니다.


과다한 서버 정보 노출


X-Powered-By 헤더는 서버 사이드에서 사용하는 기술(ASP.NET, PHP, JBoss 등)을 표시하는 비표준 헤더로 공격자에게 유용한 정보를 제공하므로 숨기는게 좋습니다.

apache httpd 의 경우 Header 지시자를 사용하면 브라우저로 전송하기 전에 모든 X-Powered-By 헤더를 삭제할 수 있습니다.

Header unset X-Powered-By
CODE


nginx 는 fastcgi_hide_header 모듈을 사용하여 숨길 헤더를 지정하면 됩니다.

http {
    fastcgi_hide_header X-Powered-By;
CODE