차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
was_보안_취약점_점검 [2019/11/14 04:04] koovwas_보안_취약점_점검 [2020/12/10 03:30] (현재) koov
줄 36: 줄 36:
 </code> </code>
 </WRAP> </WRAP>
 +
 +
 +
  
 === JBoss EAP 6.x === === JBoss EAP 6.x ===
줄 153: 줄 156:
 </code> </code>
 </WRAP> </WRAP>
 +
 +
 +===== HTTP Method Limit =====
 +특정 HTTP Method를 제한 한다.
 +
 +=== Tomcat ===
 +
 +<WRAP prewrap>
 +<code vim web.xml>
 +    <security-constraint>
 +        <web-resource-collection>
 +            <web-resource-name>Protected Context</web-resource-name>
 +            <url-pattern>/*</url-pattern>
 +            <http-method>PUT</http-method>
 +            <http-method>DELETE</http-method>
 +            <http-method>HEAD</http-method>
 +            <http-method>TRACE</http-method>
 +            <http-method>OPTIONS</http-method>
 +        </web-resource-collection>
 +        <auth-constraint />
 +    </security-constraint>
 +</code>
 +</WRAP>
 +
 +===== AJP Secret =====
 +이것은 Tomcat / Undertow에서 AJP 프로토콜의 구성 문제입니다. AJP는 매우 신뢰할 수있는 프로토콜이므로 신뢰할 수없는 클라이언트에게 노출되어서는 안됩니다. 안전하지 않은 (일반 텍스트 전송) 네트워크가 안전하다고 가정합니다. AJP가 노출되지 않는 구성을 사용하여 예방 조치를 취해야합니다.
 +
 +우선 순위에 따라 다음 완화 조치 중 하나를 적용해야합니다.
 +
 +  * Tomcat에서 AJP를 모두 비활성화하고 대신 프록시 연결에 HTTP 또는 HTTPS를 사용하십시오. HTTP 및 HTTPS에는 AJP와 동일한 신뢰 문제가 없습니다.
 +  * 신뢰할 수있는 호스트에서만 들어오는 연결이 허용되도록 네트워크 바인딩 및 방화벽 구성을 신중하게 검토 할뿐만 아니라 비밀로 AJP 연결을 보호하십시오.
 +  * 네트워크 바인딩 및 방화벽 구성 만 사용하여 들어오는 연결이 신뢰할 수있는 호스트에서만 허용되도록하십시오.
 +
 +첫 번째 옵션 인 AJP 비활성화는 가장 안전하고 강력한 권장 솔루션입니다. 비밀로 AJP를 보호하는 것은 덜 방해가 될 수 있지만 ''secret'' 매개 변수 를 지원 하는 httpd mod_jk 버전 중 하나 를 사용해야합니다 . 이 매개 변수는 현재 httpdRed Hat Enterprise Linux 7 및 8 버전에서 지원되지만 Red Hat Software Collections에 포함 된 버전은이 매개 변수를 지원하지 않으므로 다른 완화 전략을 사용해야합니다.
 +
 +==== Tomcat ====
 +
 +<WRAP prewrap>
 +<code xml>
 +<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR_TOMCAT_IP_ADDRESS" requiredSecret="YOUR_AJP_SECRET" />
 +</code>
 +</WRAP>
 +
 +==== JBoss EAP 5.2.x ====
 +<WRAP prewrap>
 +<code xml>
 +<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}" redirectPort="8443" requiredSecret="YOUR_AJP_SECRET"/>
 +</code>
 +</WRAP>
 +
 +==== JBoss EAP 6.4.x ====
 +
 +<WRAP prewrap>
 +<code xml>
 +<system-properties>
 +    <property name="org.apache.coyote.ajp.DEFAULT_REQUIRED_SECRET" value="YOUR_AJP_SECRET"/>
 +</system-properties>
 +</code>
 +</WRAP>
 +
 +==== JBoss EAP 7.x ====
 +
 +<WRAP prewrap>
 +<code xml>
 +<subsystem xmlns="urn:jboss:domain:undertow:7.0" ...>
 +    ...
 +    <server name="default-server">
 +        <http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true"/>
 +        <ajp-listener name="ajp" socket-binding="ajp"/>
 +        <https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
 +        <host name="default-host" alias="localhost">
 +            ...
 +            <!-- add the following with your AJP port (8009) -->
 +            <filter-ref name="secret-checker" predicate="equals(%p, 8009)"/>
 +        </host>
 +    </server>
 +    ...
 +    <filters>
 +        <!-- add the following with your credential (YOUR_AJP_SECRET) -->
 +        <expression-filter name="secret-checker" expression="not equals(%{r,secret}, 'YOUR_AJP_SECRET') -> response-code(403)"/>
 +    </filters>
 +</subsystem>
 +</code>
 +</WRAP>
 +
 +<WRAP prewrap>
 +<code bash>
 +/subsystem=undertow/configuration=filter/expression-filter=secret-checker:add(expression="not equals(%{r,secret}, 'YOUR_AJP_SECRET') -> response-code(403)")
 +/subsystem=undertow/server=default-server/host=default-host/filter-ref=secret-checker:add(predicate="equals(%p,8009)")
 +</code>
 +</WRAP>
 +
 +==== mod_proxy (ajp를 사용하는 mod_proxy_ajp / mod_proxy_balancer) ====
 +이 secret특성은 다음 버전부터 지원됩니다. ''JBCS httpd 2.4.37''; ''RHEL 7 httpd-2.4.6-67''; ''RHEL 8 httpd-2.4.6-62''
 +  * ''mod_proxy_ajp''의 경우 ''ProxyPass''설정 의 ''secret''속성을 추가 할 수 있습니다.
 +  * ''mod_proxy_balancer''의 경우 ''BalancerMember''설정 의 ''secret''속성을 추가 할 수 있습니다.
 +예를 들어 다음과 같이 ''secret=YOUR_AJP_SECRET''구성을 추가 하십시오 (예 : <HTTPD_HOME>/conf/httpd.conf또는 <HTTPD_HOME>/conf.d/proxy_ajp.conf).
 +
 +  * mod_proxy_ajp:
 +<WRAP prewrap>
 +<code>
 +ProxyPass /example/ ajp://localhost:8009/example/ secret=YOUR_AJP_SECRET
 +</code>
 +</WRAP>
 +
 +   * mod_proxy_balancer:
 +
 +<WRAP prewrap>
 +<code>
 +<Proxy balancer://mycluster>
 +    BalancerMember ajp://node1:8009 route=node1 secret=YOUR_AJP_SECRET
 +    BalancerMember ajp://node2:8009 route=node2 secret=YOUR_AJP_SECRET
 +</Proxy>
 +ProxyPass /example/ balancer://mycluster/example/ stickysession=JSESSIONID|jsessionid
 +</code>
 +</WRAP>
 +
 +==== mod_jk ====
 +  * mod_jk - ''workers.properties''내에 ''worker'' 또는 ''loadbalancer'' 에 ''secret'' 속성을 지정할 수 있습니다. 로드 밸런서에서 ''secret''을 설정하면 모든 구성원이 이 속성을 상속합니다. 이 ''secret''속성 지원은 ''mod_jk 1.2.12''부터 추가되었습니다.
 +
 +<WRAP prewrap>
 +<code>
 +worker.<WORKER_NAME>.secret=YOUR_AJP_SECRET
 +</code>
 +</WRAP>
 +
 +==== mod_cluster ====
 +''mod_cluster'' 는 ''secret'' 속성을 지원하지 않습니다.
 +''mod_cluster''가 필요한 경우 Tomcat/JBoss 측의 AJP 커넥터에 구성된 경우 올바른 ''secret'' 연결할 수 없기 때문에 ''http''또는 ''https''대신 사용하도록 구성을 변경해야합니다.
 +
 +
 +
 +
 +
 +==== 관련링크 ====
 +  * https://access.redhat.com/solutions/4851251
  
  • was_보안_취약점_점검.1573704270.txt.gz
  • 마지막으로 수정됨: 2019/11/14 04:04
  • 저자 koov