apache_httpd_보안취약점_점검

Apache HTTPD 보안취약점 점검

전역설정으로 제한 걸기

<Location "/*">
    <LimitExcept GET POST>
        Order deny,allow
	Deny from all
    </LimitExcept>
</Location>

아파치 웹서버 로그 파일은 기본적으로 644로 생성된다. 이것은 실행하는 루트의 기본 umask가 0022로 설정되어있기 때문이다.
따라서 웹서버를 기동하는 계정의 기본 umask값만 변경하면 자동으로 설정된다.

하지만 계정의 기본값은 그대로 두고 아파치 웹서버의 설정변경만 하고 싶은경우 아래와 같이 설정하도록 한다.

apache 기동 스크립트인 apachectl내에 보면 envvars 파일을 로딩하는 부분이 존재한다. (소스 설치인경우)

# pick up any necessary environment variables
if test -f /APP/httpd-2.4.39/bin/envvars; then
  . /APP/httpd-2.4.39/bin/envvars
fi

위와같이 envvars 파일을 로딩하는 부분이 존재한다면 envvars 파일 내에 umask 설정을 추가해주면 된다.

umask 0027    #<- 반드시 4자리 설정을 하여야 한다.

만약 apachectl스크립트 내에 envvars를 로딩하는 부분이 없다면 (Redhat JBCS(Jboss core services)의 경우 존재하지 않음) apachectl 내에 직접 수동으로 umask 설정을 넣어주면 된다.

umask 0027  #<- 이경우에도 반드시 4자리로 설정한다.

위의 모든 방법을 써도 안되는경우 그냥 실행하는 계정의 umask값을 수정하는 수밖에 없다.

HTTP Host Header 변조 공격을 방지하기 위해서는 아래와 같이 설정하여야 한다.
www.example.comexample.com 도메인만 허용할 경우

  • Apache HTTPD 의 경우
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.example.com|example.com)$ [NC]
RewriteRule .* - [F]

또는 VirtualHost 설정에서 기본 호스트를 최상단에 두어 걸러지도록 설정한다.

<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>
  • JBoss EAP 7 의 경우 Undertow 하위 시스템의 expression-filter 를 사용하십시요
/subsystem=undertow/configuration=filter/expression-filter=host-checker:add(expression="not(equals(%{i,Host}, www.example.com) or equals(%{i,Host}, example.com)) -> response-code(403)")
/subsystem=undertow/server=default-server/host=default-host/filter-ref=host-checker:add 

결과 xml 파일은 아래와 같습니다.

<subsystem xmlns="urn:jboss:domain:undertow:3.1">
    <buffer-cache name="default"/>
    <server name="default-server">
        ...
        <host name="default-host" >
            ...
            <filter-ref name="host-checker"/>
        </host>
    </server>
    <filters>
        ...
        <expression-filter name="host-checker" expression="not(equals(%{i,HOST}, www.example.com) or equals(%{i,HOST}, example.com)) -> response-code(403)"/>
    </filters>
</subsystem>
  • JBoss EAP 6의 경우 rewrite 하위 시스템을 사용하십시요
<subsystem xmlns="urn:jboss:domain:web:2.1" default-virtual-server="default-host" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
    <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
    <virtual-server name="default-host" enable-welcome-root="true">
        <alias name="localhost"/>
        <alias name="example.com"/>
        <!-- added -->
        <rewrite pattern="^/(.*)$" substitution="-" flags="F">
            <condition test="%{HTTP:HOST}" pattern="!(www.example.com|example.com)" flags="NC"/>
        </rewrite>
    </virtual-server>
</subsystem>
로그인하면 댓글을 남길 수 있습니다.
  • apache_httpd_보안취약점_점검.txt
  • 마지막으로 수정됨: 2020/04/28 18:09
  • 저자 koov