お知らせ!! 「jpcmoh.myds.me」から「mohlog.com」へ変更しました
PR

リバースプロキシ カスタムヘッダーの設定

アイキャッチ カスタムヘッダー NASでブログ
記事内に広告が含まれています。
スポンサーリンク

はじめに

こちらの記事で、リバースプロキシ経由でWEBサーバーを立ち上げました。(実際は、Raspberry Piではなく、Ubuntu ServerをインストールしたPCですが、やり方は一緒です。)

ところが、WEBサーバーへのアクセス記録が、リバースプロキシとしたSynology NASのIPアドレスになっています。
たとえば、404エラーの記録。

404エラーNASアドレス

接続は、下の図のようになってますので、リバースプロキシとしたSynology NASのIPアドレス192.168.9.99が記録されています。

リバースプロキシで運用

これでは、IPアドレスでのアクセス制御や、WordPressプラグインWP Statisticsを使ったアクセス統計ができないので、対策します。

スポンサーリンク

対策

リバースプロキシ カスタムヘッダー

まずは、Synology NASのリバースプロキシのカスタムヘッダーを追加し、クライアントのIPアドレスをWEBサーバーに送るように設定します。

Synology NASのリバースプロキシ設定は、こちらを参照ください。

ヘッダー名:X-Forwarded-For、値:$proxy_add_x_forwarded_for

Apache2 mod_remoteip

次にWEBサーバー側で、Apache2のモジュール、mod_remoteip を有効にします。

コマンド:Apache2 mod_remoteip

sudo a2enmod remoteip

/etc/apache2/apache2.conf を編集します。

コマンド:/etc/apache2/apache2.conf 編集

sudo nano /etc/apache2/apache2.conf

おおよそ160行目あたりの<Directory />の前から編集。赤字を追加します。

/etc/apache2/apache2.conf (左端の数字は行番号)
160 RemoteIPHeader X-Forwarded-For #追加
161 RemoteIPTrustedProxy 192.168.9.99 #リバースプロキシのIPアドレス
162 <Directory />
163         Options FollowSymLinks
164         AllowOverride None
165         Require all denied
166 </Directory>
167
168 <Directory /usr/share>
169         AllowOverride None
170         Require ip 192.168.9.0/24 #192.168.9.*からのみアクセスできるようにする
171 #       Require all granted #先頭に#をつけてコメントアウト
172 </Directory>
173
174 <Directory /var/www/>
175         Options FollowSymLinks
176         AllowOverride All
177         Require all granted
178 </Directory>

161行目は、IPアドレスの偽装に影響されないための設定です。
170行目は、/usr/shareにあるサイトのアクセスを、ローカルIPアドレスに制限しています。
phpMyAdminはここにインストールされるため、設定を追加しています。
Apache2を再起動します。

コマンド:Apache2再起動

sudo systemctl restart apache2

スポンサーリンク

外部からアクセスして確認

WEBサーバーへアクセスします。今回は404エラーとして記録されるように、わざと存在しないページにアクセスしました。スマホで、Wi-FiをOFFにすれば、外部からのアクセスになります。

クライアントIPアドレスが正しく表示

リバースプロキシのIPアドレスではなく、クライアントのIPアドレスが記録されるようになりました。

スポンサーリンク

おわりに

この設定で、リバースプロキシを経由したWEBサーバーへのアクセスでも、クライアントのIPアドレスを認識できるようになりました。
また、/usr/shareへアクセス制限もかけ、phpMyAdminをインストールした場合でも、外部からアクセスできないようにできました。
ただ、クライアントIPアドレスは、簡単に偽装できるとのことで、心配なので、普段はphpMyAdminは機能しないようにしています。
くれぐれも、セキュリティにはお気をつけください。

コメント

タイトルとURLをコピーしました