해커가 서버에 침입하면 먼저 "들어온다"는 것은 해커가 버전 번호를 알고 있는 경우와 같이 서버에서 실행 중인 일부 서비스의 세부 정보를 아는 것을 의미합니다. 해당 서비스 번호 뒤에는 해당 버전의 서비스에서 일부 취약점을 찾아 침입 및 공격할 수 있으므로 불필요한 문제를 피하기 위해 이러한 버전 번호를 숨겨야 합니다
시험해 보자
insoz:~ insoz$ curl -I http://127.0.0.1/phpinfo.php HTTP/1.1 200 OK Server: nginx/1.5.0 Date: Thu, 18 Jun 2015 02:39:32 GMT Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding X-Powered-By: PHP/5.3.1
우리 서버의 nginx와 php 버전이 노출되어 있는 것을 볼 수 있습니다. 숨겨진 메소드를 살펴보겠습니다
먼저 nginx에서 버전 번호를 숨기는 방법을 살펴보겠습니다.
nginx 구성 파일 nginx.conf에 다음 코드를 추가합니다
server_tokens off;
아파치에서 버전 번호를 숨기는 방법:
Apache 구성 파일 httpd.conf에 다음 코드를 추가합니다
ServerTokens Prod ServerSignature Off
PHP에서 버전 번호를 숨기는 방법을 살펴보겠습니다.
PHP 구성 파일 php.ini에 다음 코드를 추가합니다
expose_php = Off
수정이 완료된 후 서비스를 다시 시작하고 다시 테스트해 보겠습니다.
insoz:~ insoz$ curl -I http://127.0.0.1//phpinfo.php HTTP/1.1 200 OK Server: nginx Date: Thu, 18 Jun 2015 02:41:47 GMT Content-Type: text/html Connection: keep-alive Vary: Accept-Encoding