서버 토큰이 해제되어 있는지 어떻게 확인합니까?


11

우리는 서버 토큰을 꺼야한다는 반란 보고서에서 피드백을 받았습니다. 이것은 사람들이 우리가 사용하는 PHP 버전을 볼 수 없게하고 특정 PHP 버전을 대상으로하는 기능을 제한합니다.

http 블록 아래에서 nginx.conf에 다음을 추가했습니다.

server_tokens off;

그러나이 변경 사항을 확인하기 위해 어떤 도구를 사용할 수 있습니까?


1
server_tokenPHP 버전과는 아무런 관련이 없습니다. 일반적으로 별도의 헤더로 전송됩니다 X-Powered-By. php.net/manual/en/ini.core.php#ini.expose-php
Alexey Ten

알렉세이, 서버 토큰은 내 솔루션의 일부일뿐입니다. PHP 버전 공개를 중지하려면 추가 설정이 필요합니다. 감사!
fyberoptik 2016 년

답변:


14

로부터 수동 당신은 설정이 무엇을 알고 :

구문 : server_tokens on | off;
기본값 : server_tokens on;
컨텍스트 : http, 서버, 위치

오류 메시지 및 "서버"응답 헤더 필드에서 nginx 버전 방출을 활성화 또는 비활성화합니다.

옵션은 다음과 같습니다.

  • 예를 들어 사용자 지정 404 오류 메시지가없는 경우 단순히 존재하지 않는 페이지를 요청하면 바닥 글에 nginx/1.2.3더 이상 버전 정보가 표시되지 않습니다 .
  • 서버 헤더를 검사하고 버전이 더 이상 표시되지 않는지 확인하십시오.

HTTP 응답 헤더를 확인하는 간단한 점검은 다음과 같이 수동으로 연결 telnet www.example.com 80 하는 것입니다.

클라이언트 : HEAD / HTTP / 1.1
클라이언트 : 호스트 : www.example.com

서버 : HTTP / 1.1 200 OK
서버 : 날짜 : 1970 년 1 월 1 일 1 일 22:13:05 GMT
서버 : 서버 : Nginx / 1.2.3
서버 : 연결 :
서버 닫기 : 내용 유형 : text / html


1
귀하의 답변에 감사드립니다. HBruijn, Windows 7 telnet으로 실패했습니다. curl -I example.com으로 조금 더 성공했지만 PHP 정보는 표시되지 않습니다.
fyberoptik 2016 년

일반적으로 페이지에서 다른 헤더이기 때문에 이것은 PHP에 영향을 미치지 않습니다 ...
Thomas Ward

4

좀 더 인터넷 검색을 한 후 curl 명령으로 서버 토큰과 PHP 버전을 모두 보여주는 서버 헤더를 확인할 수 있습니다.

curl -I -L www.example.com

PHP에 필요한 변경 사항을 지적한 Alexey에게 감사합니다.

HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 04 Jun 2015 10:49:35 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.example.com

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 04 Jun 2015 10:49:36 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Last-Modified: Thu, 04 Jun 2015 10:49:35 GMT
Cache-Control: no-cache, must-revalidate, post-check=0, pre-check=0
ETag: "1433414975"
Content-Language: en

1

또한 PHP 프로젝트를 제공하는 경우 다음을 변경해야 할 수도 있습니다. /etc/nginx/{fastcgi,fastcgi_params).conf

fastcgi_param  SERVER_SOFTWARE    nginx;

0

"규정 준수, 보안 및 기타 정책 요구 사항을 자동화 된 테스트로 전환 할 수있는 도구 인 InSpec을 살펴보십시오."

https://www.inspec.io

Nginx 서버에 필요한 모든 구성 테스트를 수행 할 수 있습니다. conf 파일의 존재와 값을 테스트하는 한 가지 방법이 있습니다 server_tokens.

conf_path = '/etc/nginx/nginx.conf'

control 'Server tokens should be off' do
  describe file(conf_path) do
    it 'The config file should exist and be a file.' do
      expect(subject).to(exist)
      expect(subject).to(be_file)
    end
  end
  if (File.exist?(conf_path))
    Array(nginx_conf(conf_path).params['http']).each do |http|
      describe "http:" do
        it 'server_tokens should be off if found in the http context.' do
          Array(http["server_tokens"]).each do |tokens|
            expect(tokens).to(cmp 'off')
          end
        end
      end
    end
  end
end

올바르게 설정되면 InSpec은 다음을 반환합니다.

  ✔  Server tokens should be off: File /etc/nginx/nginx.conf
     ✔  File /etc/nginx/nginx.conf The config file should exist and be a file.
     ✔  http: server_tokens should be off if found in the http context.

그렇지 않은 경우 :

  ×  Server tokens should be off: File /etc/nginx/nginx.conf (1 failed)
     ✔  File /etc/nginx/nginx.conf The config file should exist and be a file.
     ×  http: server_tokens should be off if found in the http context.

     expected: "off"
          got: ["on"]

     (compared using `cmp` matcher)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.