cafedripのブログ

IPネットワーク・IP電話のメモ

Ubuntu16.04にSquidをインストールする

Proxyサーバの動作確認のため、Ubuntu16.04にSquidをインストールしてみました。

Squidのインストール手順

以下のとおりです。

$ sudo apt install squid

$ squid -v
Squid Cache: Version 3.5.12
Service Name: squid
Ubuntu linux
〜以下省略〜

Squidの設定

「/etc/squid/squid.conf」がSquidの設定ファイルです。設定変更箇所は以下のとおりです。 (squid.conf.defaultが変更前、squid.confが変更後のファイルです)

$ diff squid.conf.default squid.conf
973c973
< #acl localnet src 192.168.0.0/16   # RFC1918 possible internal network
---
> acl localnet src 192.168.0.0/16    # RFC1918 possible internal network
1186c1186
< #http_access allow localnet
---
> http_access allow localnet
1599c1599
< http_port 3128
---
> http_port 8080
3144a3145
> maximum_object_size_in_memory 2 MB
3252a3254
> maximum_object_size 16 MB
3410a3413
> cache_dir ufs /var/spool/squid 1000 16 256
3819a3823
> logformat squid %tl %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
5156a5161,5175
> request_header_access Authorization allow all
> request_header_access Cache-Control allow all
> request_header_access Proxy-Authorization allow all
> request_header_access Content-Length allow all
> request_header_access Content-Type allow all
> request_header_access Date allow all
> request_header_access Host allow all
> request_header_access If-Modified-Since allow all
> request_header_access Pragma allow all
> request_header_access Accept allow all
> request_header_access Accept-Charset allow all
> request_header_access Accept-Encoding allow all
> request_header_access Accept-Language allow all
> request_header_access Connection allow all
> request_header_access All deny all
5507a5527
> visible_hostname unknown
7621a7642
> forwarded_for off

ざっくりと説明すると、以下の設定で、192.168.0.0/16のNWアドレスからProxyサーバへの接続を許可しています。

acl localnet src 192.168.0.0/16
http_access allow localnet

以下でプロキシサーバのポート番号を「8080」に指定しています。

http_port 8080

ここまでの設定で、プロキシサーバとして動きます。

以下は、パフォーマンスに関する設定です。

maximum_object_size_in_memory 2 MB
maximum_object_size 16 MB
cache_dir ufs /var/spool/squid 1000 16 256

ここはデフォルト設定より大きめに設定してみましたが、どの程度効果があるかはよくわかりません。

以下は、セキュリティ関連の設定です。

> request_header_access Authorization allow all
> request_header_access Cache-Control allow all
> request_header_access Proxy-Authorization allow all
> request_header_access Content-Length allow all
> request_header_access Content-Type allow all
> request_header_access Date allow all
> request_header_access Host allow all
> request_header_access If-Modified-Since allow all
> request_header_access Pragma allow all
> request_header_access Accept allow all
> request_header_access Accept-Charset allow all
> request_header_access Accept-Encoding allow all
> request_header_access Accept-Language allow all
> request_header_access Connection allow all
> request_header_access All deny all
5507a5527
> visible_hostname unknown
7621a7642
> forwarded_for off

「request_header_access」は、httpヘッダの記載に関する設定です。squid.conf内のコメントを参照して、一番厳しい設定を投入しています。 「visible_hostname unknown」は、プロキシサーバのホスト名を隠蔽するための設定です。 「forwarded_for」は、送信元のIPアドレスを隠蔽するための設定です。

Squidのログ

ログ確認方法は以下のとおりです。

sudo cat /var/log/squid/access.log 
sudo cat /var/log/squid/cache.log 

aptからインストールした場合、logrotateが有効になっています。以下で設定を確認できます。

less /etc/logrotate.d/squid

ufwのインストール

以上でSquidの設定は完了ですが、TCPポート8080を開放していない場合はProxyサーバに接続できません。 ポートを開放するためにufwをインsぬトールします。

sudo apt install ufw

ufwの設定

ufwの設定は以下のとおりです。

sudo ufw enable
sudo ufw default deny
sudo ufw allow 8080/tcp

設定確認コマンドは以下のとおりです。

$ sudo ufw status
状態: アクティブ

To                         Action      From
--                         ------      ----
8080/tcp                   ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
8080/tcp (v6)              ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)