Apache의 HTTP 응답에서 Server : 헤더를 제거하는 방법은 무엇입니까? 싶습니다. Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8

줄을 제거하고 싶습니다.

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

내 서버의 HTTP 응답에서 include/ap_release.h아파치를 직접 수정 하고 컴파일하는 것 외에는 아무것도 찾을 수 없었 습니다. 내가 모르는 방법이 있는지 궁금합니다.



답변

ModSecurity 오픈 소스 웹 애플리케이션 방화벽 을 사용하여 Http-Header에서 서버 식별을 제거하거나 숨길 수 있습니다 .

서버 ID 마스킹

공격자의 속도를 늦추고 혼동하는 데 도움이되는 한 가지 기술은 웹 서버 ID 변경입니다. 웹 서버는 일반적으로 서버 헤더의 모든 HTTP 응답과 함께 ID를 보냅니다. Apache는 기본적으로 이름과 정식 버전을 보내는 것뿐만 아니라 서버 모듈도 버전을 추가 할 수 있도록 도와줍니다.

Apache 웹 서버의 ID를 변경하려면 소스 코드로 이동하여 “Apache”라는 이름이 하드 코딩 된 위치를 찾아서 변경 한 후 서버를 다시 컴파일해야합니다. 같은 효과를 얻을 수 있습니다

SecServerSignature 지시어 :

SecServerSignature "Microsoft-IIS/5.0"

이 방법은 잘 작동하지만 숙련 된 공격자 (및 도구)는 다른 기술을 사용하여 웹 서버를 “지문”할 수 있습니다. 예를 들어, 기본 파일, 오류 메시지, 발신 헤더 순서, 서버가 특정 요청에 응답하는 방식 및 이와 유사한 방식으로 모두 실제 ID를 제공 할 수 있습니다. 향후 mod_security 릴리스에서 ID 마스킹에 대한 지원을 더욱 강화할 것입니다.

Apache 서명을 변경했지만 오류 로그에 이상한 메시지가 표시되는 경우 (일부 모듈이 여전히 표시됨-오류 로그에만 영향을 미치며, 외부에서 여전히 예상대로 작동 함) :

[Fri Jun 11 04:02:28 2004] [notice]
Microsoft-IIS/5.0 mod_ssl/2.8.12
OpenSSL/0.9.6b \ configured --
resuming normal operations

그런 다음 chrooting에 대해 설명한대로 mod_security가 마지막으로 실행되도록 모듈 로딩 순서를 다시 정렬해야합니다.

노트

이 지시문이 작동하려면 ServerToken을 Full로 두거나 설정해야합니다.

SecServerSignature 지시문을 사용하여 공용 서버 서명을 변경하면 ModSecurity는 실제 서명을 오류 로그에 기록하기 시작하여 웹 서버와 사용 된 모듈을 식별 할 수 있습니다.

출처 : ModSecurity 참조 매뉴얼


답변

ServerTokensProd“로 설정 하면 머리글을 ” Server: Apache“로 줄일 수 있습니다 . 전체 옵션 목록은 설명서를 참조하십시오.

Apache 2.2 설명서

Apache 2.4 설명서

참고 : 설정은 두 버전에서 동일하지만 2.4 설명서에이 메모가 추가되어 있습니다.

상호 운용성 문제를 디버그하기가 더 어렵 기 때문에 ServerToken을 최소값 미만으로 설정하지 않는 것이 좋습니다. 또한 Server : 헤더를 비활성화하면 서버 보안을 강화할 수 없습니다. “모호함을 통한 보안”이라는 개념은 신화이며 잘못된 안전 감각으로 이어집니다.

“Apache”라는 단어를 완전히 제거하려면 소스를 수정해야합니다.