nginx가 반환한 서버 헤더를 어떻게 변경합니까?
-
05-07-2019 - |
문제
nginx만 표시하도록 버전을 숨기는 옵션이 있지만, 아무것도 표시하지 않거나 헤더를 변경하지 않도록 숨길 수 있는 방법이 있습니까?
해결책
Apache와 마찬가지로 소스를 빠르게 편집하고 다시 컴파일합니다.에서 Calomel.org:
서버:String은 클라이언트로 다시 전송되어 실행중인 HTTP 서버와 어떤 버전이 있는지 알려주는 헤더입니다.이 문자열은 Alexia 및 Netcraft와 같은 장소에서 인터넷에서 라이브 유형의 웹 서버 수와 어떤 유형의 웹 서버 수에 대한 통계를 수집하는 데 사용됩니다.Nginx의 저자 및 통계를 지원하려면이 문자열을 그대로 유지하는 것이 좋습니다.그러나 보안의 경우 사람들이 자신이 실행중인 것을 알기를 원하지 않으며 소스 코드에서이를 변경할 수 있습니다.소스 파일을 편집합니다
src/http/ngx_http_header_filter_module.c
48행과 49행을 보세요.문자열을 원하는 모든 것으로 변경할 수 있습니다.
## vi src/http/ngx_http_header_filter_module.c (lines 48 and 49)
static char ngx_http_server_string[] = "Server: MyDomain.com" CRLF;
static char ngx_http_server_full_string[] = "Server: MyDomain.com" CRLF;
2011년 3월 편집: Nginx의 표준을 대체하는 새로운 옵션을 지적한 아래 Flavius의 제안 HttpHeaders모듈 갈래와 함께 HttpHeadersMore모듈.표준 모듈을 다시 컴파일하는 것은 여전히 빠른 수정이며, 표준 모듈을 사용하고 서버 문자열을 자주 변경하지 않을 경우 의미가 있습니다.그러나 그 이상을 원한다면 HttpHeadersMoreModule이 강력한 프로젝트이며 HTTP 헤더를 사용하여 모든 종류의 런타임 마법을 수행할 수 있습니다.
다른 팁
Nginx를 사용하여 백엔드 응용 프로그램을 프록시하고 백엔드가 자체 광고를 원한다면 Server:
nginx가 포함하지 않은 헤더는 그것을 덮어 쓸 수 있습니다. server {…}
스탠자 및 세트 :
proxy_pass_header Server;
그것은 Nginx가 해당 헤더를 내버려두고 백엔드에 의해 설정된 값을 다시 작성하지 않도록 설득합니다.
마지막 업데이트는 얼마 전 였으므로 여기 우분투에서 저에게 효과가있는 것이 있습니다.
sudo apt-get update
sudo apt-get install nginx-extras
그런 다음 다음 두 줄을 추가하십시오 http
섹션 nginx.conf
, 일반적으로 /etc/nginx/nginx.conf에 위치합니다.
sudo nano /etc/nginx/nginx.conf
server_tokens off; # removed pound sign
more_set_headers 'Server: Eff_You_Script_Kiddies!';
또한 Nginx를 다시 시작하는 것을 잊지 마십시오 sudo service nginx restart
.
간단하고 /etc/nginx/nginx.conf를 편집하고 댓글을 제거하십시오
#server_tokens off;
검색 http 부분.
매우 간단합니다. 서버 섹션 에이 줄을 추가하십시오.
server_tokens off;
more_set_headers 'Server: My Very Own Server';
특수 모듈이 있습니다. http://wiki.nginx.org/nginxhttpheadersmoremodule
이 모듈을 사용하면 지정한 출력 또는 입력 헤더를 추가, 설정 또는 지우실 수 있습니다.
이것은 표준의 향상된 버전입니다 헤더 모듈은 "내장 헤더"와 같은 더 많은 유틸리티를 제공하기 때문에 모듈
Content-Type
,Content-Length
, 그리고Server
.또한 옵션 HTTP 상태 코드 기준을 사용하여
-s
옵션 및 선택적 컨텐츠 유형 기준을 사용합니다-t
옵션으로 출력 헤더를 수정하는 동안 옵션 more_set_headers 그리고 more_clear_headers 지침 ...
Nginx 엑스트라를 설치하십시오
sudo apt-get update
sudo apt-get install nginx-extras
Nginx.conf (HTTP 섹션 아래)에서 두 줄을 따라 두 줄을 추가하여 서버 세부 정보를 응답에서 제거 할 수 있습니다.
more_clear_headers Server;
server_tokens off;
헤더를 5자 이하의 다른 문자열로 변경해도 괜찮다면 간단히 바이너리를 패치하면 됩니다.
sed -i 's/nginx\r/thing\r/' `which nginx`
솔루션으로서 몇 가지 주목할만한 이점이 있습니다.즉, 배포판에서 nginx-extras를 사용할 수 없는 경우에도 패키지 관리자가 nginx 버전 관리를 처리하도록 허용할 수 있으므로(소스에서 컴파일하지 않음) 추가 사항에 대해 걱정할 필요가 없습니다. nginx-extras와 같은 코드가 취약합니다.
물론 옵션도 설정하고 싶을 것입니다. server_tokens off
, 버전 번호를 숨기거나 해당 형식 문자열도 패치합니다.
"5글자 이하"라고 말한 이유는 물론 다음과 같이 언제든지 바꿀 수 있기 때문입니다.
nginx \0
~와 함께
밥 \0 \0
마지막 2바이트는 변경하지 않고 그대로 둡니다.
실제로 5자보다 많은 문자를 원하는 경우 server_tokens를 켜진 상태로 두고 (약간 더 긴) 형식 문자열을 바꾸는 것이 좋습니다. 캐리지 리턴).
...위의 내용 중 어느 것도 이해되지 않거나 이전에 바이너리를 패치한 적이 없다면 이 접근 방식을 피하는 것이 좋습니다.
유일한 방법은 src/http/ngx_http_header_filter_module.c 파일을 수정하는 것입니다. 48 행의 Nginx를 다른 문자열로 변경했습니다.
nginx 구성 파일에서 할 수있는 일은 설정하는 것입니다. Server_tokens 꺼짐. 이렇게하면 Nginx가 버전 번호를 인쇄하지 못하게됩니다.
물건을 확인하려면 시도하십시오 컬 -I http://vurbu.com/ | Grep 서버
돌아와야합니다
Server: Hai
Parthian Shot의 답변을 읽은 후에는 /usr/sbin/nginx
이진 파일. 그런 다음 파일 에이 세 줄이 포함되어 있음을 알았습니다.
Server: nginx/1.12.2
Server: nginx/1.12.2
Server: nginx
기본적으로 첫 번째는 두 가지를 의미합니다 server_tokens on;
지침 (서버 버전 포함). 그런 다음 이진 파일 내의 해당 라인과 일치하도록 검색 기준을 변경합니다.
sed -i 's/Server: nginx/Server: thing/' `which nginx`
더 멀리 파고 나면 Nginx가 생성 한 오류 메시지 도이 파일에 포함되어 있음을 알았습니다.
<hr><center>nginx</center>
버전이없는 3 개가 있으며 그 중 하나는 버전을 포함했습니다. 따라서 오류 메시지 내에서 nginx 문자열을 바꾸기 위해 다음 명령을 실행합니다.
sed -i 's/center>nginx/center>thing/' `which nginx`
Nginx에 따르면 선적 서류 비치 사용자 지정 값 또는 제외를 지원합니다.
Syntax: server_tokens on | off | build | string;
그러나 슬프게도 a 상업적 가입:
또한 버전 1.9.13부터 시작하는 상용 가입의 일부로 오류 페이지의 서명 및 "서버"응답 헤더 필드 값을 변수와 함께 문자열을 사용하여 명시 적으로 설정할 수 있습니다. 빈 문자열은 "서버"필드의 배출을 비활성화합니다.
나는 게시물이 다소 낡았다는 것을 알고 있지만, Nginx를 소스에서 컴파일하지 않고 데비안 기반 분포에 대한 솔루션을 쉽게 찾았습니다.
먼저 Nginx-Extras 패키지를 설치하십시오
sudo apt nginx-extras를 설치하십시오
그런 다음 nginx.conf를 편집하고 서버 블록 내부에 다음 줄을 추가하여 Nginx HTTP 헤더를 더 많이로드하십시오.
load_module 모듈/ngx_http_headers_more_filter_module.so;
완료되면 more_set_headers 및 more_clear_headers 지시문 모두에 액세스 할 수 있습니다.
응답에서 서버 헤더 값에 대해 묻고 있습니까? Add_header 지시문으로 변경해 볼 수 있지만 작동하는지 확실하지 않습니다. http://wiki.codemongers.com/nginxhttpheadersmodule