FAR EAST GATE

BLACK/WHITE SECURITY

HTTP プロキシ squid の導入

古典的な方法になりますが HTTP プロキシサーバを利用することで、Web ブラウジングにおける匿名性を少しだけ高めることができます。

Linux 系 OS においては squid という HTTP プロキシサーバが広く用いられます。以下は CentOS 7.4 への squid 導入例です。

squid インストール

# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

# yum -y install squid
# rpm -q squid
squid-3.5.20-10.el7.x86_64


諸事情によりソースコードからインストールする場合は以下手順を実施します。libdb への参照が確実に行われるように configure 引数に LDFLAGS を付けるのが安全です。

# wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.27.tar.gz
# tar xzvf squid-3.5.27.tar.gz
# cd squid-3.5.27
# ./configure --prefix=/usr --includedir=/usr/include --datadir=/usr/share \
  --bindir=/usr/sbin --libexecdir=/usr/lib/squid --localstatedir=/var \
  --sysconfdir=/etc/squid LDFLAGS="-ldb"
# make -j 4
# make install

IPアドレス制限の解放

/etc/squid/squid.conf

 http_access allow localnet
 http_access allow localhost
+http_access allow all

localhost へのアクセス禁止

/etc/squid/squid.conf

-#http_access deny to_localhost
+http_access deny to_localhost

HTTPSポートの追加許可

https://xxxxxx:1234/ 等へのアクセスを許可する場合

/etc/squid/squid.conf

-acl SSL_ports port 443
+acl SSL_ports port 443 1234
....
-acl Safe_ports port 443        # https
+acl Safe_ports port 443 1234   # https

各種パラメータの隠蔽

/etc/squid/squid.conf

(末尾)
+visible_hostname unkown
+forwarded_for off
+request_header_access X-FORWARDED-FOR deny all
+request_header_access Via deny all
+request_header_access Cache-Control deny all

ログ出力を行わない

/etc/squid/squid.conf

(末尾)
+access_log none
+cache_store_log none
+cache_log /dev/null
+logfile_rotate 0

IPv6 による問題が発生する場合

/etc/squid/squid.conf

(末尾)
+dns_v4_first on

BASIC 認証

# yum -y install httpd-tools
# htpasswd -c /etc/squid/passwd {ユーザ名}
New password: (パスワード入力)
Re-type new password: (パスワード再入力)


/etc/squid/squid.conf

 #
 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
 #
+auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
+acl password proxy_auth REQUIRED
+http_access allow password

ポート変更

/etc/squid/squid.conf

-http_port 3128
+http_port 12345

常時起動

# chkconfig squid on
# service squid start

プロキシ判定されないための注意点

各種パラメータの隠蔽によりプロトコル上のプロキシ情報をある程度隠すことができますが、疑わしき点をさらに除外したいのならば HTTP プロキシを設置するサーバでは 80 (HTTP) や 443 (HTTPS) 等の「明らかにサーバ用途であるだろう」ポートは閉じておくのが良いです。

いくら HTTP リクエストヘッダ上のプロキシ情報を隠したとしても該当 IP への 80/443 ポートアクセスができてしまっては、そのノードがサーバインスタンスであること(可能性)は簡単に想像されてしまいます。実際に、そのようなポートが解放されているノードからの HTTP リクエストを deny するようなサイトはいくつかあります。

80/443 以外にも 3306 (MySQL) 等も同様です。

できる限りプロキシ経由であることを隠したいのならば、解放するポートは最低限に絞るのが得策です。

認証制限についての注意点

設置した HTTP プロキシを自分だけしか利用できないように認証をかけることは健全な運用としては理に適っていますが、逆にそのプロキシを使っている限りは常にそのプロキシの固定 IP からのアクセスとなるため、匿名性が下がる可能性もあります。

認証制限をかけずに不特定多数のユーザからのアクセスを許容することにより、自分以外のユーザアクセスを混ぜることで自分自身の匿名性を上げる選択もあるということを覚えておいてください。ただし他人による不正行為があった場合、プロキシ管理者であるあなたには説明責任や管理責任が問われることも同時に意識する必要があります。

前者後者どちらの選択を採り得るかはトレードオフの関係にありますので、それぞれの特性を理解した上で運用を行ってください。