웹 취약점 진단 항목 중에 서버 버전 및 정보의 노출을 확인하는 것이 있다.
OWASP
에서는 Fingerprint Web Server
라고 명시하며, 노출 된 웹 서버의 버전이나 정보를 통해 공격자가 공격을 위한 힌트를 얻을 수 있기 때문에 노출을 자제하도록 권고한다.
Risk는 크지 않지만 자주 나오는 취약점이기도 하다.
Apache2를 사용할 때, 서버 버전이 노출되는지 확인하는 방법은 HTTP Response를 확인하는 것이다.
Burp Suite로 HTTP Response를 잡아 확인 해 보면 아래와 같이 Server: Apache/2.4.18 (Ubuntu)
가 출력된다.
이 정보를 통해 공격자가 해당 버전의 CVE 등을 찾아 공격을 시도 해 볼 수 있으므로 숨기는게 좋다고 한다.
내가 테스트 한 버전은 아래와 같다.
- Ubuntu 16.04
- Apache 2.4.18
일반적으로 Apache는 httpd.conf를 고치면 된다고 하는데, 찾아보니 Ubuntu에서는 httpd.conf가 사라졌다고 한다.
때문에 Ubuntu에서는 서버 버전 정보를 숨기기 위해서는 /etc/apache2/conf-available/security.conf
파일을 수정해야 한다.
/etc/apache2/conf-enabled/
에도 security.conf
파일이 있으나, 이는 conf-available
디렉터리의 파일과 연결 된 Symbolic Link
파일이다.
다시 /etc/apache2/conf-available/
디렉터리에 가 보면 아래와 같이 security.conf
파일이 있다.
해당 파일을 열어 ServerTokens
로 검색을 해 보면 아래와 같은 설정을 확인할 수 있다.
원래 초기값은 아래와 같다.
|
|
해당 값을 아래와 같이 변경 해 준다.
|
|
ServerTokens
의 경우, Full, OS, Minimal, Minor, Major, Prod
중 하나로 설정할 수 있는데, Full
이 가장 많은 정보를 출력하고 Prod
가 가장 적은 정보를 출력 해 보안 상 권장 설정은 Prod
다.
ServerSignature
는 On, Off, EMail
중 하나로 설정할 수 있으며, 각각 출력하는 정보는 아래와 같다.
- On : 서버 버전, 가상 호스트명
- Off : 정보를 추가하지 않음
- EMail : 서버버전, 가상호스트명과 함께 ServerAdmin 정보도 함께 보여 줌
설정을 위와 같이 변경했다면, 아래의 명령어를 통해 apache를 재실행 해 준다.
|
|
Apache를 재실행 한 후 다시 HTTP Response를 확인 해 보면 Server: Apache
라는 정보만 나올 뿐 버전 정보나 OS 정보는 출력되지 않는 것을 확인할 수 있다.