Squid のベーシック認証を Ubuntu 16.04 LTS で
検索すると出てくる記事が CentOS のものや、バージョンが古いものが多いのでここでまとめてみます。Squid
のバージョンはVersion 3.5.12
です。
大まかな流れ
以下の4つの点を処理していきます。
- ベーシック認証用の ユーザ名 と パスワード を生成する
squid.conf
にベーシック認証の設定項目を書くsquid.conf
にベーシック認証を適用するための設定項目を書くSquid
を再起動する
1. ベーシック認証用のユーザ名とパスワードを生成する
まずは認証用のユーザ名とパスワードを生成し、そのファイルを任意の場所に置きます。
1-1. htpasswd が必要
htpasswd
コマンドが必要なので、入っていない場合はapache2-utils
を入れます*1。
$ sudo apt-get install apache2-utils
1-2. ユーザ名とパスワードを生成し、そのファイルを任意の場所に置く
以下のコマンドを実行しましょう。コマンドの引数の意味は、/etc/squid/.htpasswd
がファイルを置く場所を示し、username
がユーザ名になります。コマンドを実行するとパスワードの入力(生成)が求められます。
$ sudo htpasswd -c /etc/squid/.htpasswd username New password: Re-type new password: Adding password for user username
これで完了です。
2. squid.conf
にベーシック認証の設定項目を書く
/etc/squid/squid.conf
を編集してベーシック認証の設定項目を以下のように追記しましょう。ファイルの最後で構いません。
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/.htpasswd auth_param basic children 5 auth_param basic realm Basic Authentication auth_param basic credentialsttl 5 hours
上記のままで問題ありませんが、念のため一つずつ補足します。
2-1. auth_param basic program
ベーシック認証用に用いるプログラムです。引数の/etc/squid/.htpasswd
の部分だけを必要に応じて*2変更すればいいでしょう。
2-2. auth_param basic children
認証用のプロセス数です。
2-3. auth_param basic realm
認証時に出てくるメッセージです。日本語は使えません。
2-4. auth_param basic credentialsttl
再認証が必要になる間隔です。
3. squid.conf
にベーシック認証を適用するための設定項目を書く
続いて/etc/squid/squid.conf
にベーシック認証を適用するための設定を以下のように書きます。ただしこれは説明のために簡略化した設定ですので、必要に応じてアクセス制限を加えて下さい。
acl basic_auth proxy_auth REQUIRED http_access allow basic_auth http_access all deny
念のため補足です。
3-1. acl basic_auth proxy_auth REQUIRED
basic_auth
の部分は任意に命名したこの設定行の名前です。proxy_auth REQUIRED
とすることで認証を求める設定行になっています。この行の記述だけでは動作に影響は与えません。
3-2. http_access allow basic_auth
basic_auth
という名前で設定した設定行を適用させます。basic_auth
の設定内容に適したアクセスを許可しています。
3-3. http_access all deny
この行の上の行までに許可された(allow
と設定された)アクセス以外はアクセスを拒否します。http_access
は上から順番に適用されていくことに留意します。
4. Squid
を再起動する
あとはSquid
を再起動すれば設定完了です。うまく動かない場合は設定内容を確認してみて下さい。
$ sudo service squid restart