SoftEtherVPN を Apache2.4 が動作しているLinuxServerへインストールしました。
Apacheでは TCP/80,TCP/443 を Listenしています。
そこでSoftEtherがListenしているTCP/5555 へ仮想ホストを利用してProxyできないかと考えて以下のような仮想ホストを作成しました。
apache
1<VirtualHost *:443> 2 ServerName vpn.example.com 3 (中略) 4 ProxyPass / https://localhost:5555/ 5</VirtualHost>
SoftEtherクライアント側ではホスト名を vpn.example.com,ポート名を443に指定。
名前解決はクライアント側、サーバ側ともhostsファイルで設定しています。
SoftEtherクライアントが入っている側のブラウザでhttps://vpn.example.com/
をリクエストすると、SoftEther の設定画面が表示されるため、仮想ホストの設定は誤っていないと思われます。
ところが、SoftEtherクライアントから接続を要求すると、サーバ側では設定した仮想ホストへはリクエストがいかず、 IPアドレスベースでのリクエストになってしまっています。
実際にはアドレスベースのリクエストは mod_securityで403エラーになります(このエラーで現象に気づきました)。アドレスベースでのアクセスを禁止するルールに引っかかっているのです。
これはmod_securityのログです。
mod_security
1[Wed Apr 08 13:31:04.319360 2020] [:error] 2[pid 6583:tid 140555883308800] [client xxx.xxx.xx.xx:48170] 3[client xxx.xxx.xx.xx] 4ModSecurity: Access denied with code 403 (phase 2). Pattern match "^[\\d.:]+$" at REQUEST_HEADERS:Host. 5[file "/usr/local/apache2/conf/extra/base_rules/modsecurity_crs_21_protocol_anomalies.conf"] [line "101"] 6 [id "960017"] [rev "2"] [msg "Host header is a numeric IP address"] 7 [data "210.148.106.165"] [severity "WARNING"] 8 [ver "OWASP_CRS/2.2.8"] [maturity "9"] [accuracy "9"] 9 [tag "OWASP_CRS/PROTOCOL_VIOLATION/IP_HOST"] 10[tag "WASCTC/WASC-21"] [tag "OWASP_TOP_10/A7"] 11[tag "PCI/6.5.10"] 12[tag "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx"] 13 [hostname "nnn.nnn.nnn.nnn"] [uri "/"] [unique_id "Xo1TiPhqCCAkyb1WSoOwswAAB@M"]
SoftEtherクライアントはHTTPSプロトコルを利用するものの、仮想ホストには対応していないのでしょうか。
もしかしたらhostsでの名前解決とDNSでの名前解決でビヘイビアが違ったりするのかな、そんなわけないなぁなどと唸っているところです。
試したことがある方いらっしゃいませんでしょうか。
あなたの回答
tips
プレビュー