web-dev-qa-db-ja.com

AJPで「シークレット」を使用すると、Tomcat 7.0.100およびApacheサーバー2.4でエラー403が発生する

バグCVE-2020-1938のため、最新のTomcat 7.0.100を使用します。参照 CVE-2020-1938 バージョン2.4では、AJPを介してTomcatに接続するApacheサーバーも使用します。

最新のTomcatバージョンでは、安全な通信のためにさまざまな新しい設定が必要です。残念ながら、私たちは常にHTTPエラー403を受け取り、その理由を知りません。

Apache workers.propertiesには、次の設定があります。

worker.list=okkommwm57f
ps=\
worker.okkommwm57f.type=ajp13
worker.okkommwm57f.Host=192.168.181.240
worker.okkommwm57f.secret=123456
worker.okkommwm57f.port=8309
worker.okkommwm57f.socket_keepalive=1
worker.okkommwm57f.connect_timeout=10000  
worker.okkommwm57f.prepost_timeout=10000
worker.okkommwm57f.socket_timeout=10
worker.okkommwm57f.connection_pool_timeout=600

AJPコネクタ構成は次のようになります。

<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" secret="123456" address="192.168.181.240" />

サイトをテストすると、HTTPエラー403が発生し続けます。さまざまなバージョンを試しましたが、役に立ちませんでした。すでに「secretRequired」を「false」に設定している。あまり機能しません。

多分誰かがアイデアを持っていて、私が問題を解決するのを助けることができます。ありがとうございました。

2
egmontr

同じ問題がありました。

追加しなければならなかったallowedRequestAttributesPattern=".*"コネクタへ

だからあなたの場合

<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" secret="123456" address="192.168.181.240" allowedRequestAttributesPattern=".*" />

これは、Tomcat 7.0.100で追加された新しい属性です。

新しい属性allowedRequestAttributesPatternをAJP/1.3コネクターに追加します。認識されない属性を持つ要求は、403でブロックされます。(マーク)

送信している属性はわかりませんが。ただし、設定がワイルドカードで機能する場合は、AJPリクエストの一部として認識されない属性を送信している可能性があります。

3
RobT

同じ問題がありました。トリックはパスワードを設定することでした。したがって、次のようにして問題を解決しました。

server.xml:

<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" secret="verysecure" secretRequired="true"/>

worker.properties:

worker.Tomcat-06.secret=verysecure
1
Thomas