JPCERTからApach Tomcatの脆弱性注意喚起があった。

自分が利用しているTomcatの版数は8.5.47。だったので

見事に脆弱性バージョンに当てはまる。これはアップデートせねばなるまい。

 

TomcatをアップデートしてAJPの設定をしたところでどつぼにはまった。

AJPとはhttpdで受け取ったリクエストをTomcatサーバに渡す仕組みだ。

この場合Apache httpdがリバースプロキシとなる。

TomcatのAJPの設定はserver.xmlに記述する。通常はコメントになっている。

このコメントをはずして、次のように記述する。

    <Connector protocol="AJP/1.3"
               address="::1"
               secretRequired="false"
               port="8009"
               redirectPort="8443" />
そうすると、うまくいくはずだった。
だってsecretRequiredもちゃんと書いたんだもん。

ところがまったく、httpdからTomcatにつながらない。
tcpdumpをとってもhttpdから先にリクエストが飛ばない。
クライアントにはむなしく503エラーになるばかり。

こうなると、アップデートで時間を潰すわけには行かない。
仕事の空き時間を使って試行錯誤することになる。
何度もAJPの記述を変えたり、mod_securityをはずしてみたり、
tomcatの版数が上がるのをまって再インストールしてみたり、
いろいろ、試行錯誤したが、まったくtomcatにリクエストは飛ばない。

さらに調べるとaddress="::1"はIP6での通信とあった。
address"0.0.0.0"も試してみたり、address="127.0.0.1"もやってみたが、
やはりダメ。

さらにウェブパトーロールを続けていくと、address="tomcatのipアドレス"とある。
これがドンピシャだった。

addressパラメータにtomcatのipアドレスを指定すると、
あっけないくらいあっさりと通信ができるようになった。

Tomcatのドキュメントを読んでも、理解できなかったのが良くないのだが、
半分わからずにやっているため遠回りしてしまったのかもしれない。
が、すべてを理解して試すことは不可能!
回り道したが、良い経験をしたと考えよう。