Ubuntu 16.04 LTS で Squid のベーシック認証を設定する方法

Squid のベーシック認証を Ubuntu 16.04 LTS で

検索すると出てくる記事が CentOS のものや、バージョンが古いものが多いのでここでまとめてみます。SquidのバージョンはVersion 3.5.12です。

大まかな流れ

以下の4つの点を処理していきます。

  1. ベーシック認証用の ユーザ名 と パスワード を生成する
  2. squid.confにベーシック認証の設定項目を書く
  3. squid.confにベーシック認証を適用するための設定項目を書く
  4. 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

*1:htpasswd は単独でも入れられます

*2:ユーザ名とパスワードのファイルの場所

Powered by はてなブログ