前回の続きで、今回はApacheのproxyモジュールを使ってWindowsXPからの通信を制御します。
制御するUser-Agentの情報やネットワーク構成は前回と一緒です。
前回 WindowsXPからの通信をProxyサーバでブロック その1 (squid)
http://ameblo.jp/hackerbobchan/entry-11789417030.html
以下参考にしたサイトになります。
Apache モジュール mod_proxy
http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html
.htaccessによるURLの書き換え Rewrite(リライト)
http://hoshiya.biz/blog/2012/02/htaccessurl-rewrite.php
以下設定内容になります。
---
<IfModule mod_proxy.c>
ProxyRequests On
<Proxy *>
Order deny,allow
Deny from all
Allow from 192.168.
RewriteEngine On
RewriteCond %{SERVER_NAME} !192\.168\.0 [NC]
RewriteCond %{HTTP_USER_AGENT} MSIE\ 4\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} MSIE\ 5\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} MSIE\ 6\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} compatible [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Mozilla/3\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} windows\ NT\ 5 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} windows\ 9 [NC]
RewriteRule ^.*$ [F]
</Proxy>
ProxyVia Block
<IfModule mod_disk_cache.c>
CacheEnable disk /
CacheRoot "/var/cache/httpd"
</IfModule>
</IfModule>
LogLevel debug
RewriteLogLevel 9
RewriteLog /var/log/httpd/rewrite_log
---
今回は、{SERVER_NAME}で通信を制御する設定を入れています。
この設定を使うことで、社内向け通信のみ許可するなどの柔軟な設定が可能です。
上記の設定ですと、{SERVER_NAME}に"192.168.0"を含まなければ通信不可になりますので、
逆に"192.168.0"を含んでいると通信可能となります。
今回も通信時のデバッグログを取得しました。
■WindowsXPで通信した時のデバッグログ
通常のInternetアクセス
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (3) [perdir */] applying pattern '^.*$' to uri 'proxy:http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=msnhome'
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (4) [perdir */] RewriteCond: input='www.microsoft.com' pattern='!192\\.168\\.0' [NC] => matched
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (4) [perdir */] RewriteCond: input='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' pattern='MSIE\\ 4\\.0' [NC] => not-matched
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (4) [perdir */] RewriteCond: input='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' pattern='MSIE\\ 5\\.0' [NC] => not-matched
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (4) [perdir */] RewriteCond: input='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' pattern='MSIE\\ 6\\.0' [NC] => not-matched
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (4) [perdir */] RewriteCond: input='Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)' pattern='compatible' [NC] => matched
192.168.0.4 - - [15/Mar/2014:21:59:15 +0900] [www.microsoft.com/sid#1939fa0][rid#1dcb358/initial] (2) [perdir */] rewrite 'proxy:http://www.microsoft.com/isapi/redir.dll?prd=ie&pver=6&ar=msnhome' -> '[F]'
- まず、SERVER_NAMEに192.168.0が含まれていない(条件にマッチしている)ので、次の処理に進みます。次にHTTP_USER_AGENTにcompatibleが含まれている(条件にマッチしている)ので、通信を拒否しています。
http://192.168.0.10/index.htmlへアクセス
192.168.0.4 - - [15/Mar/2014:22:06:35 +0900] [192.168.0.10/sid#1939fa0][rid#1dd1370/initial] (3) [perdir */] applying pattern '^.*$' to uri 'proxy:http://192.168.0.10/index.html'
192.168.0.4 - - [15/Mar/2014:22:06:35 +0900] [192.168.0.10/sid#1939fa0][rid#1dd1370/initial] (4) [perdir */] RewriteCond: input='192.168.0.10' pattern='!192\\.168\\.0' [NC] => not-matched
192.168.0.4 - - [15/Mar/2014:22:06:35 +0900] [192.168.0.10/sid#1939fa0][rid#1dd1370/initial] (1) [perdir */] pass through proxy:http://192.168.0.10/index.html
- SERVER_NAMEに192.168.0を含んでいる(条件にマッチしていない)ので、通信が許可されています。
■Windows7で通信した時のデバッグログ
通常のInternetアクセス
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (3) [perdir */] applying pattern '^.*$' to uri 'proxy:http://lenovo.msn.com/'
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='lenovo.msn.com' pattern='!192\\.168\\.0' [NC] => matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='MSIE\\ 4\\.0' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='MSIE\\ 5\\.0' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='MSIE\\ 6\\.0' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='compatible' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='Mozilla/3\\.0' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='windows\\ NT\\ 5' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (4) [perdir */] RewriteCond: input='Mozilla/5.0 (Windows NT 6.1; Trident/7.0; MALC; rv:11.0) like Gecko' pattern='windows\\ 9' [NC] => not-matched
192.168.0.3 - - [15/Mar/2014:22:09:35 +0900] [lenovo.msn.com/sid#1939fa0][rid#1dcd360/initial] (1) [perdir */] pass through proxy:http://lenovo.msn.com/
- 全ての条件にマッチしませんでしたので、Internetアクセスが可能です。
Apacheのproxyモジュールを利用しても、WindowsXPの通信を制御することができました。
WindowsXPのサポートが終了する前に、現在のWindowsXPユーザがOSバージョンアップなどの
対策をすることで、サポート終了後にセキュリティインシデントが起こらないことを願っています。