Apache httpd“서버 :”HTTP 헤더 변경


33

Apachehttpd 가 응답 데이터와 함께 다시 보내는 HTTP 헤더 중 하나 는 "서버"입니다. 예를 들어, 내 웹 서버 시스템은 비교적 최신의 아치 리눅스입니다. 다음과 유사한 헤더를 다시 보냅니다.

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html

내가 가지고 ServerSignature off있는 /etc/httpd/conf/httpd.conf,하지만 "서버 :"헤더는 여전히 나타납니다. mod_headers 실험했습니다 . 나는 그것을 가능하게하고 몇 가지를 시도했다.

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>

httpd위의 구성으로 중지하고 시작한 후 HTTP 헤더에는과 같은 것이 포함 ProcessingTime: 1523되지만 "Server :"헤더 행은 변경되지 않습니다. 그래서 "mod_headers"가 설치되어 활성화되어 있고 작동하지만 원하는 것은 아닙니다.

"mod_security"라는 것이 이것을 요구한다고 생각하지만, mod_security가 가지고있는 모든 수하물을 원하지 않습니다.

최신 정보:

일단 mod_security설치 되면 몇 가지 지시문 만 필요합니다.

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>

즉 대한의 mod_security2.7.7


3
conf 파일을 변경 한 후 아파치를 다시 시작 했습니까? 또한 'httpd.com'이라는 파일을 본 적이 없으며 일반적으로 'httpd.conf'입니다.
Michael Ozeryansky

@MichaelOzeryansky-맞춤법 오류를 찾아 주셔서 감사합니다. "httpd.conf"입니다. httpd.conf를 변경 한 후 httpd를 중지하고 시작합니다.
Bruce Ediger

답변:


12

서버 ID / 토큰 헤더는 " ServerTokens "지시문 (에서 제공 mod_core)으로 제어합니다. Apache HTTPD 소스 코드를 수정하거나 mod_security모듈을 사용하는 것 외에 서버 ID 헤더 를 완전히 억제하는 다른 방법은 없습니다 .

mod_security방법을 사용하면 modsecurity.conf파일 에서 모든 모듈 지시문 / 기능을 비활성화하고 추가 "수하물"없이 서버 헤더 ID 지시문 만 활용할 수 있습니다.


이것은 효과가 있습니다. 대단히 감사합니다. mod_security는 아치 리눅스의 일반적인 패키지가 아닙니다. AUR에는 PKGBUILD가 있지만 2011 년 이후 (2014 년 4 월 12 일 현재) 업데이트되지 않았으며 실제로는 이전 버전의 mod_security를 ​​참조합니다. 항상 그렇듯이 배포판이 다를 수 있습니다.
Bruce Ediger

25

mod_security는 훌륭하지만 실제로 목표를 달성하기 위해 필요하지는 않습니다.

모든 모드가 포함 된 httpd.conf후에는 선택한 헤더를 간단히 설정 해제 할 수 있습니다.

Header unset Server

ServerSignature Off
ServerTokens Prod

http://httpd.apache.org/docs/2.4/mod/core.html#serversignature


2
사용자 정의 텍스트가 작업 아파치를 완전히 숨기려면 mod_sec이 필요합니다. 그렇지 않으면 솔루션이 좋고 간단합니다 :)
intika

이것은 Centos 6에서 Apache 2.2 (패치)를 사용하는 데 아무런 영향을 미치지 않습니다.
jph

1
아파치 2.4에서는, 구문 오류로보고됩니다 : 잘못된 명령 '헤더', 아마도 서버 구성에 포함되지 않은 모듈에 의해 맞춤법이 틀린 또는 정의
랩터

3
@Raptor 당신은 설치해야 mod_headers를 함께sudo a2enmod headers
Ortomala Lokni

1
Header unset ServerApache 2.2 및 2.4에서는 작동하지 않습니다. 응답 헤더는 여전히 포함Server: Apache
Maris B.

13

여전히 찾고있는 사람들을 위해 이것을 업데이트하십시오. HTTP 헤더의 서버 줄을 변경하는 데 문제가있었습니다. 이 조언은 systemd 및 Apache 2.4.7의 데비안 브랜치 배포판에서 작동합니다. 특히, Ubuntu Server LTS 14.04.03을 사용하고 있습니다. 내가 찾은 몇 가지 조언은

grep -Ri servertokens /etc/apache2

이로 인해 ServerTokens와 ServerSignature가 모두 지정된 /etc/apache2/conf-available/security.conf가 나타납니다. 따라서 /etc/apache2/apache2.conf에서 변경 한 내용은 이미 security.conf에 지정된 지시문으로 덮어 쓰여졌습니다.

나는 security.conf의 지시문을 간단히 변경했고 Apache는 원하는대로 작동하기 시작했습니다.

ServerTokens Prod
ServerSignature Off

Header unset Server 주제에서 Apache 개발자가 문제가 해결되지 않는다고 버그 보고서를 발견했습니다. Tim Berners-Lee가 HTTP / 1.1, RFC 2616 사양에 따라 서버 태그가 선택 사항이라고 말한 것에도 불구하고 그것은 분명히 철학적 인 문제입니다.

Qualys 스캔을 만족시키기 위해 서버 태그를 "알 수 없음"으로 설정하고 싶었습니다. 그래서이 DigitalOcean 튜토리얼에 따라 libapache2-modsecurity라고하는 mod_security를 ​​설치했습니다 . 행운을 빕니다, 나는 당신에게 미래의 모든 독자들을 위해 도움이 되었기를 바랍니다.


1

필자는 Oracle HTTP Server 11.1.1.9 (Apache 2.2.22에 빌드 됨)에서 어느 정도까지 어느 정도 테스트를 마쳤습니다.

"ServerTokens"를 "none"으로 설정하면 헤더 자체가 응답으로 계속 전송되지만 "Server"헤더 값을 제거하는 것처럼 보이지만 이제는 null 값을 갖습니다.

ServerTokens 없음

응답 헤더는 다음과 같습니다.

HTTP / 1.1 200 OK

날짜 : 2015 년 12 월 28 일 월요일 07:02:45 GMT

섬기는 사람:

최종 수정 : 2015 년 12 월 27 일 일요일 07:29:13 GMT

.

.


2
Centos 6 저장소의 Apache 2.2 스톡에서 값을 "none"으로 설정하면 Apache가 모든 데이터를 출력합니다. 예 : "서버 : Apache / 2.2.15 (CentOS) DAV / 2 PHP / 5.3.3 mod_ssl / 2.2.15 OpenSSL / 1.0.1e-fips Phusion_Passenger / 4.0.59 mod_perl / 2.0.4 Perl / v5.10.1"
jph

none최신 Apache 에서는 사용할 수 없습니다 :ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.