Apache의 configtest 선언은 어디서 찾을 수 있나요?

Apache의 configtest 선언은 어디서 찾을 수 있나요?

Apache 웹서버의 보안을 강화하고 싶습니다.

  1. 열려 있는:

    /etc/apache2/conf.d/security
  2. 편집하다:

    ServerTokens 생산
    서버서명 끄기
  3. 다시 로드/다시 시작:

    /etc/init.d/apache2 다시 로드
    /etc/init.d/apache2 재시작

Prod 및 Off 값은 괜찮지만 다음 오류가 발생합니다.

ServerTokens는 하나의 인수를 취합니다. 서버에 표시되는 토큰 결정: 헤더 - 최소(imal), OS 또는 전체
'configtest' 작업이 실패했습니다.
ServerSignature는 하나의 인수, 서버 서명 활성화/비활성화(on|off|email)를 사용합니다.
'configtest' 작업이 실패했습니다.

Prod 및 Off를 허용하도록 지시할 수 있는 Apache의 configtest 선언은 어디에서 찾을 수 있습니까?

문제 해결 방법:

내 구성 파일에 허용되지 않는 인라인 주석이 있습니다.

따라서 다음을 수행하지 마십시오:

ServerTokens Prod # 2012년 10월 20일에 추가됨

대신 이렇게 하세요:

# 2012년 10월 20일에 다음을 추가했습니다.
ServerTokens 생산

그러나 오류 메시지는 세 가지 옵션(Min, OS 및 Full)만 있고 모두 소문자(on|off|email)인 반면 구성 파일에는 더 많은 옵션과 ucfirst가 있었기 때문에 혼란스러웠습니다.

답변1

Debian/Ubuntu 또는 유사한 시스템을 사용하고 있는 것 같습니다. 다음을 사용하여 구성 테스트를 실행할 수 있습니다.

apache2ctl configtest

Prod를 승인하도록 선언을 변경할 수 없으며(이미 수행됨) 그럴 필요도 없습니다.

오류 메시지는 매우 명확합니다. ServerTokens takes one argument ... ServerTokens 지시문에 둘 이상의 매개변수를 제공하는 경우에만 이 오류 메시지를 받을 수 있습니다.

 ServerTokens Prod 1

관찰한 것과 같은 방식으로 실패합니다. ServerTokens 및 ServerSignature 지시어에 둘 이상의 매개변수가 있는 이유를 파악해야 합니다. 제가 시도할 첫 번째 일은 파일을 vim에 로드하고 :set invlist이를 사용하여 파일에 숨겨진 문자를 표시하는 것입니다.

답변2

당신이 무슨 뜻인지 확실하지. apache2 configtest(redhat 상자에서) apachectl을 실행합니다. Apache에서 제공하는 스크립트인 apachectl을 보면 기본적으로 httpd -t를 실행하고 있습니다.

따라서 httpd 자체는 configtest를 실행할 때 구성을 테스트하는 것입니다.

ifdefine이 문제를 해결하는 한 가지 방법은 문제가 있는 구성 스탠자 주위에 부정된 s를 배치하는 것입니다.

예: 구성 파일에서:

<ifdefine ! DONTRUNMYBADCONFIG >
ServerTokens Prod
ServerSignature Off
</ifdefine>

그런 다음 실행

httpd -t -DDONTRUNMYBADCONFIG

구성을 테스트하려면 나는 다른 모든 것이 정상적으로 테스트될 것이라고 믿지만, -DDONTRUNMYBADCONFIG아파치 명령줄에 있는 한 이 두 지시문은 무시될 것입니다 .

원한다면 "confgitest" 섹션의 스크립트 -DDONTRUNMYBADCONFIG에 추가하여 정상적으로 실행할 수 있습니다./etc/init.d/apache2service httpd configtest

관련 정보