【Webサーバー(Apache)】ローカルIPアドレスが漏えいしてしまうという脆弱性と対策について
ローカルIPがばれてしまう脆弱性への対策 Apache編
インターネットに公開している
Webサーバーについて
脆弱性の診断を受けたところ、
特定の条件下でローカルIPが露呈
されてしまう脆弱性が発見される
IISのサーバーだけでなくApacheの
サーバーでも発見された
ちなみにIISとApacheとnginxの
シェアはほとんど同じくらいらしい
ということはおのずと
対策についてもそれぞれ
覚えないといけなそうだが
これもいい機会と思っておこう
Apacheにおいての対策は
Sever_nameを指定しておくこと
httpリクエストとServer_nameの関係
Server_nameとは
Apache内で使われている環境変数のこと
一見自身のサーバー名が格納されるように
見える
http(またはhttps)://exsample.com でアクセス ↓ Server_name : exsample.com
として返してくれる
実はこれ
> HEAD /xxxx HTTP/1.1 > Host: exsample.com > User-Agent: xxxx > Accept: */*
こんなかんじで送信した
httpリクエストのHost部分を参照している
つまり
IP直打ちでアクセスすると
http://12.34.56.78 でアクセス (※グローバルアドレス) ↓ Server_name : 12.34.56.78
IPで返してくることになる
ここでhttp1.0・Hostなしで
リクエストを送信すると
> HEAD /xxxx HTTP/1.0 > Host: > User-Agent: xxxx > Accept: */*
Sever_nameはどうなるかと言うと
Server_name : 192.168.1.100
"Hostを読んで格納したいけど
空白だからローカルIPを返しとけ"
という挙動になるらしい
これがローカルIPが漏えいしてしまう理屈
Server_nameの設定
なので対策のひとつとしては
http1.0でのリクエストが来ようが
Server_nameをあらかじめ固定しておき
常に一定の値を返すこと
Apacheのconfigファイルで
変数を強制的に指定
SetEnv Server_name exsample.com または SetEnvif _ .* Server_name=exsample.com ※条件つき書式 と言ってもどんな条件でも Sever_nameをexsample.comにしろ というだけの意味
configファイルは
旧来のApacheだと
httpd.conf
というファイル名
Ubuntuに導入したApacheは
(Apache2?)
従来httpd.confでまとめられていた
configがばらけている様子
envvars
というファイルを編集するっぽい